Развертывание модели в службе "Экземпляры контейнеров Azure" с помощью CLI (версия 1)
Важно!
В этой статье приводятся сведения об использовании CLI и пакета SDK версии 1 для развертывания модели. Рекомендуемый подход для версии 2 см. в статье Развертывание и оценка модели машинного обучения с помощью сетевой конечной точки.
Узнайте, как использовать "Машинное обучение Azure" для развертывания модели в качестве веб-службы в службе "Экземпляры контейнеров Azure" (ACI). Используйте Экземпляры контейнеров Azure в следующих случаях:
- вы предпочитаете не управлять собственным кластером Kubernetes;
- вам достаточно только одной реплики службы, что может негативно влиять на время бесперебойной работы.
Дополнительные сведения о квотах и доступности по регионам для ACI см. в статье Квоты и доступность по регионам для службы "Экземпляры контейнеров Azure".
Важно!
Перед развертыванием в веб-службе настоятельно рекомендуется выполнить отладку локально. Дополнительные сведения см. в статье Локальная отладка.
Вы также можете ознакомиться со статьей о Машинном обучении Azure: Развертывание в локальный Notebook
Предварительные требования
Рабочая область машинного обучения Azure. Дополнительные сведения см. в разделе Создание рабочей области службы "Машинное обучение Azure".
Модель машинного обучения, зарегистрированная в вашей рабочей области. Если у вас нет зарегистрированной модели, см. раздел Как и где развертываются модели.
Расширение Azure CLI (v1) для службы "Машинное обучение Azure", пакет SDK службы "Машинное обучение Azure" для Python или расширение Visual Studio Code для службы "Машинное обучение Azure".
Важно!
Для использования некоторых команд Azure CLI, приведенных в этой статье, используйте расширение
azure-cli-ml
(версия 1) для Машинного обучения Azure. Поддержка расширения версии 1 будет прекращена 30 сентября 2025 г. Вы можете установить и использовать расширение версии 1 до этой даты.Рекомендуется перейти на расширение
ml
(версия 2) до 30 сентября 2025 г. Дополнительные сведения о расширении версии 2 см. на странице расширения CLI для Azure ML и пакета SDK для Python версии 2.В фрагментах кода Python в этой статье предполагается, что установлены следующие переменные:
ws
— присвоено вашей рабочей области;model
— присвоено вашей зарегистрированной модели;inference_config
— присвоено конфигурации вывода для модели.
Дополнительные сведения об установке этих переменных см. в разделе Как и где развертываются модели.
В фрагментах кода CLI в этой статье предполагается, что вы создали документ
inferenceconfig.json
. Дополнительные сведения о создании этого документа см. в разделе Как и где развертываются модели.
Ограничения
Если рабочая область Машинного обучения Azure настроена с помощью частной конечной точки, развертывание в Экземпляры контейнеров Azure в виртуальной сети не поддерживается. Вместо этого рекомендуется использовать управляемую сетевую конечную точку с сетевой изоляцией.
Развертывание в ACI
Чтобы развернуть модель в службе "Экземпляры контейнеров Azure", создайте конфигурацию развертывания, которая описывает требуемые вычислительные ресурсы. Например, количество ядер и объем памяти. Вам также потребуется конфигурация вывода, описывающая среду, необходимую для размещения модели и веб-службы. Дополнительные сведения о создании конфигурации вывода см. в разделе Как и где развертываются модели.
Примечание
- ACI подходит только для небольших моделей, размер которых меньше 1 ГБ.
- Мы рекомендуем использовать AKS с одним узлом для разработки и тестирования моделей большего размера.
- Число развертываемых моделей должно быть не более 1000 на развертывание (для каждого контейнера).
Использование пакета SDK
ОБЛАСТЬ ПРИЕНЕНИЯ:Пакет SDK для Python для ML Azure версии 1
from azureml.core.webservice import AciWebservice, Webservice
from azureml.core.model import Model
deployment_config = AciWebservice.deploy_configuration(cpu_cores = 1, memory_gb = 1)
service = Model.deploy(ws, "aciservice", [model], inference_config, deployment_config)
service.wait_for_deployment(show_output = True)
print(service.state)
Дополнительные сведения о классах, методах и параметрах, используемых в этом примере, см. в следующих справочных документах:
Использование Azure CLI
ОБЛАСТЬ ПРИМЕНЕНИЯ: Расширение ML для Azure CLIверсия 1
Чтобы выполнить развертывание с помощью интерфейса командной строки, используйте следующую команду. Замените mymodel:1
именем и версией зарегистрированной модели. Замените myservice
именем для предоставления этой службы:
az ml model deploy -n myservice -m mymodel:1 --ic inferenceconfig.json --dc deploymentconfig.json
Записи в документе deploymentconfig.json
соответствуют параметрам для AciWebservice.deploy_configuration. В следующей таблице описано сопоставление сущностей в документе JSON и параметров метода:
Сущность JSON | Параметр метода | Описание: |
---|---|---|
computeType |
Н/Д | Целевой объект вычисления. Для ACI нужно задать значение ACI . |
containerResourceRequirements |
Н/Д | Контейнер для сущностей ЦП и памяти. |
cpu |
cpu_cores |
Количество ядер ЦП для выделения. Значение по умолчанию — 0.1 . |
memoryInGB |
memory_gb |
Объем памяти (в ГБ), выделяемой для этой веб-службы. Значение по умолчанию — 0.5 . |
location |
location |
Регион Azure для развертывания этой веб-службы. Если не указать, будет использоваться расположение рабочей области. Дополнительные сведения о доступных регионах можно просмотреть здесь: регионы ACI |
authEnabled |
auth_enabled |
Позволяет включить аутентификацию для этой веб-службы. Значение по умолчанию — False. |
sslEnabled |
ssl_enabled |
Позволяет включить SSL для этой веб-службы. Значение по умолчанию — False. |
appInsightsEnabled |
enable_app_insights |
Позволяет включить AppInsights для этой веб-службы. Значение по умолчанию — False. |
sslCertificate |
ssl_cert_pem_file |
Файл сертификата, требуемый при включении SSL. |
sslKey |
ssl_key_pem_file |
Файл ключа, требуемый при включении SSL. |
cname |
ssl_cname |
Запись CNAME, требуемая при включении SSL. |
dnsNameLabel |
dns_name_label |
Метка DNS-имени для конечной точки оценки. Если не указать, для конечной точки оценки будет создана уникальная метка DNS-имени. |
Следующий код JSON — это пример конфигурации развертывания для использования с CLI:
{
"computeType": "aci",
"containerResourceRequirements":
{
"cpu": 0.5,
"memoryInGB": 1.0
},
"authEnabled": true,
"sslEnabled": false,
"appInsightsEnabled": false
}
Дополнительные сведения см. в справочнике az ml model deploy.
Использование VS Code
См. статью об управлении ресурсами в VS Code.
Важно!
Создавать контейнер ACI для тестирования заранее не нужно. Контейнеры ACI создаются по мере необходимости.
Важно!
Мы добавляем идентификатор хэшированной рабочей области во все создаваемые базовые ресурсы ACI и все имена ACI из одной рабочей области будут иметь один и тот же суффикс. Имя службы "Машинное обучение Azure" будет иметь то же самое имя, которое было указано клиентом, а пользовательские интерфейсы SDK службы "Машинное обучение Azure" никаких изменений не требуют. Мы не даем никаких гарантий в отношении имен создаваемых базовых ресурсов.
Дальнейшие действия
- Как развернуть модель с помощью пользовательского образа Docker
- Устранение неполадок при развертывании
- Обновление веб-службы
- Использование TLS для защиты веб-службы с помощью Машинного обучения Azure.
- Использование модели Машинного обучения Azure, развернутой в качестве веб-службы
- Мониторинг моделей машинного обучения в Azure с помощью Application Insights
- Сбор данных для моделей в рабочей среде