Webservice.deploy_from_image завершается с ошибкой «AttributeError: у объекта 'str' нет атрибута 'creation_state'" - PullRequest
0 голосов
/ 30 ноября 2018

Я пытаюсь развернуть образ в веб-службе в экземпляре контейнера Azure с помощью нового пакета SDK службы ML.Сбой метода Webservice.deploy_from_image со следующими сообщениями:

> Traceback (most recent call last):   File
> "c:/Users/chrcam/git/amlIrisClassification/deploy_iris_to_aci.py",
> line 18, in <module>
>     workspace = ws)   File "C:\Users\chrcam\AppData\Local\Programs\Python\Python36\lib\site-packages\azureml\core\webservice\webservice.py",
> line 258, in deploy_from_image
>     return deployment_config._webservice_type._deploy(workspace, name, image, deployment_config)   File
> "C:\Users\chrcam\AppData\Local\Programs\Python\Python36\lib\site-packages\azureml\core\webservice\aci.py",
> line 121, in _deploy
>     deployment_config.validate_image(image)   File "C:\Users\chrcam\AppData\Local\Programs\Python\Python36\lib\site-packages\azureml\core\webservice\webservice.py",
> line 883, in validate_image
>     if image.creation_state != 'Succeeded': AttributeError: 'str' object has no attribute 'creation_state'

Я запустил пакет SDK 1.68 и только что обновил до 1.80 с тем же результатом.

Модель и изображение зарегистрированы в рабочей области my.

Код довольно прост.Любая обратная связь или направление будет полезно.

from azureml.core import Workspace
from azureml.core.webservice import Webservice
from azureml.core.webservice import AciWebservice

ws = Workspace.from_config()

image_name = 'irisimage'
service_name = 'aciiris'

aciconfig = AciWebservice.deploy_configuration(cpu_cores = 1, 
                                               memory_gb = 1, 
                                               tags = {"data": "iris", "type": "classification"},
                                               description = 'Iris Classification')

service = Webservice.deploy_from_image(deployment_config = aciconfig,
                                            image = image_name,
                                            name = service_name,
                                            workspace = ws)

service.wait_for_deployment(show_output = True)
print(service.state)

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Я вижу, что вы уже нашли ошибку в своем коде.Я просто хочу добавить кое-что.

Сообщение об ошибке фактически указывает на то, где находится ваша ошибка.Он пытается получить атрибут creation_state из объекта image, переданного из вызова Webservice.deploy_from_image().Однако в сообщении об ошибке говорится, что он не может получить атрибут creation_state от объекта str, который говорит вам, что вы не должны передавать str имя изображения, а скорее какой-либо другой объект.

Однако я могу согласиться с тем, что многие функции в SDK сложно понять на первый взгляд.У меня были свои подобные проблемы, но я начинаю действительно находить свой путь в документации SDK .И если вы посмотрите на документацию для функции Webservice.deploy_from_image(), вы увидите, что объект изображения должен быть передан, а не str.

0 голосов
/ 30 ноября 2018

Я понял это.Может быть, это поможет кому-то еще.Метод deploy_from_image требует объект Image, а не имя изображения в качестве параметра.Сообщение об ошибке вводило в заблуждение, и я подумал, что в SDK может быть ошибка.

Вот обновленный код:

from azureml.core import Workspace
from azureml.core import Image
from azureml.core.webservice import Webservice
from azureml.core.webservice import AciWebservice

ws = Workspace.from_config()

image_name = 'irisimage'
service_name = 'aciiris'

image = Image(name=image_name, workspace=ws)

aciconfig = AciWebservice.deploy_configuration(cpu_cores = 1, 
                                               memory_gb = 1, 
                                               tags = {"data": "iris", "type": "classification"},
                                               description = 'Iris Classification')

service = Webservice.deploy_from_image(deployment_config = aciconfig,
                                            image = image,
                                            name = service_name,
                                            workspace = ws)

service.wait_for_deployment(show_output = True)
print(service.state)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...