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

    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. mlflow-skinny é 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.

  • Uma área de trabalho do Azure Machine Learning. Você pode criar um seguindo o tutorial Criar recursos de aprendizado de máquina.

  • Se você estiver executando o rastreamento remoto (ou seja, rastreando experimentos que estão sendo executados fora do Aprendizado de Máquina do Azure), configure o MLflow para apontar para o URI de rastreamento do seu espaço 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://.

  1. Obtenha o URI de acompanhamento para seu espaço de trabalho:

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

    1. 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> 
      
    2. Você pode obter o URI de rastreamento usando o az ml workspace comando:

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

  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 for implantado em um host do Azure com a Identidade Gerenciada habilitada, ele será autenticado com ele.
  3. CLI do Azure: Se um usuário entrar por meio do comando da CLIaz login do Azure, ele será autenticado como esse usuário.
  4. Azure PowerShell: Se um usuário entrar por meio do comando do Azure PowerShell, ele será autenticado Connect-AzAccount como esse usuário.
  5. 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 bloqueará a execução de código ao solicitar credenciais. Não é uma opção adequada para autenticação em ambientes autônomos, como trabalhos de treinamento. Recomendamos configurar outro modo de autenticação.

Para os cenários em que a execução autônoma é necessária, você terá que 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, é aconselhável configurar essas variáveis de ambiente na computação. Como prática recomendada, gerencie-os 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 forma 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 documentação semelhante em 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 (incluindo chave privada) e AZURE_CLIENT_CERTIFICATE_PASSWORD com a senha do arquivo de PKCS12 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_CLOUDde 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.