Настройка MLflow для Машинного обучения Azure

В этой статье объясняется, как настроить MLflow для подключения к рабочей области Машинное обучение Azure для отслеживания, реестров и развертывания.

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

Однако если вы работаете вне Машинное обучение Azure (например, локального компьютера, Azure Synapse Analytics или Azure Databricks), необходимо настроить MLflow для указания рабочей области.

Важно!

При запуске в вычислительных средах Azure (Машинное обучение Azure записных книжек, записных книжек Jupyter, размещенных в Машинное обучение Azure вычислительных экземплярах или заданиях, работающих в вычислительных кластерах Машинное обучение Azure), вам не нужно настраивать URI отслеживания. Он автоматически настроен для вас.

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

Для выполнения этого руководства необходимы следующие предварительные требования:

  • Установите пакет mlflow SDK MLflow и подключаемый модуль Машинное обучение Azure для MLflowazureml-mlflow.

    pip install mlflow azureml-mlflow
    

    Совет

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

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

  • Если вы выполняете удаленное отслеживание (то есть выполняется отслеживание экспериментов, выполняемых вне Машинное обучение Azure), настройте MLflow для указания URI отслеживания рабочей области Машинное обучение Azure. Дополнительные сведения о подключении MLflow к рабочей области см. в разделе "Настройка MLflow" для Машинное обучение Azure.

Настройка URI отслеживания MLflow

Чтобы подключить MLflow к рабочей области Машинное обучение Azure, требуется URI отслеживания для рабочей области. Каждая рабочая область имеет собственный URI отслеживания и имеет протокол azureml://.

  1. Получите URI отслеживания для рабочей области:

    ОБЛАСТЬ ПРИМЕНЕНИЯ:расширение Машинного обучения для Azure CLI версии 2 (текущая версия)

    1. Войдите и настройте рабочую область:

      az account set --subscription <subscription>
      az configure --defaults workspace=<workspace> group=<resource-group> location=<location> 
      
    2. URI отслеживания можно получить с помощью az ml workspace команды:

      az ml workspace show --query mlflow_tracking_uri
      
  2. Настройка URI отслеживания:

    Затем метод set_tracking_uri() указывает этот URI в качестве URI отслеживания MLFLow.

    import mlflow
    
    mlflow.set_tracking_uri(mlflow_tracking_uri)
    

    Совет

    При работе с общими средами, например в кластере Azure Databricks, кластере Azure Synapse Analytics или аналогичном, рекомендуется настроить переменную MLFLOW_TRACKING_URI среды на уровне кластера, чтобы автоматически настроить URI отслеживания MLflow, чтобы указывать на Машинное обучение Azure для всех сеансов, выполняемых в кластере, а не для каждого сеанса.

Настройка проверки подлинности

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

Подключаемый модуль Машинное обучение Azure для MLflow поддерживает несколько механизмов проверки подлинности через пакетazure-identity, который устанавливается в качестве зависимости для подключаемого модуляazureml-mlflow. Следующие методы проверки подлинности выполняются по одному до тех пор, пока один из них не будет выполнен.

  1. Среда: считывает сведения об учетной записи, указанные с помощью переменных среды, и использует ее для проверки подлинности.
  2. Управляемое удостоверение. Если приложение развернуто на узле Azure с включенным управляемым удостоверением, оно проходит проверку подлинности с его помощью.
  3. Azure CLI: если пользователь входит с помощью команды Azure CLI az login , он проходит проверку подлинности от имени этого пользователя.
  4. Azure PowerShell: если пользователь входит с помощью команды Azure PowerShellConnect-AzAccount, он проходит проверку подлинности от имени этого пользователя.
  5. Интерактивный браузер: интерактивный браузер проверяет подлинность пользователя через браузер по умолчанию.

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

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

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

Для таких сценариев, когда требуется автоматическое выполнение, необходимо настроить субъект-службу для взаимодействия с Машинное обучение Azure.

import os

os.environ["AZURE_TENANT_ID"] = "<AZURE_TENANT_ID>"
os.environ["AZURE_CLIENT_ID"] = "<AZURE_CLIENT_ID>"
os.environ["AZURE_CLIENT_SECRET"] = "<AZURE_CLIENT_SECRET>"

Совет

При работе с общими средами рекомендуется настроить эти переменные среды на вычислительных ресурсах. Рекомендуется управлять ими в качестве секретов в экземпляре Azure Key Vault по возможности. Например, в Azure Databricks можно использовать секреты в переменных среды, как показано в конфигурации кластера. AZURE_CLIENT_SECRET={{secrets/<scope-name>/<secret-name>}} См . ссылку на секрет в переменной среды, чтобы узнать, как это сделать в Azure Databricks или обратиться к аналогичной документации на платформе.

Если вы предпочитаете использовать сертификат вместо секрета, можно настроить переменные AZURE_CLIENT_CERTIFICATE_PATH среды в путь к PEM файлу или PKCS12 файлу сертификата (включая закрытый ключ) и AZURE_CLIENT_CERTIFICATE_PASSWORD с паролем файла сертификата, если таковые есть.

Настройка уровней авторизации и разрешений

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

  • Чтобы использовать отслеживание MLflow:

    • Microsoft.MachineLearningServices/workspaces/experiments/*
    • Microsoft.MachineLearningServices/workspaces/jobs/*
  • Чтобы использовать реестр моделей MLflow:

    • Microsoft.MachineLearningServices/workspaces/models/*/*

Чтобы узнать, как предоставить доступ к созданному субъекту-службе или учетной записи пользователя в рабочей области, см. раздел "Предоставление доступа".

Устранение неполадок с проверкой подлинности

MLflow пытается выполнить проверку подлинности, чтобы Машинное обучение Azure при первой операции, которая взаимодействует со службой, например mlflow.set_experiment() или mlflow.start_run(). При обнаружении проблем или непредвиденных запросов проверки подлинности во время процесса можно увеличить уровень ведения журнала, чтобы получить дополнительные сведения об ошибке:

import logging

logging.getLogger("azure").setLevel(logging.DEBUG)

Задание имени эксперимента (необязательно)

Все запуски (циклы) MLflow регистрируются в активном эксперименте. По умолчанию запуски записываются в эксперимент с именем Default, который создается автоматически. Вы можете настроить эксперимент, в котором происходит отслеживание.

Совет

При отправке заданий с помощью Машинное обучение Azure CLI версии 2 можно задать имя эксперимента с помощью свойства experiment_name в определении YAML задания. Необязательно настраивать его в скрипте обучения. Дополнительные сведения см. в разделе YAML: отображаемое имя, имя эксперимента, описание и теги.

Настройте эксперимент с помощью команды mlflow.set_experiment()MLflow.

experiment_name = 'experiment_with_mlflow'
mlflow.set_experiment(experiment_name)

Поддержка неопубликованных облачных служб Azure

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

import os

os.environ["AZUREML_CURRENT_CLOUD"] = "AzureChinaCloud"

Вы можете определить облако, используемое с помощью следующей команды Azure CLI:

az cloud list

В текущем облаке задано Trueзначение IsActive .

Следующие шаги

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