Configurar o MLflow para o Azure Machine Learning
Este artigo explica como você pode configurar o MLflow para se conectar a um workspace do Azure Machine Learning para acompanhamento, registros e implantação.
Os espaços de trabalho do Azure Machine Learning são compatíveis com o MLflow, o que significa que eles podem atuar como um servidor do MLflow sem qualquer configuração extra. Cada workspace tem um URI de acompanhamento do MLflow que o MLflow pode usar para se conectar ao workspace. Os espaços de trabalho do Azure Machine Learning já estão configurados para funcionar com o MLflow, portanto, nenhuma configuração extra é necessária.
No entanto, se você trabalhar fora do Azure Machine Learning (como o computador local, o Azure Synapse Analytics ou o Azure Databricks), você precisará configurar o MLflow para apontar para o workspace.
Importante
Ao executar na Computação do Azure (Azure Machine Learning Notebooks, Jupyter Notebooks hospedados em instâncias de computação do Azure Machine Learning ou trabalhos em execução em clusters de computação do Azure Machine Learning), você não precisa configurar o URI de acompanhamento. É configurado automaticamente para você.
Pré-requisitos
Você precisará dos seguintes pré-requisitos para seguir este tutorial:
Instale o pacote
mlflow
do SDK do MLflow e o plug-inazureml-mlflow
do Azure Machine Learning para MLflow:pip install mlflow azureml-mlflow
Dica
Você pode usar o pacote
mlflow-skinny
, que é um pacote MLflow leve sem dependências de servidor, interface do usuário, ciência de dados ou armazenamento do SQL. Omlflow-skinny
é recomendado para usuários que precisam, principalmente, dos recursos de acompanhamento e registro em log do MLflow sem importar o conjunto completo de recursos, incluindo implantações.Um workspace do Azure Machine Learning. Para criar um espaço de trabalho, confira o tutorial Criar recursos de machine learning. Analise quais permissões de acesso você precisa para executar suas operações do MLflow no seu espaço de trabalho.
Se estiver efetuando o acompanhamento remoto (ou seja, acompanhando experimentos que estão sendo executados fora do Azure Machine Learning), configure o MLflow para apontar para o URI de acompanhamento do seu espaço de trabalho do Azure Machine Learning. Para obter mais informações sobre como conectar o MLflow ao seu workspace, confira Configurar o MLflow para o Azure Machine Learning.
Configurar o URI de acompanhamento do MLflow
Para conectar o MLflow a um workspace do Azure Machine Learning, você precisa ter o URI de acompanhamento para o workspace. Cada workspace tem o próprio URI de acompanhamento e o protocolo azureml://
.
Obtenha o URI de acompanhamento para seu workspace:
APLICA-SE A: Extensão de ML da CLI do Azurev2 (atual)
Faça logon e configure o seu workspace:
az account set --subscription <subscription> az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
Você pode obter o URI de acompanhamento usando o comando
az ml workspace
:az ml workspace show --query mlflow_tracking_uri
Ao configurar o URI de acompanhamento:
Em seguida, o método
set_tracking_uri()
aponta o URI de acompanhamento de MLflow para esse URI.import mlflow mlflow.set_tracking_uri(mlflow_tracking_uri)
Dica
Ao trabalhar em ambientes compartilhados, como um cluster do Azure Databricks, um cluster do Azure Synapse Analytics ou semelhante, é útil definir a variável de ambiente
MLFLOW_TRACKING_URI
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 autenticação
Depois que o acompanhamento for definido, você também precisará configurar o método de autenticação para o workspace associado. Por padrão, o plug-in do Azure Machine Learning para MLflow executará 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 testados, um por um, até que um deles tenha êxito:
- 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 foi implantado em um host do Azure com a Identidade Gerenciada habilitada, ele é autenticado com esse método.
- CLI do Azure: se um usuário entrar por meio do comando
az login
da CLI do Azure, ele será autenticado como esse usuário. - Azure PowerShell: se um usuário entrar por meio do comando
Connect-AzAccount
do Azure PowerShell, ele será autenticado como esse usuário. - Navegador interativo: autentica interativamente um usuário por meio do navegador padrão.
Para trabalhos interativos em que há um usuário conectado à sessão, você pode contar com a Autenticação Interativa e, portanto, nenhuma ação adicional é necessária.
Aviso
A autenticação por navegador interativo bloqueia a execução do código quando solicita credenciais. Essa abordagem não é adequada para autenticação em ambientes não assistidos, como trabalhos de treinamento. Recomendamos que você configure um modo de autenticação diferente.
Para cenários em que a execução não assistida é 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>"
Dica
Ao trabalhar em ambientes compartilhados, recomendamos que você configure essas variáveis de ambiente na computação. Como melhor prática, 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 maneira 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, confira 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ê poderá configurar as variáveis de ambiente AZURE_CLIENT_CERTIFICATE_PATH
para o caminho para um arquivo de certificado PEM
ou PKCS12
(incluindo a 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 Cientista de Dados do AzureML ou Colaborador, já estão configuradas para executar operações do MLflow em um workspace do Azure Machine Learning. Se estiver usando uma função personalizada, você precisará das seguintes permissões:
Para usar o acompanhamento do MLflow:
Microsoft.MachineLearningServices/workspaces/experiments/*
Microsoft.MachineLearningServices/workspaces/jobs/*
Para usar o registro de modelo do MLflow.
Microsoft.MachineLearningServices/workspaces/models/*/*
Para saber como conceder acesso à entidade de serviço que você criou ou conta de usuário ao seu workspace, confira Conceder acesso.
Solução de problemas de autenticação
O MLflow tenta se 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 registros em log para obter mais detalhes sobre o erro:
import logging
logging.getLogger("azure").setLevel(logging.DEBUG)
Definir o 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 em que o rastreamento está acontecendo.
Dica
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 no script de treinamento. Confira YAML: nome de exibição, nome do experimento, descrição e marcas para obter detalhes.
Configure o seu experimento usando o comando mlflow.set_experiment()
do MLflow.
experiment_name = 'experiment_with_mlflow'
mlflow.set_experiment(experiment_name)
Suporte a nuvens não públicas do Azure
O plug-in do Azure Machine Learning para MLflow é configurado por padrão para trabalhar com a nuvem global do Azure. No entanto, você pode configurar a nuvem do Azure que está usando definindo a variável de ambiente AZUREML_CURRENT_CLOUD
.
import os
os.environ["AZUREML_CURRENT_CLOUD"] = "AzureChinaCloud"
É possível identificar a nuvem que você está usando com o seguinte comando da CLI do Azure:
az cloud list
A nuvem atual tem o valor IsActive
definido como True
.
Próximas etapas
Agora que seu ambiente está conectado ao workspace no Azure Machine Learning, você pode começar a trabalhar com ele.