Поделиться через


Упаковка и развертывание моделей вне Машинное обучение Azure (предварительная версия)

Модели можно развертывать вне Машинное обучение Azure для онлайн-обслуживания, создавая пакеты моделей (предварительная версия). Машинное обучение Azure позволяет создать пакет модели, который собирает все зависимости, необходимые для развертывания модели машинного обучения на служебной платформе. Пакет модели можно перемещать между рабочими областями и даже за пределами Машинное обучение Azure. Дополнительные сведения о пакетах моделей см. в статье "Пакеты модели" для развертывания (предварительная версия).

Внимание

Эта функция сейчас доступна в виде общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания. Ее не следует использовать для производственных рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены.

Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.

В этой статье вы узнаете, как упаковать модель и развернуть ее в службе приложение Azure.

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

Перед выполнением действий, описанных в этой статье, убедитесь, что выполнены следующие необходимые условия:

  • Подписка Azure. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись, прежде чем начинать работу. Попробуйте бесплатную или платную версию Машинного обучения Azure.

  • Рабочая область Машинного обучения Azure. Если у вас нет одного, выполните действия, описанные в статье "Управление рабочими областями ", чтобы создать ее.

    Примечание.

    Рабочие области с поддержкой приватного канала не поддерживают модели упаковки для развертывания за пределами Машинное обучение Azure.

  • Управление доступом на основе ролей Azure (Azure RBAC) используется для предоставления доступа к операциям в Машинном обучении Azure. Чтобы выполнить действия, описанные в этой статье, учетная запись пользователя должна быть назначена роль владельца или участника для рабочей области Машинное обучение Azure или настраиваемой роли. Дополнительные сведения см. в статье Управление доступом к рабочей области Машинного обучения Azure.

Подготовка системы

Выполните следующие действия, чтобы подготовить систему.

  1. Пример в этой статье основан на примерах кода, содержащихся в репозитории azureml-examples . Чтобы выполнить команды локально без необходимости копирования и вставки YAML и других файлов, сначала клонируйте репозиторий, а затем измените каталоги в папку:

    git clone https://github.com/Azure/azureml-examples --depth 1
    cd azureml-examples/cli
    

    В этой статье используется пример в конечных точках папки /online/deploy-with-packages/mlflow-model.

  2. Подключитесь к рабочей области Машинное обучение Azure, где вы будете выполнять свою работу.

    az account set --subscription <subscription>
    az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
    
  3. Пакеты требуют регистрации модели в рабочей области или в реестре Машинное обучение Azure. В этом примере в репозитории есть локальная копия модели, поэтому необходимо опубликовать модель только в реестре в рабочей области. Этот шаг можно пропустить, если модель, которую вы пытаетесь развернуть, уже зарегистрирована.

    MODEL_NAME='heart-classifier-mlflow'
    MODEL_PATH='model'
    az ml model create --name $MODEL_NAME --path $MODEL_PATH --type mlflow_model
    

Развертывание пакета модели в службе приложение Azure

В этом разделе описано, как упаковать ранее зарегистрированную модель MLflow и развернуть ее в службе приложение Azure.

  1. Для развертывания модели за пределами Машинное обучение Azure требуется создать спецификацию пакета. Чтобы создать пакет, который полностью отключен от Машинное обучение Azure, укажите copy режим в конфигурации модели. Режим copy сообщает пакету, чтобы скопировать артефакты внутри пакета. В следующем коде показано, как указать режим копирования для конфигурации модели:

    Создайте спецификацию YAML пакета:

    package-external.yml

    $schema: http://azureml/sdk-2-0/ModelVersionPackage.json
    target_environment: heart-classifier-mlflow-pkg
    inferencing_server: 
        type: azureml_online
    model_configuration:
        mode: copy
    

    Совет

    При указании конфигурации модели, используемой copy для свойства режима, вы гарантируете, что все артефакты модели копируются внутри созданного образа Docker, а не скачиваются из реестра моделей Машинное обучение Azure, что позволяет обеспечить истинную переносимость за пределами Машинное обучение Azure. Полная спецификация всех параметров при создании пакетов см. в статье "Создание спецификации пакета".

  2. Запустите операцию пакета.

    az ml model package --name $MODEL_NAME --version $MODEL_VERSION --file package-external.yml
    
  3. Результатом операции пакета является среда в Машинное обучение Azure. Преимуществом этой среды является то, что каждая среда имеет соответствующий образ Docker, который можно использовать во внешнем развертывании. Изображения размещаются в Реестр контейнеров Azure. Ниже показано, как получить имя созданного образа:

    1. Перейдите в Студию машинного обучения Azure.

    2. Выберите раздел "Среды".

    3. Выберите вкладку Настраиваемые среды.

    4. Найдите среду с именем heart-classifier-mlflow-package, которая является именем только что созданного пакета.

    5. Скопируйте значение, которое находится в поле реестра контейнеров Azure.

    Снимок экрана: раздел, в котором отображается имя образа реестра контейнеров Azure в Студия машинного обучения Azure.

  4. Теперь разверните этот пакет в Служба приложений.

    1. Перейдите к портал Azure и создайте новый ресурс Служба приложений.

    2. В мастере создания выберите подписку и группу ресурсов, которую вы используете.

    3. В разделе сведений об экземпляре присвойте приложению имя.

    4. Для публикации выберите контейнер Docker.

    5. Для операционной системы выберите Linux.

      Снимок экрана: настройка службы приложений для развертывания созданного образа контейнера Docker.

    6. Настройте остальную часть страницы при необходимости и нажмите кнопку "Далее".

    7. Перейдите на вкладку Docker .

    8. В разделе "Параметры" выберите один контейнер.

    9. Для источника изображения выберите Реестр контейнеров Azure.

    10. Настройте параметры реестра контейнеров Azure следующим образом:

      1. Для реестра выберите Реестр контейнеров Azure, связанные с рабочей областью Машинное обучение Azure.

      2. Для изображения выберите изображение, которое вы нашли на шаге 3(e) этого руководства.

      3. Для тега выберите последнюю версию.

      Снимок экрана: раздел Docker мастера, где указан образ Docker, связанный с пакетом.

    11. Настройте остальную часть мастера по мере необходимости.

    12. Нажмите кнопку создания. Модель теперь развертывается в созданном Служба приложений.

    13. Способ вызова и получения прогнозов зависит от используемого сервера вывода. В этом примере использовался сервер вывода Машинное обучение Azure, который создает прогнозы в маршруте/score. Дополнительные сведения о входных форматах и функциях см. в сведениях о пакете azureml-inference-server-http.

    14. Подготовьте полезные данные запроса. Формат модели MLflow, развернутой с Машинное обучение Azure сервером вывода, выглядит следующим образом:

      sample-request.json

      {
          "input_data": {
              "columns": [
                  "age", "sex", "cp", "trestbps", "chol", "fbs", "restecg", "thalach", "exang", "oldpeak", "slope", "ca", "thal"
              ],
              "index": [1],
              "data": [
                  [1, 1, 4, 145, 233, 1, 2, 150, 0, 2.3, 3, 0, 2]
              ]
          }
      }
      
    15. Проверьте развертывание модели, чтобы узнать, работает ли она.

      cat -A sample-request.json | curl http://heart-classifier-mlflow-pkg.azurewebsites.net/score \
          --request POST \
          --header 'Content-Type: application/json' \
          --data-binary @-
      

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