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


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

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

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

Однако если вы работаете вне Azure Machine Learning, необходимо настроить MLflow, чтобы указать на рабочую область. Затронутые среды включают локальный компьютер, Azure Synapse Analytics и Azure Databricks.

Внимание

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

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

  • Python 3.10 или более поздней версии.

  • Пакет SDK MLflow mlflow и плагин Azure Machine Learning azureml-mlflow для MLflow. Для установки этого программного обеспечения можно использовать следующую команду:

    pip install mlflow azureml-mlflow
    

    Совет

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

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

  • Разрешения доступа для выполнения операций MLflow в рабочей области. Список операций и необходимых разрешений см. в разделе "Операции MLflow".

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

Чтобы выполнить удаленное отслеживание или отслеживать эксперименты, выполняемые за пределами Azure Machine Learning, настройте MLflow, чтобы указать адрес отслеживания URI вашей рабочей области Azure Machine Learning.

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

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

    Область применения: расширение машинного обучения Azure CLI версии 2 (текущее)

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

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

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

    Используйте метод set_tracking_uri(), чтобы установить URI отслеживания MLflow для URL отслеживания рабочей области.

    import mlflow
    
    mlflow.set_tracking_uri(mlflow_tracking_uri)
    

    Совет

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

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

После настройки отслеживания также необходимо настроить метод проверки подлинности для связанной рабочей области.

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

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

  1. Среда: процесс считывает сведения об учетной записи из переменных среды и использует его для проверки подлинности.
  2. Управляемое удостоверение. Если приложение развернуто на узле Azure с включенным управляемым удостоверением, процесс использует управляемое удостоверение для проверки подлинности.
  3. Azure CLI. Если вы используете команду Azure CLI az login для входа, процесс использует учетные данные для проверки подлинности.
  4. Azure PowerShell. Если вы используете команду Azure PowerShell Connect-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 путь к файлу, содержащему сертификат и закрытый ключ в формате Privacy-Enhanced Mail (PEM) или стандартах криптографии с открытым ключом 12 (PKCS #12).
  • Установите AZURE_CLIENT_CERTIFICATE_PASSWORD как пароль к файлу сертификата, если он защищён паролем.

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

Некоторые роли по умолчанию, такие как AzureML Data Scientist и Участник, уже настроены для выполнения операций MLflow в рабочей области Azure Machine Learning. Если вы используете настраиваемую роль, вам потребуются следующие разрешения:

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

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

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

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

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

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

import logging

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

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

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

Совет

При использовании интерфейса командной строки Azure Machine Learning версии 2.0 для отправки заданий вы можете задать имя эксперимента с помощью свойства experiment_name в определении YAML задания. Вам не нужно настраивать его в скрипте обучения. Дополнительные сведения см. в разделе YAML: отображаемое имя, имя эксперимента, описание и теги.

Используйте команду MLflow mlflow.set_experiment() для настройки эксперимента.

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

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

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