Compartilhar via


Acompanhar experimentos e modelos de ML com o MLflow

Neste artigo, você aprenderá a usar o MLflow para acompanhar seus experimentos e execuções em espaço de trabalho do Azure Machine Learning.

Acompanhamento é o processo de salvar informações relevantes sobre experimentos executados. As informações salvas (metadados) variam de acordo com seu projeto e podem incluir:

  • Código
  • Detalhes do ambiente (como versão do sistema operacional, pacotes do Python)
  • Dados de entrada
  • Configurações de parâmetro
  • Modelos
  • Métricas da avaliação
  • Visualizações de avaliação (como matriz de confusão, gráficos de importância)
  • Resultados da avaliação (incluindo algumas previsões de avaliação)

Quando você está trabalhando com trabalhos no Azure Machine Learning, ele controla automaticamente algumas informações sobre seus experimentos, como código, ambiente e dados de entrada e saída. No entanto, para outros, como modelos, parâmetros e métricas, o construtor do modelo precisa configurar seu acompanhamento, pois são específicos para um cenário em particular.

Observação

Se você quiser acompanhar os experimentos em execução no Azure Databricks, consulte Acompanhar experimentos de Machine Learning do Azure Databricks com o MLflow e o Azure Machine Learning. Para saber mais sobre como acompanhar experimentos em execução no Azure Synapse Analytics, consulte Acompanhar experimentos de Machine Learning do Azure Synapse Analytics com o MLflow e o Azure Machine Learning.

Benefícios de acompanhar experimentos

Seja treinamento com trabalhos no Azure Machine Learning ou treinamento interativamente em notebooks, é altamente recomendável que os profissionais de aprendizado de máquina acompanhem experimentos. O acompanhamento de experimentos permite que você:

  • Organize todos os experimentos de aprendizado de máquina em um único lugar. Depois, você pode pesquisar e filtrar experimentos e analisar detalhadamente para ver detalhes sobre os experimentos que você executou anteriormente.
  • Compare experimentos, analise resultados e depure o treinamento do modelo com pouco trabalho extra.
  • Reproduza ou execute novamente experimentos para validar os resultados.
  • Melhore a colaboração, já que você pode ver o que outros colegas estão fazendo, compartilhe resultados do experimento e acesse dados de experimentos programaticamente.

Por que usar o MLflow para acompanhar experimentos?

Os espaços de trabalho do Azure Machine Learning são compatíveis com o MLflow. Isso significa que você pode usar o MLflow para acompanhar execuções, métricas, parâmetros e artefatos com seus espaços de trabalho do Azure Machine Learning. A principal vantagem de usar o MLflow para acompanhamento é que você não precisa alterar suas rotinas de treinamento para trabalhar com o Azure Machine Learning ou injetar qualquer sintaxe específica da nuvem.

Para obter integrações sobre todas as funcionalidades suportadas do MLflow e Azure Machine Learning, confira MLflow e Azure Machine Learning.

Limitações

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.

Pré-requisitos

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

    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. O mlflow-skinny é 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.

  • Um workspace do Azure Machine Learning. Para criar um espaço de trabalho, confira o tutorial Criar recursos de machine learning. Analise quais permissões de acesso você precisa para executar suas operações do MLflow no seu espaço de trabalho.

  • Se estiver efetuando o acompanhamento remoto (ou seja, acompanhando experimentos que estão sendo executados fora do Azure Machine Learning), configure o MLflow para apontar para o URI de acompanhamento do seu espaço de trabalho 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 as informações em experimentos e execuções (execuções são chamadas trabalhos no Azure Machine Learning). Por padrão, as execuções são registradas em um experimento chamado Padrão, que é criado automaticamente para você. Você pode configurar o experimento em que o rastreamento está acontecendo.

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 qualquer trabalho de treinamento no que o MLflow chama de execução. 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, o acompanhamento do MLflow começa quando você registra uma métrica, um parâmetro ou inicia um ciclo de treinamento e a funcionalidade de registro automático do Mlflow está habilitada. 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().

É altamente recomendável iniciar as execuções manualmente para que você não se esqueça de encerrá-las ao trabalhar em notebooks.

  • Para iniciar uma execução manualmente e encerrá-la quando terminar de trabalhar no notebook:

    mlflow.start_run()
    
    # Your code
    
    mlflow.end_run()
    
  • Geralmente é útil usar o paradigma do gerenciador de contexto para lembrar você 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 no nome da execução na interface do usuário do Azure Machine Learning e 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. No entanto, você também pode contar com a funcionalidade de registro automático do MLflow. Cada estrutura de machine learning com suporte do MLflow decide o que rastrear 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 a qualquer momento ou acessá-los programaticamente por meio do SDK do MLflow.

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

  1. Acesse o Estúdio do Azure Machine Learning.

  2. Navegue até o workspace.

  3. Localize o experimento pelo nome no seu espaço de trabalho.

  4. 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 conforme desejar.

  5. 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.

    Captura de tela da exibição de métricas.

Para acessar ou consultar métricas, parâmetros e artefatos programaticamente através 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

Para métricas, o código de exemplo anterior retornará apenas o último valor de uma determinada métrica. Se você quiser recuperar todos os valores de uma determinada métrica, use 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 que você registrou, 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, confira Consultar e comparar experimentos e execuções com o MLflow.