Partilhar via


Configurar o MLflow para o Azure Machine Learning

Este artigo explica como configurar o MLflow para se conectar a um espaço de trabalho do Azure Machine Learning para rastreamento, gerenciamento de registro 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 servidores 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ê trabalha fora do Aprendizado de Máquina do Azure, precisará configurar o MLflow para apontar para o espaço de trabalho. Os ambientes afetados incluem sua máquina local, o Azure Synapse Analytics e o Azure Databricks.

Importante

Quando você usa a infraestrutura de computação do Azure, não precisa configurar o URI de rastreamento. É configurado automaticamente para si. Os ambientes com configuração automática incluem blocos de anotações do Azure Machine Learning, blocos de anotações Jupyter hospedados em instâncias de computação do Azure Machine Learning e trabalhos executados em clusters de computação do Azure Machine Learning.

Pré-requisitos

  • O pacote SDK mlflow do MLflow e o plug-in do Azure Machine Learning azureml-mlflow para MLflow. Você pode usar o seguinte comando para instalar este software:

    pip install mlflow azureml-mlflow
    

    Gorjeta

    Em vez de mlflow, considere usar mlflow-skinny. Este pacote é um pacote MLflow leve sem armazenamento SQL, servidor, interface do usuário ou dependências de ciência de dados. É recomendado para usuários que precisam principalmente de recursos de rastreamento e registro em log do MLflow, mas não querem importar o conjunto completo de recursos, incluindo implantações.

  • Uma área de trabalho do Azure Machine Learning. Para criar um espaço de trabalho, consulte Criar recursos necessários para começar.

  • Permissões de acesso para executar operações MLflow em seu espaço de trabalho. Para obter uma lista de operações e permissões necessárias, consulte Operações MLflow.

Configurar o URI de rastreamento MLflow

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 conectar o MLflow a um espaço de trabalho do Azure Machine Learning, você precisa do URI de controle do espaço de trabalho. Cada espaço de trabalho tem seu próprio URI de rastreamento, que começa com o protocolo azureml://.

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

    APLICA-SE A: Azure CLI ml extension v2 (atual)

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

      az ml workspace show --query mlflow_tracking_uri
      
  2. Configure o URI de rastreamento:

    Use o set_tracking_uri() método para definir o URI de rastreamento MLflow para o URI de rastreamento do seu espaço de trabalho.

    import mlflow
    
    mlflow.set_tracking_uri(mlflow_tracking_uri)
    

    Gorjeta

    Alguns cenários envolvem trabalhar em um ambiente compartilhado, como um cluster do Azure Databricks ou um cluster do Azure Synapse Analytics. Nesses casos, é útil definir a MLFLOW_TRACKING_URI variável de ambiente no nível do cluster em vez de para cada sessão. A definição da variável no nível do cluster configura automaticamente o URI de rastreamento do MLflow para apontar para o Aprendizado de Máquina do Azure para todas as sessões no cluster.

Configurar a autenticação

Depois de configurar o acompanhamento, você também precisa 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. Mas o plugin também suporta vários outros mecanismos de autenticação. O azure-identity pacote fornece esse suporte. Este pacote é instalado como uma dependência do azureml-mlflow plugin.

O processo de autenticação tenta os seguintes métodos, um após o outro, até que um seja bem-sucedido:

  1. Ambiente: As informações da conta especificadas por meio de variáveis de ambiente são lidas e usadas para autenticação.
  2. 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.
  3. CLI do Azure: Se você usar o comando CLI az login do Azure para entrar, suas credenciais serão usadas para autenticação.
  4. Azure PowerShell: Se você usar o comando Azure PowerShell Connect-AzAccount para entrar, suas credenciais serão usadas para autenticação.
  5. Navegador interativo: O usuário é autenticado interativamente 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. Não são necessárias mais ações.

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 nesses ambientes.

Para cenários que exigem execução autônoma, você precisa configurar uma entidade de serviço para se comunicar com o Azure Machine Learning. Para obter informações sobre como criar uma entidade de serviço, consulte Configurar uma 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>"

Gorjeta

Quando você trabalha em ambientes compartilhados, recomendamos que configure essas variáveis de ambiente no nível de computação. Como prática recomendada, gerencie-os como segredos em uma instância do Azure Key Vault.

Por exemplo, em uma configuração de 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, 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 seguintes variáveis de ambiente:

  • Defina AZURE_CLIENT_CERTIFICATE_PATH como o caminho de um arquivo que contém o certificado e o par de chaves privadas no formato Privacy Enhanced Mail (PEM) ou Public-Key Cryptography Standards 12 (PKCS #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 AzureML, Cientista de Dados e Colaborador, já estão configuradas para executar operações MLflow em um espaço de trabalho do Azure Machine Learning. Se você usar uma função personalizada, 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 ver como conceder acesso ao seu espaço de trabalho a uma entidade de serviço criada por você ou à sua conta de usuário, consulte Conceder acesso.

Resolver 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ê 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 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 usado para rastreamento.

Gorjeta

Ao usar a CLI v2 do Azure Machine Learning para enviar trabalhos, você pode definir o nome do experimento usando a experiment_name propriedade na definição YAML do trabalho. Você não precisa configurá-lo em seu script de treinamento. Para obter mais informações, consulte YAML: nome para exibição, nome do experimento, descrição e tags.

Use o comando MLflow mlflow.set_experiment() para configurar seu experimento.

experiment_name = "experiment_with_mlflow"
mlflow.set_experiment(experiment_name)

Configurar suporte para uma nuvem não pública 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 AZUREML_CURRENT_CLOUD variável 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.

Agora que seu ambiente está conectado ao seu espaço de trabalho no Azure Machine Learning, você pode começar a trabalhar com ele.