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
- Para controlar experiências em execução no Azure Databricks, consulte Acompanhar experiências de ML do Azure Databricks com MLflow e Azure Machine Learning.
- Para acompanhar experiências em execução no Azure Synapse Analytics, consulte Acompanhar experiências de ML do Azure Synapse Analytics com MLflow e Azure Machine Learning.
Pré-requisitos
Tenha uma assinatura do Azure com a versão gratuita ou paga do Azure Machine Learning.
Para executar a CLI do Azure e os comandos Python, instale a CLI do Azure v2 e o SDK do Azure Machine Learning v2 para Python. A
ml
extensão para a CLI do Azure é instalada automaticamente na primeira vez que você executa um comando da CLI do Azure Machine Learning.
Instale o pacote MLflow SDK
mlflow
e o plug-in do Azure Machine Learningazureml-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:
Na página Trabalhos em seu espaço de trabalho, selecione o nome do experimento.
Na página de detalhes do experimento, selecione a guia Métricas .
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.
Depois de criar a visualização desejada, salve-a para uso futuro e compartilhe-a com seus colegas de equipe usando um link direto.
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.