Развертывание модели в службе "Экземпляры контейнеров Azure" с помощью CLI (версия 1)

Внимание

В этой статье приводятся сведения об использовании CLI и пакета SDK версии 1 для развертывания модели. Рекомендуемый подход для версии 2 см. в статье Развертывание и оценка модели машинного обучения с помощью сетевой конечной точки.

Узнайте, как использовать "Машинное обучение Azure" для развертывания модели в качестве веб-службы в службе "Экземпляры контейнеров Azure" (ACI). Используйте Экземпляры контейнеров Azure в следующих случаях:

  • вы предпочитаете не управлять собственным кластером Kubernetes;
  • Ок при наличии только одной реплики службы, что может повлиять на время простоя.

Дополнительные сведения о квотах и доступности по регионам для ACI см. в статье Квоты и доступность по регионам для службы "Экземпляры контейнеров Azure".

Внимание

Перед развертыванием в веб-службе настоятельно рекомендуется выполнить локальную отладку, дополнительные сведения см. в статье "Отладка локально"

Вы также можете ознакомиться со статьей о Машинном обучении Azure: Развертывание в локальный Notebook

Необходимые компоненты

Ограничения

Если рабочая область Машинное обучение Azure настроена с частной конечной точкой, развертывание в Экземпляры контейнеров Azure в виртуальной сети не поддерживается. Вместо этого рекомендуется использовать управляемую сетевую конечную точку с сетевой изоляцией.

Развертывание в 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" никаких изменений не требуют. Мы не даем никаких гарантий в отношении имен создаваемых базовых ресурсов.

Следующие шаги