Compartilhar via


Acompanhar experimentos e modelos usando o MLflow

Acompanhamento é o processo de salvar informações relevantes sobre experimentos. Neste artigo, você aprenderá a usar o MLflow para acompanhar seus experimentos e execuções em workspaces do Azure Machine Learning.

Alguns métodos disponíveis na API do MLflow podem não estar disponíveis quando você estiver usando o Azure Machine Learning. Para obter detalhes sobre as operações com suporte e sem suporte, consulte Matriz de suporte para consultar execuções e experimentos. Você também pode aprender sobre as funcionalidades de MLflow com suporte no Azure Machine Learning no artigo MLflow e no Azure Machine Learning.

Observação

Pré-requisitos

  • Instale o pacote do SDK mlflow do MLflow e o plug-in do Azure Machine Learning azureml-mlflow para MLflow:

    pip install mlflow azureml-mlflow
    

    Dica

    Você pode usar o pacote mlflow-skinny, que é um pacote MLflow leve sem armazenamento SQL, servidor, interface do usuário ou dependências de ciência de dados. Recomendamos esse pacote para usuários que precisam principalmente dos recursos de rastreamento e registro em log do MLflow, mas não o conjunto completo de recursos, incluindo implantações.

  • Criar um Workspace de Azure Machine Learning. Para criar um workspace, consulte Como criar os recursos necessários para começar. Examine as permissões de acesso necessárias para executar operações do MLflow em seu workspace.

  • Para fazer o acompanhamento remoto ou acompanhar experimentos em execução 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, consulte Configurar o MLflow para o Azure Machine Learning.

Configurar o experimento

O MLflow organiza informações em experimentos e execuções. As execuções são chamadas trabalhos no Azure Machine Learning. Por padrão, executa o log em um experimento criado automaticamente chamado Padrão, mas você pode configurar qual experimento acompanhar.

Para treinamento interativo, como em um Jupyter Notebook, use o seguinte comando MLflow mlflow.set_experiment(). Por exemplo, o snippet de código a seguir configura um exemplo de experimento:

experiment_name = 'hello-world-example'
mlflow.set_experiment(experiment_name)

Configurar a execução

O Azure Machine Learning acompanha trabalhos de treinamento no que o MLflow chama de execuções. Use execuções para capturar todo o processamento que seu trabalho executa.

Ao trabalhar interativamente, o MLflow começa a acompanhar sua rotina de treinamento assim que você tenta registrar informações que exigem uma execução ativa. Por exemplo, se a funcionalidade de registro automático do MLflow estiver habilitada, o acompanhamento do MLflow será iniciado quando você registra uma métrica ou parâmetro ou inicia um ciclo de treinamento.

No entanto, geralmente é útil iniciar a execução explicitamente, especialmente se você quiser capturar o tempo total do experimento no campo Duração. Para iniciar a execução explicitamente, use mlflow.start_run().

Se você iniciar a execução manualmente ou não, eventualmente precisará interromper a execução, para que o MLflow saiba que a execução do experimento está concluída e pode marcar o status da execução como Concluída. Para interromper uma execução, use mlflow.end_run().

O código a seguir inicia uma execução manualmente e a encerra no final do notebook:

mlflow.start_run()

# Your code

mlflow.end_run()

É melhor iniciar as execuções manualmente para que você não se esqueça de encerrá-las. Você pode usar o paradigma do gerenciador de contexto para ajudar a lembrar você de encerrar a execução.

with mlflow.start_run() as run:
    # Your code

Quando você inicia uma nova execução usando mlflow.start_run(), pode ser útil especificar o run_name parâmetro, que posteriormente se traduz para o nome da execução na interface do usuário do Azure Machine Learning. Essa prática ajuda a identificar a execução mais rapidamente.

with mlflow.start_run(run_name="hello-world-example") as run:
    # Your code

Habilitar o registro automático do MLflow

Você pode registrar métricas, parâmetros e arquivos com o MLflow manualmente e também pode contar com a funcionalidade de registro automático do MLflow. Cada estrutura de machine learning com suporte do MLflow determina o que acompanhar automaticamente.

Para habilitar o registro em log automático, insira o seguinte código antes do seu código de treinamento:

mlflow.autolog()

Exibir métricas e artefatos no espaço de trabalho

As métricas e os artefatos no registro do MLflow são mantidos no espaço de trabalho. Você pode exibi-los e acessá-los no estúdio do Azure Machine Learning ou acessá-los programaticamente usando o SDK do MLflow.

Para exibir métricas e artefatos no estúdio:

  1. Na página Trabalhos no espaço de trabalho, selecione o nome do experimento.

  2. Na página de detalhes do experimento, selecione a guia Métricas.

  3. Selecione métricas registradas para renderizar gráficos no lado direito da página. Você pode personalizar os gráficos com a aplicação de suavização, alteração de cor ou uso de várias métricas em um único grafo. Você também pode redimensionar e reorganizar o layout.

  4. Depois de criar a exibição desejada, salve-a para uso futuro e compartilhe-a com seus colegas de equipe usando um link direto.

    Captura de tela da exibição de métricas que mostra a lista de métricas e os gráficos criados a partir das métricas.

Para acessar ou consultar métricas, parâmetros e artefatos programaticamente usando o SDK do MLflow, use mlflow.get_run().

import mlflow

run = mlflow.get_run("<RUN_ID>")

metrics = run.data.metrics
params = run.data.params
tags = run.data.tags

print(metrics, params, tags)

Dica

O exemplo anterior retorna apenas o último valor de uma determinada métrica. Se você quiser recuperar todos os valores de uma determinada métrica, use o método mlflow.get_metric_history. Para obter mais informações sobre como recuperar valores de uma métrica, consulte Obter parâmetros e métricas de uma execução.

Para baixar artefatos registrados, como arquivos e modelos, use mlflow.artifacts.download_artifacts().

mlflow.artifacts.download_artifacts(run_id="<RUN_ID>", artifact_path="helloworld.txt")

Para obter mais informações sobre como recuperar ou comparar informações de experimentos e execuções no Azure Machine Learning usando o MLflow, consulte Consultar e comparar experimentos e execuções com o MLflow.