Acompanhar métricas com o MLflow
Ao treinar um modelo com um script, você pode incluir o MLflow nos scripts para rastrear quaisquer parâmetros, métricas e artefatos. Ao executar o script como um trabalho no Azure Machine Learning, é possível examinar todas as saídas e parâmetros de entrada de cada execução.
Entender o MLflow
O MLflow é uma plataforma de código aberto que foi projetada para gerenciar o ciclo de vida completo do aprendizado de máquina. Como é de código aberto, ele pode ser usado ao treinar modelos em diferentes plataformas. Aqui, exploraremos como é possível integrar o MLflow aos trabalhos do Azure Machine Learning.
Há duas opções para acompanhar os trabalhos de aprendizado de máquina com o MLflow:
- Habilitar o autoregistro usando o
mlflow.autolog()
- Usar funções de log para acompanhar métricas personalizadas usando
mlflow.log_*
Para poder usar qualquer uma dessas opções, configure o ambiente para usar o MLflow.
Incluir o MLflow no ambiente
Para usar o MLflow durante o trabalho de treinamento, os pacotes pip mlflow
e azureml-mlflow
precisam ser instalados na computação que executa o script. Portanto, inclua esses dois pacotes no ambiente. Você pode criar um ambiente fazendo referência 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 o pip:
name: mlflow-env
channels:
- conda-forge
dependencies:
- python=3.8
- 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 autoregistro
Ao trabalhar com uma das bibliotecas comuns para aprendizado de máquina, você pode habilitar o registro em log automático no MLflow. O registro automático registra parâmetros, métricas e artefatos de modelos sem que seja necessário especificar o que precisa ser registrado.
O autoregistro tem suporte nas seguintes bibliotecas:
- Scikit-learn
- TensorFlow e Keras
- XGBoost
- LightGBM
- Spark
- Fastai
- Pytorch
Para habilitar o autoregistro, adicione o seguinte código ao seu script de treinamento:
import mlflow
mlflow.autolog()
Registrar métricas com MLflow
No script de treinamento, você pode decidir qualquer métrica personalizada que deseja registrar com o MLflow.
Dependendo do tipo de valor que você deseja registrar, use o comando do MLflow para armazenar a métrica com a execução experimental:
mlflow.log_param()
: registre o parâmetro com o par chave-valor único. Use essa função para um parâmetro de entrada que você deseja registrar.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ê queira armazenar com a execução.mlflow.log_artifact()
: registrar um arquivo. Use essa função para qualquer gráfico que você queira registrar, e salve como arquivo de imagem primeiro.
Para adicionar o MLflow a um script de treinamento existente, adicione o seguinte código:
import mlflow
reg_rate = 0.1
mlflow.log_param("Regularization rate", reg_rate)
Dica
Para obter uma visão geral completa de como usar o MLflow Tracking, leia a documentação do MLflow.
Enviar o trabalho
Por fim, você precisa enviar o script de treinamento como um trabalho no Azure Machine Learning. Ao usar o MLflow em um script de treinamento e o executar como um trabalho, todos os parâmetros, métricas e artefatos rastreados serão armazenados com a execução do trabalho.
Configure o trabalho como de costume. Você só precisa verificar se o ambiente ao qual se refere no trabalho inclui os pacotes necessários e se o script descreve quais métricas você deseja registrar.