Развертывание модели в службе "Экземпляры контейнеров 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 в виртуальной сети не поддерживается. Вместо этого для сетевой изоляции рекомендуется использовать управляемые сетевые конечные точки.
- Чтобы обеспечить эффективную поддержку, необходимо предоставить необходимые журналы для контейнеров ACI. Без этих журналов техническая поддержка не может быть гарантирована. Рекомендуется использовать средства log analytics, указав
enable_app_insights=True
в конфигурации развертывания для эффективного управления журналами контейнеров ACI и анализа их.
Развертывание в ACI
Чтобы развернуть модель в службе "Экземпляры контейнеров Azure", создайте конфигурацию развертывания, которая описывает требуемые вычислительные ресурсы. Например, количество ядер и объем памяти. Вам также потребуется конфигурация вывода, описывающая среду, необходимую для размещения модели и веб-службы. Дополнительные сведения о создании конфигурации вывода см. в разделе Как и где развертываются модели.
Примечание.
- ACI подходит только для небольших моделей, размер которых меньше 1 ГБ.
- Мы рекомендуем использовать AKS с одним узлом для разработки и тестирования моделей большего размера.
- Число развертываемых моделей должно быть не более 1000 на развертывание (для каждого контейнера).
Использование пакета SDK
ОБЛАСТЬ ПРИМЕНЕНИЯ: Пакет SDK для Python версии 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
ОБЛАСТЬ ПРИМЕНЕНИЯ: расширение машинного обучения 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 | Параметр метода | Description |
---|---|---|
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 |
Следует ли включить TLS для этой веб-службы. Значение по умолчанию — False. |
appInsightsEnabled |
enable_app_insights |
Позволяет включить AppInsights для этой веб-службы. Значение по умолчанию — False. |
sslCertificate |
ssl_cert_pem_file |
Файл сертификата, необходимый для включения TLS |
sslKey |
ssl_key_pem_file |
Файл ключа, необходимый для включения TLS |
cname |
ssl_cname |
CNAME для включения TLS |
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
- Сбор данных для моделей в рабочей среде