Experiment Tracking
O acompanhamento de experimentos registra os parâmetros, as versões do código e dos dados, as métricas e os artefatos de cada execução de treinamento de ML, permitindo comparar e reproduzir as execuções.
O acompanhamento de experimentos consiste em registrar tudo sobre cada execução de treinamento de aprendizado de máquina em um único repositório pesquisável, incluindo a versão do código e dos dados, as configurações, o ambiente, as métricas ao longo do tempo e os arquivos de saída, como pesos e gráficos. Um projeto que testa dezenas de taxas de aprendizado, configurações de aumento de dados e tamanhos de modelo gera execuções que parecem iguais no disco. O acompanhamento registra a configuração por trás de cada resultado, permitindo comparar e reproduzir a melhor execução e rastreá-la meses depois. O TensorBoard, lançado com o TensorFlow em 2015, popularizou as curvas de treinamento ao vivo, e a Databricks abriu o código do MLflow em 2018, com o acompanhamento entre seus três componentes originais. Weights & Biases, Comet, ClearML e DVC são outras ferramentas de acompanhamento bastante usadas.
O que uma ferramenta de acompanhamento registra#
Cada execução recebe um ID exclusivo e pertence a um experimento, um grupo nomeado de execuções relacionadas. Um registro típico de execução contém:
- Hiperparâmetros: Taxa de aprendizado, tamanho do lote, otimizador, arquitetura do modelo, semente aleatória e todas as outras configurações que influenciam o treinamento.
- Métricas: Perdas e pontuações de treinamento e validação registradas por etapa ou época, além de métricas do sistema, como memória e utilização da GPU.
- Artefatos: Checkpoints, matrizes de confusão, previsões de amostra e arquivos de configuração.
- Linhagem: O commit do Git, a versão do conjunto de dados, as versões dos pacotes, o hardware e o autor responsáveis pela execução.
O registro é feito por meio de uma chamada do cliente para cada valor ou automaticamente por integrações de registro automático que capturam os parâmetros e as métricas de um framework sem código adicional. Um servidor de acompanhamento compartilhado reúne as execuções de todos os laptops, máquinas na nuvem e tarefas de CI de uma equipe. Seu painel sobrepõe as curvas de perda das execuções selecionadas e permite filtrá-las por qualquer parâmetro ou métrica, facilitando a identificação de problemas como sobreajuste.
O treinamento do Ultralytics YOLO grava os argumentos de cada execução em args.yaml e suas perdas e métricas por época em results.csv. As integrações integradas enviam os mesmos valores ao MLflow, ao Comet, ao ClearML ou ao DVC assim que o pacote correspondente é instalado. O TensorBoard e o Weights & Biases são ativados por meio de yolo settings. Os argumentos de treinamento project e name se tornam os nomes do experimento e da execução no MLflow, para que uma varredura do YOLO26 chegue ao rastreador já organizada.
Comparação e reprodução de execuções#
Os painéis mostram uma métrica em relação a um parâmetro ao longo de várias execuções ou criam gráficos de coordenadas paralelas que relacionam as configurações de cada execução à sua pontuação, revelando quais configurações importam em uma varredura. Reproduzir uma execução exige mais do que seus hiperparâmetros: o registro também precisa incluir o commit do código, a versão exata dos dados, as versões dos pacotes e a semente aleatória, pois os kernels da GPU e a ordem de carregamento dos dados podem alterar ligeiramente os resultados, mesmo entre execuções que, de resto, são idênticas.
Este script do MLflow treina uma árvore de decisão com quatro profundidades nos dígitos manuscritos do scikit-learn, registra cada profundidade como parâmetro e a precisão de validação como métrica e, em seguida, consulta o experimento como uma tabela:
import mlflow
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
# Store runs in a local SQLite file and group them under one experiment
mlflow.set_tracking_uri("sqlite:///mlflow.db")
mlflow.set_experiment("digits-tree-depth")
X_train, X_val, y_train, y_val = train_test_split(*load_digits(return_X_y=True), random_state=0)
# One tracked run per setting: the parameter goes in, the metric comes out
for depth in [2, 4, 8, 16]:
with mlflow.start_run(run_name=f"depth-{depth}"):
model = DecisionTreeClassifier(max_depth=depth, random_state=0).fit(X_train, y_train)
mlflow.log_param("max_depth", depth)
mlflow.log_metric("val_accuracy", model.score(X_val, y_val))
# Query the experiment like a table, best run first
runs = mlflow.search_runs(order_by=["metrics.val_accuracy DESC"])
print(runs[["params.max_depth", "metrics.val_accuracy"]])Em um banco de dados novo, a tabela lista primeiro a profundidade 16, com precisão de validação de 0.838; depois a profundidade 8, com 0.818; a profundidade 4, com 0.533; e a profundidade 2, com 0.318. Executar mlflow ui na mesma pasta com --backend-store-uri sqlite:///mlflow.db abre as mesmas execuções no navegador.
Acompanhamento de experimentos vs. práticas relacionadas#
O acompanhamento de experimentos é uma etapa das operações de aprendizado de máquina (MLOps), junto de três práticas que costumam ser confundidas com ele:
- Registro de modelos: Mantém os poucos modelos treinados que valem a pena implantar, vinculando cada versão à execução acompanhada que a produziu.
- Monitoramento de modelos: Acompanha as entradas, as saídas e a precisão de um modelo implantado em produção, depois que o acompanhamento já cumpriu sua função durante o desenvolvimento.
- Ajuste de hiperparâmetros: Ferramentas de busca, como Optuna e Ray Tune, iniciam muitas execuções automaticamente, e a ferramenta de acompanhamento armazena e classifica todas elas.










