Настройка MLflow для Машинного обучения Azure
В этой статье объясняется, как настроить MLflow для подключения к рабочей области Машинное обучение Azure для отслеживания, управления реестрами и развертывания.
Машинное обучение Azure рабочие области совместимы с MLflow, что означает, что они могут выступать в качестве серверов MLflow без дополнительной настройки. Каждая рабочая область имеет URI отслеживания MLflow, который MLflow может использовать для подключения к рабочей области. Машинное обучение Azure рабочие области уже настроены для работы с MLflow, поэтому дополнительная конфигурация не требуется.
Однако если вы работаете вне Машинное обучение Azure, необходимо настроить MLflow для указания рабочей области. Затронутые среды включают локальный компьютер, Azure Synapse Analytics и Azure Databricks.
Внимание
При использовании вычислительной инфраструктуры Azure не требуется настраивать URI отслеживания. Он автоматически настроен для вас. Среды с автоматической конфигурацией включают Машинное обучение Azure записные книжки, записные книжки Jupyter, размещенные в Машинное обучение Azure вычислительных экземплярах, а также задания, выполняемые в Машинное обучение Azure вычислительных кластерах.
Необходимые компоненты
Пакет пакета SDK MLflow
mlflow
и подключаемый модуль Машинное обучение Azureazureml-mlflow
для MLflow. Для установки этого программного обеспечения можно использовать следующую команду:pip install mlflow azureml-mlflow
Совет
Вместо этого
mlflow
рекомендуется использоватьmlflow-skinny
. Этот пакет является упрощенным пакетом MLflow без хранилища SQL, сервера, пользовательского интерфейса или зависимостей для обработки и анализа данных. Рекомендуется для пользователей, которые в первую очередь нуждаются в возможностях отслеживания и ведения журнала MLflow, но не хотят импортировать полный набор функций, включая развертывания.Рабочая область Машинного обучения Azure. Чтобы создать рабочую область, см. статью "Создание ресурсов", которые необходимо приступить к работе.
Разрешения доступа для выполнения операций MLflow в рабочей области. Список операций и необходимых разрешений см. в разделе "Операции MLflow".
Настройка URI отслеживания MLflow
Чтобы выполнить удаленное отслеживание или отслеживать эксперименты, выполняемые вне Машинное обучение Azure, настройте MLflow для указания URI отслеживания рабочей области Машинное обучение Azure.
Чтобы подключить MLflow к рабочей области Машинное обучение Azure, вам потребуется URI отслеживания рабочей области. Каждая рабочая область имеет собственный URI отслеживания, который начинается с протокола azureml://
.
Получите URI отслеживания для рабочей области:
ОБЛАСТЬ ПРИМЕНЕНИЯ:
расширение машинного обучения Azure CLI версии 2 (текущее)
Войдите и настройте рабочую область:
az account set --subscription <subscription-ID> az configure --defaults workspace=<workspace-name> group=<resource-group-name> location=<location>
Получите URI отслеживания с помощью
az ml workspace
команды:az ml workspace show --query mlflow_tracking_uri
Настройте URI отслеживания:
set_tracking_uri()
Используйте метод, чтобы задать URI отслеживания MLflow в URI отслеживания рабочей области.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
модуля.
Процесс проверки подлинности пытается выполнить следующие методы, один за другим, пока он не будет выполнен успешно.
- Среда: сведения об учетной записи, указанные с помощью переменных среды, считываются и используются для проверки подлинности.
- Управляемое удостоверение: если приложение развертывается на узле Azure с включенным управляемым удостоверением, для проверки подлинности используется управляемое удостоверение.
-
Azure CLI. Если вы используете команду Azure CLI
az login
для входа, учетные данные используются для проверки подлинности. -
Azure PowerShell. Если вы используете команду Azure PowerShell
Connect-AzAccount
для входа, учетные данные используются для проверки подлинности. - Интерактивный браузер: пользователь проходит интерактивную проверку подлинности через браузер по умолчанию.
Для интерактивных заданий, в которых есть пользователь, подключенный к сеансу, можно использовать интерактивную проверку подлинности. В дальнейших действиях нет необходимости.
Предупреждение
Интерактивная проверка подлинности браузера блокирует выполнение кода при запросе учетных данных. Этот подход не подходит для проверки подлинности в автоматических средах, таких как задания обучения. Рекомендуется настроить другой режим проверки подлинности в этих средах.
Для сценариев, требующих автоматического выполнения, необходимо настроить субъект-службу для взаимодействия с Машинное обучение 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) или "Стандарты шифрования открытого ключа" (PKCS #12). - Задайте
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 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
В текущем облаке задано True
значение IsActive
.
Связанный контент
Теперь, когда среда подключена к рабочей области в Машинное обучение Azure, вы можете начать работу с ней.