Treinar e rastrear modelos com MLflow e experimentos
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