Compartilhar via


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-in azureml-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 usar mlflow-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://.

  1. Obtenha o URI de acompanhamento para seu workspace:

    APLICA-SE A: Extensão de ML da CLI do Azurev2 (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 acompanhamento usando o comando az ml workspace:

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

  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 az login da CLI do Azure para entrar, suas credenciais serão usadas para autenticação.
  4. Azure PowerShell: se você usar o comando Connect-AzAccount do Azure PowerShell para entrar, suas credenciais serão usadas para autenticação.
  5. 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.

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