Rastreie experimentos e modelos com MLflow

O rastreamento é o processo de salvar informações relevantes sobre experimentos. Neste artigo, você aprenderá a usar o MLflow para controlar experimentos e execuções em espaços de trabalho do Azure Machine Learning.

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

Nota

Pré-requisitos

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

    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. Este pacote é 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.

  • Crie um espaço de trabalho do Azure Machine Learning. Para criar um espaço de trabalho, consulte Criar recursos necessários para começar. Revise as permissões de acesso necessárias para executar suas operações MLflow em seu espaço de trabalho.

  • 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 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 a experiência

O MLflow organiza informações em experimentos e execuções. As execuções são chamadas de 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 rastrear.

Para treinamento interativo, como em um bloco de anotações Jupyter, use o comando mlflow.set_experiment()MLflow . Por exemplo, o trecho de código a seguir configura um experimento:

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

Configurar a execução

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

Quando você trabalha interativamente, o MLflow começa a acompanhar sua rotina de treinamento assim que você registra informações que exigem uma execução ativa. Por exemplo, se a funcionalidade de registro automático do Mlflow estiver habilitada, o rastreamento MLflow começará quando você registrar uma métrica ou parâmetro ou iniciar um ciclo de treinamento.

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

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

O código a seguir inicia uma execução manualmente e a termina no final do bloco de anotações:

mlflow.start_run()

# Your code

mlflow.end_run()

É melhor iniciar as execuções manualmente para não se esquecer de terminá-las. Você pode usar o paradigma do gerenciador de contexto para ajudá-lo a se lembrar de terminar a execução.

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

Quando você inicia uma nova execução com mlflow.start_run()o , pode ser útil especificar o run_name parâmetro, que posteriormente se traduz no nome da execução na interface do usuário do Aprendizado de Máquina do Azure. Esta prática ajuda-o a identificar a corrida 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 confiar no recurso de registro automático do MLflow. Cada estrutura de aprendizado de máquina suportada pelo MLflow determina o que rastrear automaticamente para você.

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

mlflow.autolog()

Visualize métricas e artefatos em seu espaço de trabalho

As métricas e artefatos do log MLflow são rastreados em seu espaço de trabalho. Você pode exibi-los e acessá-los no estúdio do Azure Machine Learning ou acessá-los programaticamente por meio do SDK do MLflow.

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

  1. Na página Trabalhos em seu 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. Você pode personalizar os gráficos aplicando suavização, alterando a cor ou plotando várias métricas em um único gráfico. Você também pode redimensionar e reorganizar o layout.

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

    Captura de ecrã da vista 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 por meio do SDK 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)

Gorjeta

O exemplo anterior retorna apenas o último valor de uma determinada métrica. Para recuperar todos os valores de uma determinada métrica, use o mlflow.get_metric_history método. Para obter mais informações sobre como recuperar valores de métricas, 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 Aprendizado de Máquina do Azure usando MLflow, consulte Consultar & comparar experimentos e execuções com MLflow.