Совместное использование данных в рабочих областях с помощью реестров (предварительная версия)

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

  • Создайте ресурс данных в реестре.
  • Предоставление общего доступа к существующему ресурсу данных из рабочей области в реестр
  • Используйте ресурс данных из реестра в качестве входных данных для задания обучения модели в рабочей области.

Важно!

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

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

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

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

Примеры приведены ниже.

  • Команда хочет предоставить общий доступ к общедоступному набору данных, который предварительно обработан и готов к использованию в экспериментах.
  • Ваша организация приобрела определенный набор данных для проекта у внешнего поставщика и хочет сделать его доступным для всех команд, работающих над проектом.
  • Команда хочет совместно использовать ресурсы данных в рабочих областях в разных регионах.

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

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

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

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

Типы ресурсов данных, поддерживаемые реестром Машинного обучения Azure

Совет

Ознакомьтесь со следующими каноническими сценариями при принятии решения о том, хотите ли вы использовать uri_file, uri_folderили mltable для вашего сценария.

Вы можете создать три типа ресурсов данных:

Тип API версии 2 Канонический сценарий
Файл: Ссылка на один файл uri_file Чтение и запись одного файла — файл может иметь любой формат.
Папку: Ссылка на одну папку uri_folder Необходимо считывать или записывать каталог parquet/CSV-файлов в Pandas/Spark. Глубокое обучение с изображениями, текстом, аудио и видеофайлами, расположенными в каталоге.
Таблице: Ссылка на таблицу данных mltable У вас есть сложная схема, подверженная частым изменениям, или требуется подмножество больших табличных данных.

Пути, поддерживаемые реестром Машинного обучения Azure

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

Совет

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

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

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

  • Знакомство с реестрами Машинного обучения Azure и понятиями данных в Машинном обучении Azure.

  • Реестр Машинного обучения Azure для совместного использования данных. Сведения о создании реестра см. в статье Создание реестра.

  • Рабочая область машинного обучения Azure. Если у вас ее нет, создайте ее по инструкциям, приведенным в кратком руководстве по созданию ресурсов рабочей области.

    Важно!

    Регион (расположение) Azure, в котором создается рабочая область, должен находиться в списке поддерживаемых регионов для реестра Машинного обучения Azure.

  • Среда и компонент, созданные в статье Общий доступ к моделям, компонентам и средам.

  • Azure CLI и ml расширение или пакет SDK Python для Машинного обучения Azure версии 2:

    Сведения об установке Azure CLI и расширении см. в статье Установка, настройка и использование ИНТЕРФЕЙСА командной строки (версия 2).

    Важно!

    • В примерах CLI в этой статье предполагается, что вы используете оболочку Bash (или совместимый вариант). Например, из системы Linux или подсистемы Windows для Linux.

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

      • Замените <subscription> идентификатором своей подписки Azure.
      • Заменить <workspace> рабочей областью машинного обучения Azure.
      • Замените <resource-group> группой ресурсов Azure, содержащей вашу рабочую область.
      • Замените <location> регионом Azure, содержащим вашу рабочую область.
      az account set --subscription <subscription>
      az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
      

      Для просмотра текущих значений по умолчанию используйте команду az configure -l.

Клонирование репозитория примеров

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

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

В примере CLI измените каталоги на cli/jobs/pipelines-with-components/nyc_taxi_data_regression в локальном клоне репозитория примеров.

cd cli/jobs/pipelines-with-components/nyc_taxi_data_regression

Создание подключения пакета SDK

Совет

Этот шаг необходим только при использовании пакета SDK для Python.

Создайте клиентское подключение как к рабочей области Машинного обучения Azure, так и к реестру. В следующем примере замените <...> значения заполнителей значениями, соответствующими вашей конфигурации. Например, идентификатор подписки Azure, имя рабочей области, имя реестра и т. д.:

ml_client_workspace = MLClient( credential=credential,
    subscription_id = "<workspace-subscription>",
    resource_group_name = "<workspace-resource-group",
    workspace_name = "<workspace-name>")
print(ml_client_workspace)

ml_client_registry = MLClient(credential=credential,
                        registry_name="<REGISTRY_NAME>",
                        registry_location="<REGISTRY_REGION>")
print(ml_client_registry)

Создание данных в реестре

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

Совет

Для создания данных в рабочей области или реестре можно использовать ту же команду az ml data create CLI. Выполнение команды с --workspace-name помощью команды создает данные в рабочей области, а при выполнении команды с --registry-name — данные в реестре.

Источник данных находится в репозитории примеров , который вы клонировали ранее. В локальном клоне перейдите к следующему пути к каталогу: cli/jobs/pipelines-with-components/nyc_taxi_data_regression. В этом каталоге создайте YAML-файл с именем data-registry.yml и используйте следующий YAML в качестве содержимого файла:

