Treinar e rastrear modelos com MLflow e experimentos
Sempre que você treina um modelo, você quer que os resultados sejam reproduzíveis. Ao acompanhar e registrar seu trabalho, você pode revisá-lo a qualquer momento e decidir qual é a melhor abordagem para treinar um modelo.
MLflow é uma biblioteca de código aberto para rastrear e gerenciar seus experimentos de aprendizado de máquina. Em particular, o MLflow Tracking é um componente do MLflow que registra tudo sobre o modelo que você está treinando, como parâmetros, métricas e artefatos.
O MLflow já está instalado quando você abre um bloco de anotações no Microsoft Fabric. Para usar o MLflow para rastrear seus modelos, você só precisa importar a biblioteca (com import mlflow
) e iniciar o registro.
Criar uma experimentação
Sempre que quiser acompanhar seu trabalho no Microsoft Fabric, primeiro você precisa criar um experimento. Cada vez que você treina um modelo, ele é rastreado como um experimento executado em seu espaço de trabalho. Você pode criar um experimento usando a interface do usuário (UI) ou executando o seguinte código:
mlflow.set_experiment("<EXPERIMENT_NAME>")
Ao executar set_experiment()
o , você define o experimento fornecido como o experimento ativo. Se um experimento com o nome fornecido não existir, um novo experimento será criado.
Depois que o experimento for definido, você poderá começar a acompanhar seu trabalho com o MLflow usando:
- Registro automático: registra automaticamente métricas, parâmetros e modelos sem a necessidade de instruções de log explícitas.
- Registro em log personalizado: registre explicitamente todas as métricas, parâmetros, modelos ou artefatos criados durante o treinamento do modelo.
Quando quiser controlar quaisquer 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 chave-valor. Use essa função para um parâmetro de entrada que você deseja registrar.mlflow.log_metric()
: Registra uma única métrica chave-valor. O valor deve ser um número. Use esta função para qualquer saída que você deseja armazenar com a execução.mlflow.log_artifact()
: Registra um arquivo. Use esta função para qualquer gráfico que você deseja registrar, salve como arquivo de imagem primeiro.mlflow.log_model()
: Registra um modelo. Use essa função para criar um modelo MLflow, que pode incluir uma assinatura personalizada, ambiente e exemplos de entrada.
Gorjeta
Saiba mais sobre como rastrear modelos com o MLflow explorando a documentação oficial do MLflow.
Para usar as funções de registro em log em um bloco de anotações, inicie uma execução e mlflow.start_run()
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 dentro de um experimento. Quando você treina vários modelos que deseja comparar, é recomendável agrupá-los sob o mesmo nome de experimento.
Recuperar métricas com MLflow em um bloco de anotações
Para revisar execuções de experimentos e comparar modelos, você pode usar a interface do usuário ou a biblioteca MLflow em um bloco de anotações.
Você pode obter todos os experimentos ativos no espaço de trabalho usando 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)
Gorjeta
Explore a documentação sobre como pesquisar experiências com o MLflow
Recuperar execuções
O MLflow permite que você pesquise execuções dentro de qualquer experimento. Você precisa do 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 descendente por start_time
, que é o tempo 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
)
Gorjeta
Explore a documentação sobre como pesquisar execuções com MLflow