Come configurare il monitoraggio con Weights & Biases (passo dopo passo)
Se gestisci esperimenti di apprendimento automatico e registri tutto in fogli di calcolo o file di testo sparsi, stai seriamente perdendo qualcosa: configurare il monitoraggio con Weights & Biases ti farà risparmiare decine di ore faticose e notti insonni a lottare con dati sperimentali disorganizzati.
Cosa costruirai e perché è importante
Stiamo configurando il monitoraggio Weights & Biases per seguire, visualizzare e debugare efficacemente le esecuzioni di apprendimento automatico—niente più metriche perse o supposizioni sugli iperparametri che hanno fatto salire il tuo modello.
Requisiti
- Python 3.8+ (Weights & Biases è abbastanza tollerante, ma rimani su 3.8 o versioni successive per la compatibilità)
- pip installato, preferibilmente versione 23.0+ (gli aggiornamenti correggono spesso bug relativi alle dipendenze dei pacchetti)
- Crea un account gratuito Weights & Biases su https://wandb.ai
- Familiarità di base con gli script di addestramento di apprendimento automatico (funzionano TensorFlow, PyTorch o sklearn)
- Familiarità con gli strumenti da riga di comando (il CLI di Weights & Biases è indispensabile)
Configurazione passo dopo passo
Passo 1: Installare il pacchetto Python Weights & Biases
pip install wandb
Questo è l’unico pacchetto di cui hai bisogno per monitorare le tue esecuzioni ML. Si integra con il tuo codice e ti fornisce dashboard in tempo reale, monitoraggio delle metriche e gestione degli artefatti.
Perché? Perché il client wandb gestisce tutto ciò che riguarda il caricamento, la sincronizzazione e la connessione con il server automaticamente. Ti evita il mal di testa legato alla registrazione manuale.
Trappole comuni: Se riscontri un conflitto di versioni o un problema di dipendenza fallita, aggiorna pip e setuptools:
pip install --upgrade pip setuptools
Passo 2: Accedi al tuo account Wandb
wandb login
Questo comando richiede la tua chiave API. Vai nelle impostazioni del tuo account su https://wandb.ai/settings e copia la tua chiave API. Incollala quando il CLI lo richiede.
Perché? Devi autenticare il tuo strumento CLI con il tuo progetto cloud affinché le tue esecuzioni siano collegate al tuo account utente e ai tuoi progetti.
Attenzione: Se incolli accidentalmente degli spazi o premi invio troppo presto, wandb rifiuterà la tua chiave e mostrerà un errore criptico riguardo a un fallimento di autenticazione.
Passo 3: Inizializzare Wandb nel tuo script di addestramento
import wandb
# Avviare una nuova esecuzione
wandb.init(project="my-ml-project", entity="your-username")
# Esempio: Registrare gli iperparametri
config = wandb.config
config.learning_rate = 0.001
config.batch_size = 32
Inserire questo pezzo di codice all’inizio del tuo ciclo principale di addestramento consente a wandb di catturare tutto ciò che accade in questa esecuzione.
Perché? Il passo di inizializzazione crea un nuovo oggetto esecuzione sul server, permettendoti di registrare metriche e artefatti in tempo reale. Senza di ciò, non vedrai alcun dato nel tuo spazio di lavoro.
Errore comune: Se dimentichi di chiamare wandb.init(), le tue chiamate a wandb.log() non faranno nulla e questo può fallire silenziosamente. Controlla sempre questo.
Passo 4: Registrare le metriche e gli iperparametri durante l’addestramento
for epoch in range(num_epochs):
# Allena il tuo modello qui
train_loss = compute_train_loss()
val_loss = compute_val_loss()
# Registra le metriche in wandb
wandb.log({
"epoch": epoch,
"train_loss": train_loss,
"val_loss": val_loss
})
Questo pezzo di codice deve trovarsi all’interno del tuo ciclo principale di addestramento. wandb.log() invia i dati al server in modo asincrono.
Perché? La registrazione ti permette di seguire la performance del modello passo dopo passo. Puoi individuare l’overfitting o i plateau e modificare gli iperparametri di conseguenza.
Errore tipico: Non inviare i log abbastanza frequentemente, il che porta a dati di esecuzione incompleti se il tuo compito fallisce. Assicurati che wandb.log() sia chiamato dopo ogni aggiornamento significativo (di solito ogni epoca o lotto).
Passo 5: Salvare gli artefatti del modello per il tracciamento delle versioni
# Salvare il tuo checkpoint di modello localmente
torch.save(model.state_dict(), "model.pt")
# Caricare il checkpoint come un artefatto in wandb
artifact = wandb.Artifact('model', type='model')
artifact.add_file("model.pt")
wandb.log_artifact(artifact)
Gli artefatti di Wandb ti permettono di tracciare le versioni dei modelli, dei set di dati o di altri risultati. Questo rende il tuo addestramento ripetibile e debugabile.
Perché? Gli artefatti permettono flussi di lavoro collaborativi e integrazione con CI/CD. Puoi confrontare modelli e persino tornare facilmente ai checkpoint precedenti.
Attenzione: Dimenticare di chiamare wandb.log_artifact() significa che i tuoi file salvati non appariranno nella dashboard del progetto. Inoltre, grandi artefatti potrebbero fallire silenziosamente se si raggiungono i limiti di archiviazione—controlla i limiti di utilizzo del tuo progetto.
Passo 6: Visualizzare i risultati nella dashboard di Wandb
Apri https://wandb.ai e naviga fino al tuo progetto. Vedrai grafici in tempo reale aggiornarsi con le tue metriche registrate, iperparametri e artefatti.
Perché? La visualizzazione è la funzionalità essenziale che rende la configurazione del monitoraggio con Weights & Biases davvero utile—vedere le tendenze delle tue metriche ti aiuta a comprendere il comportamento del modello in tempo reale.
Attenzione: Se le tue metriche non appaiono, verifica che il tuo wandb.init() abbia il nome del progetto corretto e che tu sia connesso al giusto account (entità). Controlla anche che la tua rete consenta le connessioni cloud (a volte, i firewall aziendali bloccano questo).
Passo 7: Integrazione avanzata – Automatizzare le esecuzioni Wandb con CI/CD
# Esempio di snippet di workflow GitHub Actions
name: Run Training and Log to W&B
on: [push]
jobs:
train:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Configurare Python
uses: actions/setup-python@v2
with:
python-version: 3.9
- name: Installare le dipendenze
run: pip install wandb torch
- name: Connessione a Wandb
run: echo ${{ secrets.WANDB_API_KEY }} | wandb login
- name: Eseguire il script di addestramento
run: python train.py
Questo script mostra un workflow CI automatizzato con GitHub che esegue il tuo addestramento e invia automaticamente i risultati a wandb.
Perché? I team a livello di produzione hanno bisogno di un monitoraggio che si integri nei pipeline—le esecuzioni manuali sono noiose e soggette a errori.
Problemi potenziali: Devi memorizzare la tua chiave API Wandb in modo sicuro come variabile d’ambiente segreta (non mai confermarla). Dimenticare questo significa che i compiti CI falliranno silenziosamente l’autenticazione.
Le trappole che nessuno ti dice
- Quote e limiti : Il tuo piano gratuito su Wandb ti consente di registrare circa alcune migliaia di esecuzioni al mese prima di raggiungere i limiti di larghezza di banda o di archiviazione degli artefatti. Se esegui più di 10.000 epoche o set di dati di grandi dimensioni, aspettati un rallentamento. Non riceverai avvisi espliciti immediatamente; controlla semplicemente il tuo quota di progetto.
Soluzione : Pulisci regolarmente le vecchie esecuzioni e archivia i grandi artefatti esternamente.
- Latenza tra la registrazione e l’aggiornamento del cruscotto : Wandb carica in modo asincrono, quindi a volte le tue ultime metriche appaiono con qualche secondo di ritardo, il che è frustrante se stai facendo debug a un livello di granularità di batch.
Soluzione : Aggiungi `wandb.log(…, commit=True)` per inviare i dati a punti critici.
- Incoerenze ambientali : Wandb monitora le versioni dei pacchetti del tuo ambiente Python. Se il tuo codice viene eseguito in un ambiente Docker o remoto senza elenchi di pacchetti precisi (requirements.txt), la tua esperienza potrebbe non essere riproducibile nonostante le metriche registrate.
Soluzione : Fissa sempre e registrare le versioni dei pacchetti. - Problemi di rete in ambienti ristretti : I server aziendali e accademici spesso bloccano i download di telemetria di Wandb per impostazione predefinita, causando fallimenti silenziosi o blocchi indefiniti.
Soluzione : Utilizza la modalità offline locale (`wandb.init(mode=”offline”)`) e sincronizza più tardi, oppure metti in whitelist i domini sui firewall. - Registrazione di troppe informazioni : Registrare ogni metrica di batch può gonfiare le tue esecuzioni e rallentare la tua interfaccia. Usa statistiche di riepilogo o campiona per intervalli.
Soluzione : Registra a livello di epoca o ogni N batch, e non ogni batch.
Esempio completo di codice funzionante
import wandb
import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import DataLoader, TensorDataset
# Dataset fittizio
X = torch.randn(100, 10)
y = torch.randint(0, 2, (100,))
dataset = TensorDataset(X, y)
loader = DataLoader(dataset, batch_size=16, shuffle=True)
# Classificatore binario semplice
class SimpleModel(nn.Module):
def __init__(self):
super().__init__()
self.fc = nn.Linear(10, 2)
def forward(self, x):
return self.fc(x)
model = SimpleModel()
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)
# Inizializzare un'esecuzione wandb
wandb.init(project="my-ml-project", entity="your-username")
wandb.config.update({
"epochs": 5,
"batch_size": 16,
"learning_rate": 0.001,
})
for epoch in range(wandb.config.epochs):
running_loss = 0.0
for inputs, labels in loader:
optimizer.zero_grad()
outputs = model(inputs)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
running_loss += loss.item()
avg_loss = running_loss / len(loader)
print(f"Epoca {epoch+1}, Perdita: {avg_loss:.4f}")
wandb.log({"epoch": epoch + 1, "loss": avg_loss})
# Salvare e caricare l'artefatto del modello
torch.save(model.state_dict(), "model.pt")
artifact = wandb.Artifact('simple-model', type='model')
artifact.add_file("model.pt")
wandb.log_artifact(artifact)
wandb.finish()
Quali sono i prossimi passi
Una volta che hai configurato i tuoi pesi & bias per il monitoraggio e la registrazione, ti consiglio di aggiungere wandb Sweeps per automatizzare la ricerca degli iperparametri. È molto meglio che riavviare manualmente gli script per ogni combinazione di parametri e ti consente di concentrarti sui risultati piuttosto che su esperimenti complicati.
FAQ
Q: Posso utilizzare weights & biases con framework diversi da PyTorch?
R: Assolutamente. Wandb supporta TensorFlow, Keras, Hugging Face Transformers, sklearn—l’hai nominato. Fondamentalmente avvolge il tuo ciclo di addestramento e registra i dati. Devi solo inserire chiamate wandb.init() e wandb.log() nei posti giusti.
Q: Come mantenere al sicuro le informazioni di identificazione sensibili quando utilizzo wandb in pipeline CI?
R: Memorizza la tua chiave API Wandb nel sistema di gestione dei segreti del tuo provider CI (ad esempio, GitHub Secrets, variabili CI GitLab). Non codificare mai le chiavi nel codice sorgente. Poi, usa variabili d’ambiente per fornire le chiavi durante l’esecuzione CI, come echo $WANDB_API_KEY | wandb login.
Q: È possibile effettuare una registrazione wandb offline e sincronizzare più tardi?
R: Sì. Puoi inizializzare wandb con wandb.init(mode="offline"), il che memorizza i log localmente. In seguito, esegui wandb sync per caricare i dati delle esecuzioni passate quando l’accesso alla rete è ristabilito. Questo è utile per ambienti isolati.
Dati del progetto e delle esecuzioni Wandb in un colpo d’occhio
Per capire perché la configurazione dei pesi & bias per il tracciamento supera i tradizionali log di fogli di calcolo, ecco una rapida tabella che confronta il monitoraggio manuale tipico con il monitoraggio wandb su metriche chiave:
| Aspetto | Registrazione manuale (Excel/CSV) | Monitoraggio dei pesi & bias |
|---|---|---|
| Visibilità in tempo reale | No (deve aspettare di aprire file) | Sì (cruscotti dal vivo che si aggiornano automaticamente) |
| Monitoraggio degli iperparametri | Spesso dimenticato o incoerente | Automatizzato; sempre legato alle esecuzioni |
| Versioning degli artefatti del modello | Backup manuali dei file, nessuna metadati | Controllo delle versioni degli artefatti integrato |
| Collaborazione | Inviare file via email o condividere cartelle | I team condividono progetti dal vivo con accesso basato sui ruoli |
| Integrazione con CI/CD | Passaggi manuali | Automatizzato tramite script e API |
| Limiti di archiviazione | Spazio su disco locale | Quote cloud e opzioni di archiviazione |
Raccomandazioni personalizzate per diversi profili di sviluppatori
Se sei un hobbista che lavora su piccoli modelli sul tuo portatile, inizia a configurare wandb localmente con la modalità offline attivata per non doverti preoccupare dei problemi di rete. L’interfaccia e la registrazione daranno alle tue esperienze un senso di organizzazione che i fogli di calcolo non possono eguagliare.
Se sei un data scientist che gestisce più modelli e collaboratori, investi tempo per integrare le esecuzioni wandb con i repository Git del tuo team e l’infrastruttura cloud. Automatizza la tua registrazione e gli artefatti—credi a me, nessuno vuole chiedere un nuovo esport CSV.
Per gli ingegneri ML che costruiscono pipeline di produzione, integra i sweeps wandb e l’automazione CI/CD sin dall’inizio del tuo processo. Vorrai uno stato di esperienza coerente, opzioni di ripristino e monitoraggio integrato nei cicli di pubblicazione per evitare i buchi neri di debug settimane più tardi.
Dati validi al 21 marzo 2026. Fonti: Sito ufficiale di Weights & Biases, Documentazione Weights & Biases
Articoli correlati
- Sicurezza dei network di bot IA
- Governance della sicurezza dei bot IA
- Grammarly è un’IA? Come lo strumento di scrittura utilizza l’intelligenza artificiale
🕒 Published: