Работа с моделями в Машинном обучении 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
.
Предварительные требования
- Подписка Azure. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись, прежде чем начинать работу. Попробуйте бесплатную или платную версию Машинного обучения Azure.
- Рабочая область машинного обучения Azure.
- Пакет SDK Python версии 2 для Машинного обучения Azure.
- Azure Machine Learning CLI версии 2.
Кроме того, вам потребуется:
- Установите Azure CLI и расширение ml в Azure CLI. Дополнительные сведения см. в разделе Установка, настройка и использование CLI (версия 2).
Поддерживаемые пути
При предоставлении модели для регистрации необходимо определить параметр 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
задания:
- Объект
type
, независимо от того, являетсяmlflow_model
ли модель ,custom_model
илиtriton_model
. - Объект
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.
Дальнейшие действия
- Установка и настройка пакета SDK для Python версии 2
- Развертывание без кода для моделей MLflow
- См. дополнительные сведения о MLflow и Машинном обучении Azure.