Acompanhar experimentos e modelos com 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 conectados ao 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 Azure Machine Learning.
Observação
- Para acompanhar os experimentos em execução no Azure Databricks, consulte Acompanhar experimentos do Azure Databricks ML com o MLflow e o Azure Machine Learning.
- Para acompanhar os experimentos em execução no Azure Synapse Analytics, consulte Acompanhar experimentos do Azure Synapse Analytics ML com o MLflow e o Azure Machine Learning.
Pré-requisitos
Tenha uma assinatura do Azure com a versão gratuita ou paga do Azure Machine Learning.
Para executar comandos da CLI do Azure e do Python, instale a CLI do Azure v2 e o SDK do Azure Machine Learning v2 para Python. A extensão
ml
da CLI do Azure é instalada automaticamente na primeira vez que você executa um comando da CLI do Azure Machine Learning.
Instale o pacote
mlflow
do SDK do MLflow e o pluginazureml-mlflow
do Azure Machine Learning para MLflow da seguinte forma:pip install mlflow azureml-mlflow
Dica
Você pode usar o pacote
mlflow-skinny
, que é um pacote MLflow leve sem dependências de servidor, interface do usuário, ciência de dados ou armazenamento do SQL. Esse pacote é recomendado para usuários que precisam, principalmente, dos recursos de acompanhamento e registro em log do MLflow sem importar o conjunto completo de recursos, incluindo implantações.Criar um workspace do Azure Machine Learning. Para criar um workspace, consulte Como criar os recursos necessários para começar. Analise quais permissões de acesso você precisa para executar suas operações do MLflow no seu espaço de trabalho.
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 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ê 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 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. Geralmente é útil usar o paradigma do gerente de contexto para lembrar de encerrar a execução:
with mlflow.start_run() as run:
# Your code
Quando você inicia uma nova execução com mlflow.start_run()
, pode ser útil especificar o parâmetro run_name
, que se traduz posteriormente no 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 aprendizado de máquina com suporte do MLflow determina o que acompanhar automaticamente para você.
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 por meio do SDK do MLflow.
Para exibir métricas e artefatos no estúdio:
Na página Trabalhos no workspace, selecione o nome do experimento.
Na página de detalhes do experimento, selecione a guia Métricas.
Selecione as métricas registradas para renderizar gráficos no lado direito. 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.
Depois de criar a exibição desejada, salve-a para usar no 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 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.