Acompanhe métricas com MLflow

Concluído

Quando treinas um modelo com um script, podes incluir o MLflow nos scripts para acompanhar quaisquer parâmetros, métricas e artefactos. Quando executas o script como um job no Azure Machine Learning, consegues rever todos os parâmetros de entrada e saídas de cada execução.

Compreender MLflow

O MLflow é uma plataforma open-source, concebida para gerir todo o ciclo de vida da aprendizagem automática. Por ser open source, pode ser usado ao treinar modelos em diferentes plataformas. Aqui, exploramos como podemos integrar o MLflow com empregos de Machine Learning em Azure.

Existem duas opções para acompanhar empregos de aprendizagem automática com MLflow:

  • Ativar o autologging usando mlflow.autolog()
  • Use funções de registo para acompanhar métricas personalizadas usando mlflow.log_*

Antes de poderes usar qualquer uma destas opções, precisas de configurar o ambiente para usar o MLflow.

Incluir MLflow no ambiente

Para usar o MLflow durante o treino, os pacotes mlflow e azureml-mlflow pip devem ser instalados no sistema de computação que executa o script. Por isso, deve incluir estes dois pacotes no ambiente. Pode criar um ambiente referindo-se a um ficheiro YAML que descreve o ambiente Conda. Como parte do ambiente Conda, pode incluir estes dois pacotes.

Por exemplo, neste ambiente personalizado, mlflow e azureml-mlflow são instalados usando pip.

name: mlflow-env
channels:
  - conda-forge
dependencies:
  - python=3.10
  - pip
  - pip:
    - numpy
    - pandas
    - scikit-learn
    - matplotlib
    - mlflow
    - azureml-mlflow

Depois de o ambiente estar definido e registado, certifique-se de o consultar ao submeter uma vaga.

Ativar o registo automático

Ao trabalhar com uma das bibliotecas comuns para aprendizagem automática, pode ativar o autolog no MLflow. O autologging regista parâmetros, métricas e artefactos do modelo sem que ninguém precise de especificar o que precisa de ser registado.

O autologging é suportado para as seguintes bibliotecas:

  • Scikit-learn
  • TensorFlow e Keras
  • XGBoost
  • LightGBM
  • Spark
  • Fastai
  • Pytorch

Para ativar o autolog, adicione o seguinte código ao seu script de treino:

import mlflow

mlflow.autolog()

Métricas logarítmicas com MLflow

No teu script de treino, podes decidir qual métrica personalizada queres registar com o MLflow.

Dependendo do tipo de valor que pretende registar, use o comando MLflow para armazenar a métrica com a execução do experimento:

  • mlflow.log_param(): Registar parâmetro chave-valor único. Usa esta função para um parâmetro de entrada que queres registar.
  • mlflow.log_metric(): Registar métrica chave-valor única. O valor tem de ser um número. Usa esta função para qualquer saída que queiras armazenar com a execução.
  • mlflow.log_figure(): Registar uma figura do matplotlib diretamente como artefacto. Use esta função para registar gráficos sem os guardar primeiro no disco.
  • mlflow.log_image(): Registar um objeto de imagem numpy ou PIL como artefacto. Use esta função para registar imagens diretamente sem as guardar primeiro no disco.

Para adicionar MLflow a um script de treino existente, pode adicionar o seguinte código:

import mlflow

reg_rate = 0.1
mlflow.log_param("Regularization rate", reg_rate)

Sugestão

Para uma visão geral completa de como usar o MLflow Tracking, leia a documentação do MLflow.

Submeter o trabalho

Por fim, precisas de submeter o script de treino como um trabalho no Azure Machine Learning. Quando usas MLflow num script de treino, todos os parâmetros, métricas e artefactos monitorizados são armazenados na execução do trabalho. Podes revisá-los em cada tentativa depois de submeteres o trabalho.

Configuras o trabalho como de costume. Só precisas de garantir que o ambiente a que te referes no trabalho inclui os pacotes necessários, e que o script descreve quais as métricas que queres registar.