$schema: https://azuremlschemas.azureedge.net/latest/data.schema.json
name: transformed-nyc-taxt-data
description: Transformed NYC Taxi data created from local folder.
version: 1
type: uri_folder
path: data_transformed/

Значение path указывает на подкаталог data_transformed , содержащий данные, которые совместно используются в реестре.

Чтобы создать данные в реестре, используйте az ml data create. В следующих примерах замените <registry-name> именем реестра.

az ml data create --file data-registry.yml --registry-name <registry-name>

Если появляется сообщение об ошибке о том, что данные с таким именем и версией уже существуют в реестре, можно изменить version поле в или указать другую версию в data-registry.yml интерфейсе командной строки, которая переопределяет значение версии в data-registry.yml.

# use shell epoch time as the version
version=$(date +%s)
az ml data create --file data-registry.yml --registry-name <registry-name> --set version=$version

Совет

version=$(date +%s) Если команда не задает $version переменную в вашей среде, замените $version случайным числом.

Сохраните name и version данные из выходных az ml data create данных команды и используйте их с az ml data show командой для просмотра сведений о ресурсе.

az ml data show --name transformed-nyc-taxt-data --version 1 --registry-name <registry-name>

Совет

Если вы использовали другое имя или версию данных, замените --name параметры и --version соответствующим образом.

Вы также можете использовать для az ml data list --registry-name <registry-name> вывода списка всех ресурсов данных в реестре.

Создание среды и компонента в реестре

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

Совет

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

Запуск задания конвейера в рабочей области с помощью компонента из реестра

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

Примечание

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

Убедитесь, что вы находитесь в каталоге cli/jobs/pipelines-with-components/nyc_taxi_data_regression . Измените component раздел в под train_job разделом файла , single-job-pipeline.yml чтобы ссылаться на компонент обучения, и path в разделе , training_data чтобы ссылаться на ресурс данных, созданный в предыдущих разделах. В следующем примере показано, как single-job-pipeline.yml выглядит после редактирования . Замените <registry_name> на имя реестра:

$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: nyc_taxi_data_regression_single_job
description: Single job pipeline to train regression model based on nyc taxi dataset

jobs:
  train_job:
    type: command
    component: azureml://registries/<registry-name>/component/train_linear_regression_model/versions/1
    compute: azureml:cpu-cluster
    inputs:
      training_data: 
        type: uri_folder
        path: azureml://registries/<registry-name>/data/transformed-nyc-taxt-data/versions/1
    outputs:
      model_output: 
        type: mlflow_model
      test_data: 

Предупреждение

  • Перед запуском задания конвейера убедитесь, что рабочая область, в которой будет выполняться задание, находится в регионе Azure, поддерживаемом реестром, в котором были созданы данные.
  • Убедитесь, что в рабочей области есть вычислительный кластер с именем cpu-cluster , или измените compute поле jobs.train_job.compute под именем вашего вычислительного ресурса.

Запустите задание конвейера az ml job create с помощью команды .

az ml job create --file single-job-pipeline.yml 

Совет

Если вы не настроили рабочую область по умолчанию и группу ресурсов, как описано в разделе предварительных требований, необходимо указать --workspace-name параметры и --resource-group для az ml job create работы .

Дополнительные сведения о выполнении заданий см. в следующих статьях:

Совместное использование данных из рабочей области в реестр

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

Сначала создайте ресурс данных в рабочей области. Убедитесь, что вы находитесь в каталоге cli/assets/data . Объект , расположенный local-folder.yml в этом каталоге, используется для создания ресурса данных в рабочей области. Данные, указанные в этом файле, доступны в каталоге cli/assets/data/sample-data . Ниже приведено содержимое local-folder.yml файла YAML:

$schema: https://azuremlschemas.azureedge.net/latest/data.schema.json
name: local-folder-example-titanic
description: Dataset created from local folder.
type: uri_folder
path: sample-data/

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

az ml data create -f local-folder.yml

Дополнительные сведения о создании ресурсов данных в рабочей области см. в статье Создание ресурсов данных.

Ресурс данных, созданный в рабочей области, можно совместно использовать в реестре. Из реестра его можно использовать в нескольких рабочих областях. Обратите внимание, что мы передаем --share_with_name параметр и --share_with_version в функции общего доступа. Эти параметры являются необязательными, и если вы не передадите, эти данные будут совместно использоваться с тем же именем и версией, что и в рабочей области.

В следующем примере показано использование команды общего доступа для предоставления общего доступа к ресурсу данных. Замените <registry-name> именем реестра, в который будут предоставляться данные.

az ml data share --name local-folder-example-titanic --version <version-in-workspace> --share-with-name <name-in-registry> --share-with-version <version-in-registry> --registry-name <registry-name>

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