Acompanhar métricas com o MLflow
Ao treinar um modelo com um script, você pode incluir o MLflow nos scripts para acompanhar quaisquer parâmetros, métricas e artefatos. Ao executar o script como um trabalho no Azure Machine Learning, você poderá examinar todos os parâmetros de entrada e saídas para cada execução.
Entender o MLflow
O MLflow é uma plataforma de software livre, projetada para gerenciar o ciclo de vida completo do machine learning. Como é de software livre, ele pode ser usado ao treinar modelos em diferentes plataformas. Aqui, exploramos como podemos integrar o MLflow aos trabalhos do Azure Machine Learning.
Há duas opções para acompanhar trabalhos de machine learning com o MLflow:
- Habilitar o registro automático usando
mlflow.autolog() - Usar funções de log para acompanhar métricas personalizadas usando
mlflow.log_*
Antes de usar qualquer uma dessas opções, você precisa configurar o ambiente para usar o MLflow.
Incluir o MLflow no ambiente
Para usar o MLflow durante o trabalho de treinamento, os pacotes mlflow e azureml-mlflow do pip precisam ser instalados na máquina que executa o script. Portanto, você precisa incluir esses dois pacotes no ambiente. Você pode criar um ambiente referindo-se a um arquivo YAML que descreve o ambiente conda. Como parte do ambiente conda, você pode incluir esses 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 que o ambiente for definido e registrado, consulte-o ao enviar um trabalho.
Habilitar o registro automático
Ao trabalhar com uma das bibliotecas comuns para aprendizado de máquina, você pode habilitar o registro automático no MLflow. Registrar automaticamente parâmetros, métricas e artefatos de modelo sem que ninguém precise especificar o que precisa ser registrado.
Há suporte para o registro automático nas seguintes bibliotecas:
- Scikit-learn
- TensorFlow e Keras
- XGBoost
- LightGBM
- Spark
- Fastai
- Pytorch
Para habilitar o registro automático, adicione o seguinte código ao script de treinamento:
import mlflow
mlflow.autolog()
Registrar métricas com o MLflow
Em seu script de treinamento, você pode decidir qual métrica personalizada deseja registrar com o MLflow.
Dependendo do tipo de valor que você deseja registrar em log, use o comando MLflow para armazenar a métrica com a execução do experimento:
-
mlflow.log_param(): Registrar um único parâmetro de chave-valor. Use essa função para um parâmetro de entrada que você deseja registrar em log. -
mlflow.log_metric(): registre a métrica do par valor-chave único. O valor deve ser um número. Use essa função para qualquer saída que você deseja armazenar com a execução. -
mlflow.log_figure(): Registre uma figura matplotlib diretamente como um artefato. Use essa função para registrar gráficos em log sem salvá-los no disco primeiro. -
mlflow.log_image(): registre um objeto de imagem numpy ou PIL como um artefato. Use essa função para registrar imagens diretamente sem salvá-las no disco primeiro.
Para adicionar o MLflow a um script de treinamento existente, você pode adicionar o seguinte código:
import mlflow
reg_rate = 0.1
mlflow.log_param("Regularization rate", reg_rate)
Tip
Para obter uma visão geral completa de como usar o MLflow Tracking, leia a documentação do MLflow.
Submeter o trabalho
Por fim, você precisa enviar o script de treinamento como um trabalho no Azure Machine Learning. Quando você usa o MLflow em um script de treinamento, todos os parâmetros, métricas e artefatos rastreados são armazenados com a execução do trabalho. Você pode revisá-los para cada execução depois de enviar o trabalho.
Você configura a tarefa como de costume. Você só precisa verificar se o ambiente ao qual você se refere no trabalho inclui os pacotes necessários e o script descreve quais métricas você deseja registrar em log.