Compartilhar via


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-in do Azure Machine Learning para MLflow azureml-mlflow.

    pip install mlflow azureml-mlflow
    

    Dica

    Você pode usar o pacote mlflow-skinny, que é um pacote leve do MLflow sem dependências de servidor, interface do usuário, ciência de dados ou armazenamento SQL. O mlflow-skinny é recomendado para os usuários que precisam principalmente das funcionalidades de acompanhamento e log do MLflow sem importar o pacote completo de recursos, incluindo as implantações.

  • Um Workspace do Azure Machine Learning. Você pode criar um seguindo o tutorial Criar recursos de machine learning.

  • Se estiver fazendo 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 workspace 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://.

  1. Obtenha o URI de acompanhamento para seu workspace:

    APLICA-SE A:Extensão do ML da CLI do Azure v2 (atual)

    1. Faça logon e configure o seu workspace:

      az account set --subscription <subscription>
      az configure --defaults workspace=<workspace> group=<resource-group> location=<location> 
      
    2. Você pode obter o URI de acompanhamento usando o comando az ml workspace:

      az ml workspace show --query mlflow_tracking_uri
      
  2. 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:

  1. Ambiente: lê as informações da conta especificadas por meio de variáveis de ambiente e as usa para autenticar.
  2. Identidade Gerenciada: se o aplicativo foi implantado em um host do Azure com a Identidade Gerenciada habilitada, ele é autenticado com esse método.
  3. 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.
  4. Azure PowerShell: se um usuário entrar por meio do comando Connect-AzAccount do Azure PowerShell, ele será autenticado como esse usuário.
  5. 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 interativa do navegador bloqueará a execução de código ao solicitar credenciais. Ela não é uma opção adequada para autenticação em ambientes não supervisionados, como trabalhos de treinamento. Recomendamos configurar outro modo de autenticação.

Para cenários em que a execução não supervisionada é necessária, você precisará 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, é aconselhável configurar essas variáveis de ambiente na computação. Como melhor prática, gerencie-as como segredos em uma instância do Azure Key Vault sempre que possível. 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>}}. Consulte Referenciar um segredo em uma variável de ambiente para saber como fazer isso no Azure Databricks ou consulte uma documentação semelhante em 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.