Работа с моделями в Машинном обучении Azure

ПРИМЕНИМО К:Расширение машинного обучения Azure CLI версии 2 (в настоящее время)Пакет SDK для Python azure-ai-ml версии 2 (текущая версия)

Машинное обучение Azure позволяет работать с различными типами моделей. Из этой статьи вы узнаете, как использовать Машинное обучение Azure для работы с разными типами моделей, такими как пользовательские, MLflow и Triton. Вы также узнаете, как регистрировать модель из разных расположений и управлять ею с помощью пакета SDK Машинного обучения Azure, пользовательского интерфейса и интерфейса командной строки Машинного обучения Azure.

Совет

Если у вас есть ресурс модели данных, созданный с помощью пакета SDK/CLI версии 1, вы можете продолжать работу с ним, используя пакет SDK/CLI версии 2. Обеспечивается полная обратная совместимость. Всем моделям, зарегистрированным с помощью пакета SDK версии 1, назначается тип custom.

Предварительные требования

Кроме того, вам потребуется:

Поддерживаемые пути

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

Расположение Примеры
Путь к локальному компьютеру mlflow-model/model.pkl
Путь к хранилищу данных Машинного обучения Azure azureml://datastores/<datastore-name>/paths/<path_on_datastore>
Путь к заданию Машинного обучения Azure azureml://jobs/<job-name>/outputs/<output-name>/paths/<path-to-model-relative-to-the-named-output-location>
Путь из Задания MLflow runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location>
Путь из ресурса модели в рабочей области Машинного обучения Azure azureml:<model-name>:<version>
Путь из ресурса модели в Реестре машинного обучения Azure azureml://registries/<registry-name>/models/<model-name>/versions/<version>

Поддерживаемые режимы

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

Тип Ввод-вывод upload download ro_mount rw_mount direct
Файл custom Входные данные
custom Входные данные
mlflow Входные данные
Файл custom Выходные данные
custom Выходные данные
mlflow Выходные данные

Следуйте инструкциям в Jupyter Notebook

Этот пример можно выполнить в Jupyter Notebook. В репозитории azureml-examples откройте записную книжку model.ipynb.

Создание модели в реестре моделей

Регистрация модели позволяет хранить модели и управлять версиями этих моделей в рабочей области облака Azure. Реестр моделей позволяет организовывать и отслеживать обученные модели.

Фрагменты кода в этом разделе охватывают следующие сценарии:

  • регистрация модели в качестве ресурса в Машинном обучении с помощью интерфейса командной строки;
  • регистрация модели в качестве ресурса в Машинном обучении с помощью пакета SDK;
  • регистрация модели в качестве ресурса в Машинном обучении с помощью пользовательского интерфейса.

Эти фрагменты кода используют custom и mlflow.

  • custom — это тип, который ссылается на файл модели или папку, обученные по пользовательскому стандарту, который в настоящее время не поддерживается Машинным обучением Azure.
  • mlflow — это тип, ссылающийся на модель, обученную с помощью mflow. Обученные в MLflow модели размещаются в папке, содержащей файл MLmodel, файл модели, файл зависимостей conda и файл requirements.txt.

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

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

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

Регистрация модели в качестве ресурса в Машинном обучении с помощью интерфейса командной строки

На следующих вкладках выберите расположение модели.

$schema: https://azuremlschemas.azureedge.net/latest/model.schema.json
name: local-file-example
path: mlflow-model/model.pkl
description: Model created from local file.
az ml model create -f <file-name>.yml

Полный пример см. в YAML-файле модели.

Регистрация модели в качестве ресурса в Машинном обучении с помощью пакета SDK

На следующих вкладках выберите расположение модели.

from azure.ai.ml.entities import Model
from azure.ai.ml.constants import AssetTypes

file_model = Model(
    path="mlflow-model/model.pkl",
    type=AssetTypes.CUSTOM_MODEL,
    name="local-file-example",
    description="Model created from local file.",
)
ml_client.models.create_or_update(file_model)

