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


Развертывание пакетов моделей в сетевых конечных точках (предварительная версия)

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

Внимание

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

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

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

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

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

Сведения об этом примере

В этом примере вы упаковите модель пользовательского типа и развернете ее в интернет-конечную точку для вывода через Интернет.

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

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

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

Подключение к рабочей области

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

az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>

Упаковка модели

Пакеты моделей можно создавать явным образом, чтобы управлять выполнением операции упаковки. Пакеты моделей можно создать, указав следующее:

  • Модель для пакета: каждый пакет модели может содержать только одну модель. Машинное обучение Azure не поддерживает упаковку нескольких моделей в одном пакете модели.
  • Базовая среда: среды используются для указания базового образа и в пакетах Python, необходимых вашей модели. Для моделей MLflow Машинное обучение Azure автоматически создает базовую среду. Для пользовательских моделей его необходимо указать.
  • Технология обслуживания: стек вывода, используемый для запуска модели.

Совет

Если модель является MLflow, вам не нужно создавать пакет модели вручную. Мы можем автоматически упаковыть перед развертыванием. См. статью "Развертывание моделей MLflow в сетевых конечных точках".

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

    MODEL_NAME='sklearn-regression'
    MODEL_PATH='model'
    az ml model create --name $MODEL_NAME --path $MODEL_PATH --type custom_model
    
  2. Для выполнения нашей модели требуются следующие пакеты, и у нас есть указанные в файле conda:

    conda.yaml

    name: model-env
    channels:
      - conda-forge
    dependencies:
      - python=3.9
      - numpy=1.23.5
      - pip=23.0.1
      - scikit-learn=1.2.2
      - scipy=1.10.1
      - xgboost==1.3.3
    

    Примечание.

    Обратите внимание, как указаны только требования модели в conda YAML. Любой пакет, необходимый для сервера вывода, будет включен операцией пакета.

    Совет

    Если для модели требуются пакеты, размещенные в частных веб-каналах, можно настроить пакет для их включения. Чтение пакета модели с зависимостями в частных веб-каналах Python.

  3. Создайте базовую среду, содержащую требования к модели и базовый образ. В базовой среде указываются только зависимости, необходимые вашей модели. Для моделей MLflow базовая среда необязательна, в этом случае Машинное обучение Azure автоматически создает ее для вас.

    Создайте определение базовой среды:

    sklearn-regression-env.yml

    $schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
    name: sklearn-regression-env
    image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu22.04
    conda_file: conda.yaml
    description: An environment for models built with XGBoost and Scikit-learn.
    

    Затем создайте среду следующим образом:

    az ml environment create -f environment/sklearn-regression-env.yml
    
  4. Создайте спецификацию пакета:

    package-moe.yml

    $schema: http://azureml/sdk-2-0/ModelVersionPackage.json
    base_environment_source:
        type: environment_asset
        resource_id: azureml:sklearn-regression-env:1
    target_environment: sklearn-regression-online-pkg
    inferencing_server: 
        type: azureml_online
        code_configuration:
          code: src
          scoring_script: score.py
    
  5. Запустите операцию пакета модели:

    az ml model package -n $MODEL_NAME -v $MODEL_VERSION --file package-moe.yml
    
  6. Результатом операции пакета является среда.

Развертывание пакета модели

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

  1. Выберите имя конечной точки, чтобы разместить развертывание пакета и создать его:

    ENDPOINT_NAME="sklearn-regression-online"
    
    az ml online-endpoint create -n $ENDPOINT_NAME
    
  2. Создайте развертывание с помощью пакета. Обратите внимание, как environment настроен созданный пакет.

    deployment.yml

    $schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
    name: with-package
    endpoint_name: hello-packages
    environment: azureml:sklearn-regression-online-pkg@latest
    instance_type: Standard_DS3_v2
    instance_count: 1
    

    Совет

    Обратите внимание, что в этом примере не указан сценарий модели или оценки; Они все входят в состав пакета.

  3. Запустите развертывание:

    az ml online-deployment create -f deployment.yml
    
  4. На этом этапе развертывание готово к использованию. Вы можете проверить, как он работает, создав пример файла запроса:

    sample-request.json

    {
        "data": [
            [1,2,3,4,5,6,7,8,9,10], 
            [10,9,8,7,6,5,4,3,2,1]
        ]
    }
    
  5. Отправка запроса в конечную точку

    az ml online-endpoint invoke --name $ENDPOINT_NAME --deployment with-package -r sample-request.json
    

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