Configurar o MLflow para o Azure Machine Learning
Este artigo explica como configurar o MLflow para se conectar a um workspace do Azure Machine Learning para acompanhamento, gerenciamento de registro e implantação.
Os espaço de trabalhos do Azure Machine Learning são compatíveis com o MLflow, o que significa que podem atuar como servidores MLflow sem nenhuma configuração extra. Cada workspace tem um URI de acompanhamento do MLflow que o MLflow pode usar para se conectar ao workspace. Os espaço de trabalhos do Azure Machine Learning já estão configurados para trabalhar com o MLflow, portanto, não é necessária nenhuma configuração extra.
No entanto, se você trabalhar fora do Azure Machine Learning, será necessário configurar o MLflow para apontar para o espaço de trabalho. Os ambientes afetados incluem seu computador local, Azure Synapse Analytics e Azure Databricks.
Importante
Quando você usa a infraestrutura de computação do Azure, não é necessário configurar o URI de acompanhamento. É configurado automaticamente para você. Os ambientes com configuração automática incluem notebooks do Azure Machine Learning, notebooks Jupyter hospedados em instâncias de computação do Azure Machine Learning e trabalhos que são executados em clusters de computação do Azure Machine Learning.
Pré-requisitos
O pacote
mlflow
do SDK do MLflow e o plug-inazureml-mlflow
do Azure Machine Learning para MLflow. Você pode usar o seguinte comando para instalar esse software:pip install mlflow azureml-mlflow
Dica
Em vez de
mlflow
, considere usarmlflow-skinny
. Esse pacote é um pacote MLflow leve sem armazenamento SQL, servidor, interface do usuário ou dependências de ciência de dados. Ele é recomendado para usuários que precisam principalmente de recursos de acompanhamento e registro do MLflow, mas não querem importar o conjunto completo de recursos, incluindo implantações.Um workspace do Azure Machine Learning. Para criar um workspace, consulte Como criar os recursos necessários para começar.
Permissões de acesso para realizar operações do MLflow no espaço de trabalho. Para obter uma lista de operações e permissões necessárias, confira operações do MLflow.
Configurar o URI de acompanhamento do MLflow
Para efetuar o acompanhamento remoto ou para acompanhar experimentos que estão sendo executados fora do Azure Machine Learning, configure o MLflow para apontar para o URI de acompanhamento do seu workspace do Azure Machine Learning.
Para conectar o MLflow a um workspace do Azure Machine Learning, você precisará do URI de acompanhamento do espaço de trabalho. Cada espaço de trabalho tem seu próprio URI de acompanhamento, que começa com o protocolo azureml://
.
Obtenha o URI de acompanhamento para seu workspace:
APLICA-SE A: Extensão de ML da CLI do Azurev2 (atual)
Entre e configure seu espaço de trabalho:
az account set --subscription <subscription-ID> az configure --defaults workspace=<workspace-name> group=<resource-group-name> location=<location>
Obtenha o URI de acompanhamento usando o comando
az ml workspace
:az ml workspace show --query mlflow_tracking_uri
Configurar o URI de acompanhamento:
Use o método
set_tracking_uri()
para definir o URI de acompanhamento do MLflow como o URI de acompanhamento do espaço de trabalho.import mlflow mlflow.set_tracking_uri(mlflow_tracking_uri)
Dica
Alguns cenários envolvem o trabalho em um ambiente compartilhado, como um cluster do Azure Databricks ou um cluster do Azure Synapse Analytics. Nesses casos, é útil definir a variável de ambiente
MLFLOW_TRACKING_URI
no nível do cluster em vez de para cada sessão. Definir a variável no nível do cluster configura automaticamente o URI de acompanhamento do MLflow para apontar para o Azure Machine Learning para todas as sessões no cluster.
Configurar autenticação
Depois de configurar o acompanhamento, 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 executará a autenticação interativa abrindo o navegador padrão para solicitar credenciais. Mas o plug-in também dá suporte para vários outros mecanismos de autenticação. O pacote azure-identity
oferece esse suporte. Este pacote é instalado como uma dependência do plug-in azureml-mlflow
.
O processo de autenticação tenta os seguintes métodos, um após o outro, até que um seja bem-sucedido:
- Ambiente: as informações da conta especificadas por meio de variáveis de ambiente são lidas e usadas para autenticação.
- Identidade gerenciada: se o aplicativo for implantado em um host do Azure com uma identidade gerenciada habilitada, a identidade gerenciada será usada para autenticação.
- CLI do Azure: se você usar o comando
az login
da CLI do Azure para entrar, suas credenciais serão usadas para autenticação. - Azure PowerShell: se você usar o comando
Connect-AzAccount
do Azure PowerShell para entrar, suas credenciais serão usadas para autenticação. - Navegador interativo: o usuário é autenticado de forma interativa 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. Nenhuma ação do usuário é 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 nesses ambientes.
Para cenários que exigem execução sem intervenção, é necessário configurar uma entidade de serviço para se comunicar com o Azure Machine Learning. Para obter informações sobre como criar um entidade de serviço, confira Configurar um entidade de serviço.
Use a ID do locatário, a ID do cliente e o segredo do cliente da entidade de serviço no código a seguir:
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
Quando você trabalhar em ambientes compartilhados, recomendamos que você configure essas variáveis de ambiente no nível da computação. Como melhor prática, gerencie-os como segredos em uma instância do Azure Key Vault.
Por exemplo, na configuração de um cluster do Azure Databricks, você pode usar segredos em variáveis de ambiente da seguinte maneira: 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 seguintes variáveis de ambiente:
- Defina
AZURE_CLIENT_CERTIFICATE_PATH
como o caminho de um arquivo que contém o par de chave privada e certificado no formato PEM (Privacy Enhanced Mail) ou PKCS #12 (Public-Key Cryptography Standards 12). - Defina
AZURE_CLIENT_CERTIFICATE_PASSWORD
como a senha do arquivo de certificado, se ele usar uma senha.
Configurar níveis de autorização e permissão
Algumas funções padrão, como Cientista de Dados do AzureML e Colaborador, já estão configuradas para executar operações do MLflow em um workspace do Azure Machine Learning. Se você usar uma função personalizada, 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 ver como conceder acesso ao espaço de trabalho a uma entidade de serviço que você criar ou à sua conta de usuário, confira Conceder acesso.
Solucionar 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ê tiver problemas ou solicitações de autenticação inesperadas 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 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 que é usado para acompanhamento.
Dica
Quando você usa a CLI do Azure Machine Learning v2 para enviar trabalhos, poderá 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. Para obter mais informações, confira YAML: nome de exibição, nome do experimento, descrição e marcas.
Use o comando mlflow.set_experiment()
do MLflow para configurar seu experimento.
experiment_name = "experiment_with_mlflow"
mlflow.set_experiment(experiment_name)
Configurar o suporte para uma nuvem do Azure não pública
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
.
Conteúdo relacionado
Agora que seu ambiente está conectado ao workspace no Azure Machine Learning, você pode começar a trabalhar com ele.