Регистрация модели в качестве ресурса в Машинном обучении с помощью пользовательского интерфейса

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

Снимок экрана: пользовательский интерфейс для регистрации модели.


Модели (управление)

Пакет SDK и CLI (версия 2) также позволяют управлять жизненным циклом ресурсов модели Машинного обучения Azure.

Список

Список всех моделей в рабочей области:

az ml model list

Список всех версий модели под заданным именем:

az ml model list --name run-model-example

Показать

Получение сведений о конкретной модели:

az ml model show --name run-model-example --version 1

Update

Обновление изменяемых свойств конкретной модели:

az ml model update --name  run-model-example --version 1 --set description="This is an updated description." --set tags.stage="Prod"

Важно!

Для модели можно обновить только description и tags . Все остальные свойства являются неизменяемыми; Если необходимо изменить любое из этих свойств, следует создать новую версию модели.

Архив

При архивации модели она по умолчанию будет скрыта в запросах списка (az ml model list). Вы по-прежнему можете ссылаться на архивную модель и использовать ее в рабочих процессах. Вы можете архивировать либо все версии модели, либо только определенную версию.

Если не указать версию, все версии модели с указанным именем будут архивированы. При создании новой версии модели в архивном контейнере модели эта новая версия также будет автоматически задана как архивная.

Заархивируйте все версии модели:

az ml model archive --name run-model-example

Заархивируйте определенную версию модели:

az ml model archive --name run-model-example --version 1

Использование модели для обучения

Пакет SDK и CLI (версия 2) также позволяют использовать модель в задании обучения в качестве входных или выходных данных.

Использование модели в качестве входных данных в задании

Создайте файл YAML спецификации задания (<file-name>.yml). Укажите в разделе inputs задания:

  1. Объект type, независимо от того, является mlflow_modelли модель ,custom_model или triton_model.
  2. Объект path , в котором находятся данные; может быть любым из путей, указанных в разделе Поддерживаемые пути .
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json

# Possible Paths for models:
# AzureML Datastore: azureml://datastores/<datastore-name>/paths/<path_on_datastore>
# MLflow run: runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location>
# Job: azureml://jobs/<job-name>/outputs/<output-name>/paths/<path-to-model-relative-to-the-named-output-location>
# Model Asset: azureml:<my_model>:<version>

command: |
  ls ${{inputs.my_model}}
inputs:
  my_model:
    type: mlflow_model # List of all model types here: https://learn.microsoft.com/azure/machine-learning/reference-yaml-model#yaml-syntax
    path: ../../assets/model/mlflow-model
environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest

Запустите интерфейс командной строки

az ml job create -f <file-name>.yml

Полный пример см. в репозитории модели GitHub.

Использование модели в качестве выходных данных в задании

В задании можно написать модель в облачное хранилище с помощью выходных данных.

Создайте YAML-файл спецификации задания (<file-name>.yml) с разделом outputs, в котором указан тип и путь, в который вы хотите записать данные:

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json

# Possible Paths for Model:
# Local path: mlflow-model/model.pkl
# AzureML Datastore: azureml://datastores/<datastore-name>/paths/<path_on_datastore>
# MLflow run: runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location>
# Job: azureml://jobs/<job-name>/outputs/<output-name>/paths/<path-to-model-relative-to-the-named-output-location>
# Model Asset: azureml:<my_model>:<version>

code: src
command: >-
  python hello-model-as-output.py 
  --input_model ${{inputs.input_model}} 
  --custom_model_output ${{outputs.output_folder}}
inputs:
  input_model: 
    type: mlflow_model # mlflow_model,custom_model, triton_model
    path: ../../assets/model/mlflow-model
outputs:
  output_folder: 
    type: custom_model # mlflow_model,custom_model, triton_model
environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest

Затем создайте задание с помощью интерфейса командной строки:

az ml job create --file <file-name>.yml

Полный пример см. в репозитории модели GitHub.

Дальнейшие действия