Treinar e rastrear modelos com MLflow e experimentos

Concluído

Sempre que você treinar um modelo, é importante que os resultados sejam reproduzíveis. Ao acompanhar e registrar seu trabalho em log, você pode examinar os resultados a qualquer momento e decidir qual é a melhor abordagem para treinar um modelo.

O MLflow é uma biblioteca de código aberto que acompanha e gerencia os experimentos de aprendizado de máquina. O MLflow Tracking em particular é um componente do MLflow que registra tudo sobre o modelo que você está treinando, tais como parâmetros, métricas e artefatos.

O MLflow já está instalado quando você abre um notebook no Microsoft Fabric. Para usá-lo a fim de acompanhar seus modelos, basta importar a biblioteca (com import mlflow) e iniciar o registro em log.

Criar uma experiência

Sempre que quiser acompanhar seu trabalho no Microsoft Fabric, primeiro você precisará criar um experimento. Cada vez que você treina um modelo, ele é rastreado como uma execução de experimento em seu workspace. Você pode criar um experimento usando a interface do usuário ou executando o seguinte código:

mlflow.set_experiment("<EXPERIMENT_NAME>")

Ao executar set_experiment(), você define o experimento fornecido como o experimento ativo. Um experimento será criado se não houver um existente com o nome fornecido.

Após a configuração do experimento, é possível começar a acompanhar o trabalho com o MLflow usando o seguinte:

  • Registro em log automático: registra métricas, parâmetros e modelos automaticamente, sem a necessidade de instruções de registro explícitas.
  • Registro em log personalizado: registra explicitamente métricas, parâmetros, modelos ou artefatos criados durante o treinamento do modelo.

Quando quiser rastrear parâmetros, métricas ou artefatos personalizados, você pode usar funções de registro em log como:

  • mlflow.log_param(): registra um único parâmetro do par chave-valor. Use essa função para um parâmetro de entrada que você deseja registrar.
  • mlflow.log_metric(): registra uma única métrica do par chave-valor. 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(): registra um arquivo em log. Use essa função para qualquer gráfico que você queira registrar, e salve como arquivo de imagem primeiro.
  • mlflow.log_model(): registra um modelo em log. Use essa função para criar um modelo do MLflow que pode incluir uma assinatura personalizada, um ambiente e exemplos de entrada.

Dica

Saiba como acompanhar modelos com o MLflow explorando a documentação oficial do MLflow.

Para usar as funções de registro em log em um notebook, inicie uma execução com mlflow.start_run() e registre qualquer métrica desejada:

from xgboost import XGBClassifier
from sklearn.metrics import accuracy_score
import mlflow

with mlflow.start_run():
    model = XGBClassifier(use_label_encoder=False, eval_metric="logloss")
    model.fit(X_train, y_train, eval_set=[(X_test, y_test)], verbose=False)
    y_pred = model.predict(X_test)

    accuracy = accuracy_score(y_test, y_pred)
    mlflow.log_metric("accuracy", accuracy)

Sempre que você treina e acompanha um modelo, uma nova execução de experimento é criada em um experimento. Ao treinar vários modelos que serão comparados, é recomendado agrupá-los sob o mesmo nome de experimento.

Recuperar métricas com o MLflow em um notebook

Para revisar execuções de experimentos e comparar modelos, você pode usar a UI ou usar a biblioteca MLflow em um notebook.

Você pode obter todos os experimentos ativos no espaço de trabalho usando o MLFlow:

experiments = mlflow.search_experiments(max_results=2)
for exp in experiments:
    print(exp.name)

Para recuperar um experimento específico, você pode executar:

exp = mlflow.get_experiment_by_name(experiment_name)
print(exp)

Dica

Explorar a documentação sobre como pesquisar experimentos com o MLflow

Recuperar execuções

O MLflow permite pesquisar execuções em qualquer experimento. Você precisa da ID do experimento ou do nome do experimento.

Por exemplo, quando você deseja recuperar as métricas de uma execução específica:

mlflow.search_runs(exp.experiment_id)

Por padrão, os experimentos são ordenados de maneira decrescente por start_time, que é a hora em que o experimento foi enfileirado no Microsoft Fabric. No entanto, você pode alterar esse padrão usando o parâmetro order_by.

Por exemplo, se você quiser classificar por hora de início e mostrar apenas os dois últimos resultados:

mlflow.search_runs(exp.experiment_id, order_by=["start_time DESC"], max_results=2)

Você também pode procurar uma execução com uma combinação específica nos hiperparâmetros:

mlflow.search_runs(
    exp.experiment_id, filter_string="params.num_boost_round='100'", max_results=2
)

Dica

Explorar a documentação sobre como pesquisar execuções com o MLflow