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


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

ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение машинного обучения Azure CLI версии 2 (current)Python SDK azure-ai-ml версии 2 (current)

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

  • Пользовательский интерфейс Студия машинного обучения Azure.
  • Интерфейс командной строки Машинное обучение Azure версии 2.
  • Пакет SDK для Python Машинное обучение Azure версии 2.

Узнайте следующие темы:

  • Создайте зарегистрированные модели в реестре моделей из локальных файлов, хранилищ данных или выходных данных задания.
  • Работа с различными типами моделей, таких как custom, MLflow и Triton.
  • Используйте модели в качестве входных или выходных данных в заданиях обучения.
  • Управление жизненным циклом ресурсов модели.

регистрация модели;

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

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

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

Расположение Синтаксис
Локальный компьютер <model-folder>/<model-filename>
хранилище данных Машинное обучение 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>
Ресурс модели в рабочей области Машинное обучение azureml:<model-name>:<version>
Ресурс модели в реестре Машинное обучение azureml://registries/<registry-name>/models/<model-name>/versions/<version>

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

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

  • ro_mount: подключите данные к целевому объекту вычислений только для чтения.
  • rw_mount: чтение и запись подключения данных.
  • download: скачайте данные в целевой объект вычислений.
  • upload: отправка данных из целевого объекта вычислений.
  • direct: передайте универсальный код ресурса (URI) в виде строки.

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

Тип upload download ro_mount rw_mount direct
custom Входные данные файла
custom Входные данные папки
mlflow ввод
custom Выходные данные файла
custom Выходные данные папки
mlflow выпуск

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

Чтобы запустить примеры кода в этой статье и работать с пакетом SDK Машинное обучение Azure версии 2 или Python Машинное обучение Azure версии 2, вам также потребуется:

Примечание.

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

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

Чтобы зарегистрировать модель с помощью пользовательского интерфейса Студия машинного обучения Azure:

  1. В рабочей области в студии выберите "Модели " в области навигации слева.

  2. На странице списка моделей выберите "Зарегистрировать" и выберите одно из следующих расположений в раскрывающемся списке:

    • Из локальных файлов
    • Из выходных данных задания
    • Из хранилища данных
    • Из локальных файлов (на основе платформы)
  3. На первом экране регистрации модели :

    1. Перейдите к локальному файлу, хранилищу данных или выходным данным задания для модели.
    2. Выберите тип входной модели: MLflow, Triton или Неопределенный тип.
  4. На экране параметров модели укажите имя и другие необязательные параметры для зарегистрированной модели и нажмите кнопку "Далее".

  5. На экране "Рецензирование" просмотрите конфигурацию и выберите "Зарегистрировать".

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

Регистрация модели с помощью Azure CLI или пакета SDK для Python

В следующих фрагментах кода описано, как зарегистрировать модель в качестве ресурса в Машинное обучение Azure с помощью Azure CLI или пакета SDK для Python. Эти фрагменты используют custom и mlflow типы моделей.

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

Совет

Вы можете следовать вместе с версиями Python следующих примеров, выполнив записную книжку model.ipynb в репозитории azureml-examples .

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

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

  1. Войдите в Azure, выполнив и выполнив az login запросы.

  2. В следующих командах замените <subscription-id>, <workspace-name><resource-group>и <location> заполнители значениями среды.

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

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

Вы можете создать зарегистрированную модель из модели, которая:

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

Локальный файл или папка

  1. Создайте имя> файла <YAML.yml. В файле укажите имя зарегистрированной модели, путь к локальному файлу модели и описание. Например:

    $schema: https://azuremlschemas.azureedge.net/latest/model.schema.json
    name: local-file-example
    path: mlflow-model/model.pkl
    description: Model created from local file.
    
  2. Выполните следующую команду, используя имя ФАЙЛА YAML:

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

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

Хранилище данных

Модель можно создать из облачного пути с помощью любого из поддерживаемых форматов URI.

В следующем примере используется сокращенная azureml схема для указания пути к хранилищу данных с помощью синтаксиса azureml://datastores/<datastore-name>/paths/<path_on_datastore>.

az ml model create --name my-model --version 1 --path azureml://datastores/myblobstore/paths/models/cifar10/cifar.pt

Полный пример см. в справочнике по CLI.

Выходные данные заданий

Если данные модели приходят из выходных данных задания, у вас есть два варианта указания пути модели. Вы можете использовать формат URI MLflow runs: или azureml://jobs формат URI.

Примечание.

Зарезервированное ключевое слово артефактов представляет выходные данные из расположения артефактов по умолчанию.

  • Запуски MLflow: формат URI

    Этот параметр оптимизирован для пользователей MLflow, которые, вероятно, уже знакомы с форматом URI MLflow runs: . Этот параметр создает модель из артефактов в расположении артефактов по умолчанию, где находятся все модели, зарегистрированные в MLflow, и артефакты. Этот параметр также устанавливает происхождение между зарегистрированной моделью и запуском модели.

    Формат: runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location>

    Пример:

    az ml model create --name my-registered-model --version 1 --path runs:/my_run_0000000000/model/ --type mlflow_model
    

  • формат URI azureml://jobs

    Параметр azureml://jobs URI ссылки позволяет зарегистрировать модель из артефактов в любом из выходных путей задания. Этот формат соответствует формату azureml://datastores URI ссылки, а также поддерживает ссылки на артефакты из именованных выходных данных, отличных от расположения артефактов по умолчанию.

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

    Формат: azureml://jobs/<run-id>/outputs/<output-name>/paths/<path-to-model>

    • Расположение артефакта по умолчанию: azureml://jobs/<run-id>/outputs/artifacts/paths/<path-to-model>/ Это расположение эквивалентно MLflow runs:/<run-id>/<model>.
    • Именованной выходной папке: azureml://jobs/<run-id>/outputs/<named-output-folder>
    • Определенный файл в именованной выходной папке: azureml://jobs/<run-id>/outputs/<named-output-folder>/paths/<model-filename>
    • Путь к определенной папке в именованной выходной папке: azureml://jobs/<run-id>/outputs/<named-output-folder>/paths/<model-folder-name>

    Пример:

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

    az ml model create --name run-model-example --version 1 --path azureml://jobs/my_run_0000000000/outputs/artifacts/paths/model/
    

    Полный пример см. в справочнике по CLI.


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

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

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

  1. Создайте файл YAML спецификации задания, <имя> файла.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
    
  2. Выполните следующую команду, подставив имя файла YAML.

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

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

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

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

  1. Создайте спецификацию задания 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
    
  2. Создайте задание с помощью интерфейса командной строки:

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

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

Manage models in the repository (Управление моделями в репозитории)

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

List

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

az ml model list

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

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

Показать

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

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

Обновить

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

Внимание

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

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

Архив

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

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

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

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

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

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