Pular para o conteúdo principal

Weights & Biases (W&B)

Definição

Weights & Biases (comumente abreviado como W&B ou wandb) é uma plataforma MLOps nativa em nuvem que fornece rastreamento de experimentos, versionamento de datasets e modelos, otimização de hiperparâmetros e relatórios interativos em um único produto integrado. Fundada em 2017 e amplamente adotada tanto na pesquisa acadêmica quanto na indústria, o W&B é especialmente popular entre equipes que treinam modelos de aprendizado profundo que produzem saídas de mídia ricas — imagens, áudio, vídeo, nuvens de pontos — que se beneficiam da inspeção visual durante o treinamento.

A proposta de valor central do W&B é que ele requer quase nenhuma infraestrutura para começar: você se inscreve em uma conta gratuita, instala o pacote Python wandb, adiciona wandb.init() ao seu script e tudo é registrado automaticamente na nuvem do W&B. A plataforma é organizada em projetos (coleções de execuções relacionadas), runs (execuções de treinamento individuais), artifacts (datasets e arquivos de modelos versionados), sweeps (busca automatizada de hiperparâmetros) e reports (documentos narrativos compartilháveis que incorporam gráficos ao vivo).

Ao contrário de soluções auto-hospedadas como o MLflow, o W&B gerencia toda a infraestrutura backend. Isso elimina o ônus operacional, mas significa que os dados saem de suas instalações — uma consideração relevante para indústrias regulamentadas. O W&B oferece opções de implantação em nuvem privada e on-premise para clientes corporativos que precisam de garantias de residência de dados, embora estas exijam um plano pago.

Como funciona

Inicialização e auto-logging

Chamar wandb.init(project="...", config={...}) inicia uma execução, envia a configuração ao W&B e retorna um objeto de execução. Muitos frameworks populares (PyTorch Lightning, Hugging Face Trainer, Keras, XGBoost, scikit-learn) oferecem callbacks ou integrações W&B que registram automaticamente gradientes, programações de taxa de aprendizado e métricas de avaliação sem código adicional. Nos bastidores, um thread em segundo plano agrupa e comprime os dados de log antes de enviá-los via HTTPS, minimizando a sobrecarga de treinamento.

Painéis em tempo real

A UI do W&B renderiza curvas de métricas, utilização do sistema (GPU/CPU/memória) e mídia à medida que a execução progride. Múltiplas execuções podem ser sobrepostas no mesmo gráfico com codificação de cores automática. As execuções podem ser filtradas e agrupadas por qualquer dimensão de configuração, permitindo diagnóstico visual rápido.

Sweeps

Um sweep é definido por um YAML ou dicionário Python especificando espaço de busca, estratégia de busca (grid, aleatória ou bayesiana) e critérios de parada. O controlador de sweep do W&B coordena múltiplos agentes em execução paralela, cada um selecionando combinações de hiperparâmetros do controlador e registrando os resultados de volta. A busca bayesiana adapta-se com base nos resultados observados, convergindo mais rapidamente do que a busca em grid.

Artifacts

W&B Artifacts versiona datasets, checkpoints de modelos e saídas de avaliação como objetos endereçados por conteúdo. Um artifact é vinculado à execução que o produziu e às execuções que o consumiram, criando um grafo de linhagem de dados. Você pode baixar uma versão específica de artifact com duas linhas de Python, tornando a reprodutibilidade de datasets e modelos tão simples quanto especificar uma string de versão.

Reports

Os reports são documentos interativos que incorporam gráficos ao vivo do W&B, comparações de execuções e narrativa em markdown. Eles são a principal superfície de colaboração: um pesquisador pode compartilhar um link de report em uma mensagem do Slack ou PR do GitHub para compartilhar evidências experimentais reproduzíveis sem exportar imagens estáticas.

Quando usar / Quando NÃO usar

Usar quandoEvitar quando
Treinando modelos de aprendizado profundo e precisando de registro de mídia ricoOs dados não podem sair das instalações e você não pode pagar o plano enterprise on-premise
Colaboração em equipe, compartilhamento de resultados e relatórios narrativos são importantesÉ necessária uma solução completamente de código aberto e auto-hospedada sem dependência SaaS
Desejando otimização de hiperparâmetros integrada sem ferramentas adicionaisOs experimentos são simples e a sobrecarga de uma conta SaaS não é justificada
A equipe trabalha em pesquisa ou academia e se beneficia do acesso ao nível gratuitoO orçamento é apertado e os recursos do nível pago são necessários para o tamanho da equipe

Comparações

CritérioW&BMLflow
Facilidade de configuraçãoConta SaaS gratuita; sem infraestrutura; wandb login + duas linhas de códigoAuto-hospedável localmente; sem conta; mlflow ui para iniciar
Qualidade da UIPolida, interativa; construída para cargas de trabalho visuais e com muita mídiaLimpa e funcional; melhor para comparação de métricas tabulares
ColaboraçãoEspaços de trabalho de equipe nativos, relatórios, links de compartilhamento, integração com SlackRequer servidor compartilhado; sem recursos de colaboração integrados no OSS
PreçoGratuito para indivíduos; pago para equipes maiores; enterprise para on-premGratuito e de código aberto; Databricks Managed MLflow tem custo adicional
Otimização de hiperparâmetrosSweeps integrados com Bayesian/grid/aleatório + parada antecipadaRequer ferramentas externas (Optuna, Ray Tune)

Exemplos de código

# wandb_tracking_example.py
# W&B experiment tracking: logs config, metrics, images, and registers a model artifact.
# pip install wandb scikit-learn matplotlib Pillow

import wandb
import numpy as np
import matplotlib.pyplot as plt
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.metrics import (
accuracy_score, f1_score, confusion_matrix, ConfusionMatrixDisplay
)
import os, tempfile

run = wandb.init(
project="digits-classification",
name="random-forest-v1",
config={
"n_estimators": 150,
"max_depth": 12,
"min_samples_split": 4,
"random_state": 7,
"dataset": "sklearn-digits",
},
)
cfg = wandb.config

X, y = load_digits(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, stratify=y, random_state=cfg.random_state
)

clf = RandomForestClassifier(
n_estimators=cfg.n_estimators,
max_depth=cfg.max_depth,
min_samples_split=cfg.min_samples_split,
random_state=cfg.random_state,
)
clf.fit(X_train, y_train)

y_pred = clf.predict(X_test)
metrics = {
"accuracy": accuracy_score(y_test, y_pred),
"f1_macro": f1_score(y_test, y_pred, average="macro"),
"n_train": len(X_train),
"n_test": len(X_test),
}
wandb.log(metrics)
run.finish()

Recursos práticos

  • W&B Official Documentation — Referência completa cobrindo o SDK Python, integrações, sweeps, artifacts e reports.
  • W&B Quickstart — Registre sua primeira execução do W&B em menos de cinco minutos com um exemplo mínimo.
  • W&B Sweeps Documentation — Guia abrangente para configurar e executar buscas distribuídas de hiperparâmetros.
  • W&B Fully Connected Blog — Blog para praticantes com tutoriais aprofundados, relatórios de benchmark e artigos de engenharia de ML.
  • Hugging Face + W&B Integration — Guia para registrar automaticamente todas as métricas do Hugging Face Trainer com um único argumento report_to="wandb".

Veja também