Configurar o MLflow para o Azure Machine Learning
Este artigo explica como você pode configurar o MLflow para se conectar a um espaço de trabalho do Azure Machine Learning para rastreamento, registros e implantação.
Os espaços de trabalho do Azure Machine Learning são compatíveis com MLflow, o que significa que podem atuar como um servidor MLflow sem qualquer configuração extra. Cada espaço de trabalho tem um URI de controle MLflow que o MLflow pode usar para se conectar ao espaço de trabalho. Os espaços de trabalho do Azure Machine Learning já estão configurados para funcionar com MLflow , portanto, nenhuma configuração extra é necessária.
No entanto, se você trabalhar fora do Azure Machine Learning (como sua máquina local, Azure Synapse Analytics ou Azure Databricks), precisará configurar o MLflow para apontar para o espaço de trabalho.
Importante
Ao executar no Azure Compute (Blocos de Anotações do Azure Machine Learning, blocos de anotações Jupyter hospedados em instâncias de computação do Azure Machine Learning ou trabalhos executados em clusters de computação do Azure Machine Learning), não é necessário configurar o URI de rastreamento. É configurado automaticamente para si.
Pré-requisitos
Você precisa dos seguintes pré-requisitos para seguir este tutorial:
Instale o pacote MLflow SDK
mlflow
e o plug-in do Azure Machine Learningazureml-mlflow
para MLflow da seguinte maneira:pip install mlflow azureml-mlflow
Gorjeta
Você pode usar o
mlflow-skinny
pacote, que é um pacote MLflow leve sem dependências de armazenamento SQL, servidor, interface do usuário ou ciência de dados. Este pacote é recomendado para usuários que precisam principalmente dos recursos de rastreamento e registro em log do MLflow sem importar o conjunto completo de recursos, incluindo implantações.Crie um espaço de trabalho do Azure Machine Learning. Para criar um espaço de trabalho, consulte Criar recursos necessários para começar. Revise as permissões de acesso necessárias para executar suas operações MLflow em seu espaço de trabalho.
Para fazer o acompanhamento remoto ou acompanhar experiências em execução fora do Azure Machine Learning, configure o MLflow para apontar para o URI de acompanhamento da sua área de trabalho do Azure Machine Learning. Para obter mais informações sobre como conectar o MLflow ao seu espaço de trabalho, consulte Configurar o MLflow para o Azure Machine Learning.
Configurar URI de rastreamento de MLflow
Para conectar o MLflow a um espaço de trabalho do Azure Machine Learning, você precisa do URI de rastreamento para o espaço de trabalho. Cada espaço de trabalho tem seu próprio URI de rastreamento e tem o protocolo azureml://
.
Obtenha o URI de acompanhamento para seu espaço de trabalho:
APLICA-SE A: Azure CLI ml extension v2 (atual)
Faça login e configure seu espaço de trabalho:
az account set --subscription <subscription> az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
Você pode obter o URI de rastreamento usando o
az ml workspace
comando:az ml workspace show --query mlflow_tracking_uri
Configurando o URI de rastreamento:
Em seguida, o método
set_tracking_uri()
aponta o URI de rastreamento MLflow para esse URI.import mlflow mlflow.set_tracking_uri(mlflow_tracking_uri)
Gorjeta
Ao trabalhar em ambientes compartilhados, como um cluster do Azure Databricks, cluster do Azure Synapse Analytics ou similar, é útil definir a variável
MLFLOW_TRACKING_URI
de ambiente no nível do cluster para configurar automaticamente o URI de acompanhamento do MLflow para apontar para o Azure Machine Learning para todas as sessões em execução no cluster, em vez de fazê-lo por sessão.
Configurar a autenticação
Depois que o rastreamento estiver definido, você também precisará configurar o método de autenticação para o espaço de trabalho associado. Por padrão, o plug-in do Azure Machine Learning para MLflow executa a autenticação interativa abrindo o navegador padrão para solicitar credenciais.
O plug-in do Azure Machine Learning para MLflow dá suporte a vários mecanismos de autenticação por meio do pacote azure-identity
, que é instalado como uma dependência para o plug-in azureml-mlflow
. Os seguintes métodos de autenticação são tentados um a um até que um deles seja bem-sucedido:
- Ambiente: lê as informações da conta especificadas por meio de variáveis de ambiente e as usa para autenticar.
- Identidade Gerenciada: Se o aplicativo for implantado em um host do Azure com a Identidade Gerenciada habilitada, ele será autenticado com ele.
- CLI do Azure: Se um usuário entrar por meio do comando da CLI
az login
do Azure, ele será autenticado como esse usuário. - Azure PowerShell: Se um usuário entrar por meio do comando do Azure PowerShell, ele será autenticado
Connect-AzAccount
como esse usuário. - Navegador interativo: autentica interativamente um usuário através do navegador padrão.
Para trabalhos interativos em que há um usuário conectado à sessão, você pode confiar na Autenticação Interativa e, portanto, nenhuma ação adicional é necessária.
Aviso
A autenticação interativa do navegador bloqueia a execução de código quando solicita credenciais. Essa abordagem não é adequada para autenticação em ambientes autônomos, como trabalhos de treinamento. Recomendamos que você configure um modo de autenticação diferente.
Para aqueles cenários em que a execução autônoma é necessária, você precisa configurar uma entidade de serviço para se comunicar com o Azure Machine Learning.
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>"
Gorjeta
Ao trabalhar em ambientes compartilhados, recomendamos que você configure essas variáveis de ambiente na computação. Como prática recomendada, gerencie-os como segredos em uma instância do Azure Key Vault.
Por exemplo, no Azure Databricks, você pode usar segredos em variáveis de ambiente da seguinte forma na configuração do cluster: AZURE_CLIENT_SECRET={{secrets/<scope-name>/<secret-name>}}
. Para obter mais informações sobre como implementar essa abordagem no Azure Databricks, consulte Referenciar um segredo em uma variável de ambiente ou consulte a documentação da sua plataforma.
Se preferir usar um certificado em vez de um segredo, você pode configurar as variáveis AZURE_CLIENT_CERTIFICATE_PATH
de ambiente para o caminho para um PEM
arquivo de certificado ou PKCS12
(incluindo chave privada) e AZURE_CLIENT_CERTIFICATE_PASSWORD
com a senha do arquivo de certificado, se houver.
Configurar níveis de autorização e permissão
Algumas funções padrão, como AzureML, Cientista de Dados ou Colaborador, já estão configuradas para executar operações MLflow em um espaço de trabalho do Azure Machine Learning. Se estiver usando uma função personalizada, você precisará das seguintes permissões:
Para usar o rastreamento MLflow:
Microsoft.MachineLearningServices/workspaces/experiments/*
Microsoft.MachineLearningServices/workspaces/jobs/*
Para usar o registro do modelo MLflow:
Microsoft.MachineLearningServices/workspaces/models/*/*
Para saber como conceder acesso à entidade de serviço que criou ou à conta de utilizador à sua área de trabalho, consulte Conceder acesso.
Solução de problemas de autenticação
O MLflow tenta autenticar no Azure Machine Learning na primeira operação que interage com o serviço, como mlflow.set_experiment()
ou mlflow.start_run()
. Se você encontrar problemas ou prompts de autenticação inesperados durante o processo, poderá aumentar o nível de log para obter mais detalhes sobre o erro:
import logging
logging.getLogger("azure").setLevel(logging.DEBUG)
Definir nome do experimento (opcional)
Todas as execuções do MLflow são registradas no experimento ativo. Por padrão, as execuções são registradas em um experimento chamado Default
que é criado automaticamente para você. Você pode configurar o experimento onde o rastreamento está acontecendo.
Gorjeta
Ao enviar trabalhos usando a CLI v2 do Azure Machine Learning, você pode definir o nome do experimento usando a propriedade experiment_name
na definição YAML do trabalho. Você não precisa configurá-lo em seu script de treinamento. Consulte YAML: nome para exibição, nome do experimento, descrição e tags para obter detalhes.
Configure seu experimento usando o comando mlflow.set_experiment()
MLflow .
experiment_name = 'experiment_with_mlflow'
mlflow.set_experiment(experiment_name)
Suporte não público a Nuvens do Azure
O plug-in do Azure Machine Learning para MLflow é configurado por padrão para funcionar com a nuvem global do Azure. No entanto, você pode configurar a nuvem do Azure que está usando definindo a variável AZUREML_CURRENT_CLOUD
de ambiente .
import os
os.environ["AZUREML_CURRENT_CLOUD"] = "AzureChinaCloud"
Você pode identificar a nuvem que está usando com o seguinte comando da CLI do Azure:
az cloud list
A nuvem atual tem o valor IsActive
definido como True
.
Próximos passos
Agora que seu ambiente está conectado ao seu espaço de trabalho no Azure Machine Learning, você pode começar a trabalhar com ele.