Развертывание пакетов моделей в сетевых конечных точках (предварительная версия)
Пакет модели — это возможность в Машинное обучение Azure, которая позволяет собирать все зависимости, необходимые для развертывания модели машинного обучения на служебной платформе. Создание пакетов перед развертыванием моделей обеспечивает надежное и надежное развертывание и более эффективный рабочий процесс MLOps. Пакеты можно перемещать между рабочими областями и даже за пределами Машинное обучение Azure. Дополнительные сведения о пакетах модели (предварительная версия)
Внимание
Эта функция сейчас доступна в виде общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания. Ее не следует использовать для производственных рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены.
Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.
В этой статье вы узнаете, как упаковать модель и развернуть ее в сетевой конечной точке в Машинное обучение Azure.
Необходимые компоненты
Перед выполнением действий, описанных в этой статье, убедитесь, что выполнены следующие необходимые условия:
Подписка Azure. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись, прежде чем начинать работу. Попробуйте бесплатную или платную версию Машинного обучения Azure.
Рабочая область Машинного обучения Azure. Если у вас нет одного, выполните действия, описанные в статье "Управление рабочими областями", чтобы создать ее.
Управление доступом на основе ролей Azure (Azure RBAC) используется для предоставления доступа к операциям в Машинном обучении Azure. Чтобы выполнить действия, описанные в этой статье, учетная запись пользователя должна быть назначена роль владельца или участника для рабочей области Машинное обучение 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 в сетевых конечных точках".
Пакеты моделей требуют регистрации модели в рабочей области или в реестре Машинное обучение Azure. В этом примере у вас уже есть локальная копия модели в репозитории, поэтому необходимо опубликовать модель только в реестре в рабочей области. Этот раздел можно пропустить, если модель, которую вы пытаетесь развернуть, уже зарегистрирована.
Для выполнения нашей модели требуются следующие пакеты, и у нас есть указанные в файле 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.
Создайте базовую среду, содержащую требования к модели и базовый образ. В базовой среде указываются только зависимости, необходимые вашей модели. Для моделей 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
Создайте спецификацию пакета:
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
Запустите операцию пакета модели:
Результатом операции пакета является среда.
Развертывание пакета модели
Пакеты моделей можно развертывать непосредственно в сетевых конечных точках в Машинное обучение Azure. Выполните следующие действия, чтобы развернуть пакет в сетевой конечной точке:
Выберите имя конечной точки, чтобы разместить развертывание пакета и создать его:
Создайте развертывание с помощью пакета. Обратите внимание, как
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
Совет
Обратите внимание, что в этом примере не указан сценарий модели или оценки; Они все входят в состав пакета.
Запустите развертывание:
На этом этапе развертывание готово к использованию. Вы можете проверить, как он работает, создав пример файла запроса:
sample-request.json
{ "data": [ [1,2,3,4,5,6,7,8,9,10], [10,9,8,7,6,5,4,3,2,1] ] }
Отправка запроса в конечную точку