Come configurare il monitoraggio con Weights & Biases (passo dopo passo)
Se gestisci esperimenti di apprendimento automatico e annoti tutto in fogli di calcolo o file di testo sparsi, stai perdendo seriamente qualcosa: la configurazione del monitoraggio con Weights & Biases ti farà risparmiare decine di ore estenuanti e notti insonni a combattere con dati sperimentali disordinati.
Ciò che costruirai e perché è importante
Stiamo impostando il monitoraggio Weights & Biases per seguire, visualizzare e fare debugging in modo efficace delle esecuzioni di apprendimento automatico—niente più metriche perse o congetture sugli iperparametri che hanno fatto lievitare 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 risolvono spesso bug legati 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 (funziona con TensorFlow, PyTorch o sklearn)
- Familiarità con gli strumenti da linea di comando (il CLI di Weights & Biases è essenziale)
Configurazione passo dopo passo
Passo 1: Installare il pacchetto Python Weights & Biases
pip install wandb
È l’unico pacchetto di cui hai bisogno per monitorare le tue esecuzioni ML. Si integra nel tuo codice e ti fornisce dashboard in tempo reale, tracciamento 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 in modo automatico. Questo ti evita il mal di testa legato alla registrazione manuale.
Trappole comuni: Se riscontri un conflitto di versione o un problema di dipendenza non riuscita, 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 restituirà un errore criptico riguardo a un fallimento di autenticazione.
Passo 3: Inizializzare Wandb nel tuo script di addestramento
import wandb
# Iniziare 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 permette a wandb di catturare tutto ciò che accade in questa esecuzione.
Perché? Il passo di inizializzazione crea un nuovo oggetto di esecuzione lato server, consentendoti di registrare le metriche e gli artefatti in tempo reale. Senza questo, 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):
# Allenare il tuo modello qui
train_loss = compute_train_loss()
val_loss = compute_val_loss()
# Registrare 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 consente di monitorare le prestazioni del modello passo dopo passo. Puoi individuare il sovradattamento o i plateau e regolare gli iperparametri di conseguenza.
Errore comune: Non inviare i log con sufficiente frequenza, il che porta a dati di esecuzione incompleti se il tuo compito fallisce. Assicurati che wandb.log() venga chiamato dopo ogni aggiornamento significativo (di solito ogni epoca o batch).
Passo 5: Salvare gli artefatti del modello per il tracciamento delle versioni
# Salvare il tuo checkpoint del modello localmente
torch.save(model.state_dict(), "model.pt")
# Caricare il checkpoint come artefatto in wandb
artifact = wandb.Artifact('model', type='model')
artifact.add_file("model.pt")
wandb.log_artifact(artifact)
Gli artefatti di Wandb ti consentono 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 consentono 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, artefatti di grandi dimensioni potrebbero fallire silenziosamente se vengono raggiunti 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à fondamentale 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, controlla 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 lo script di addestramento
run: python train.py
Questo script mostra un workflow CI automatizzato con GitHub che esegue il tuo addestramento e spinge i risultati verso wandb automaticamente.
Perché? I team di livello produzione necessitano 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 validarla). Dimenticare questo significa che i compiti CI falliscono silenziosamente l’autenticazione.
Le trappole che nessuno ti dice
- Quote e limiti: Il tuo livello 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 voluminosi, aspettati un rallentamento. Non riceverai avvertimenti espliciti immediatamente; verifica semplicemente il tuo quota di progetto.
Soluzione: Pulisci regolarmente le vecchie esecuzioni e archivia i grandi artefatti esternamente.
- Latency tra la registrazione e l’aggiornamento del dashboard: Wandb carica in modo asincrono, quindi a volte le tue ultime metriche appaiono con qualche secondo di ritardo, il che è frustrante se stai eseguendo il debug a un livello di granularità del lotto.
Soluzione: Aggiungi `wandb.log(…, commit=True)` per inviare i dati a punti critici.
- Incoerenze dell’ambiente: 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 esatti (requirements.txt), la tua esperienza potrebbe non essere riproducibile nonostante le metriche registrate.
Soluzione: Fissa sempre e registra le versioni dei pacchetti. - Problemi di rete in ambienti ristretti: I server aziendali e accademici bloccano spesso i download della 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 aggiungi ai domini autorizzati sui firewall. - Registrazione di troppi dati: Registrare ogni metrica di lotto può gonfiare le tue esecuzioni e rallentare la tua interfaccia. Utilizza statistiche di riepilogo o campiona per intervalli.
Soluzione: Registra a livello di epoca o ogni N lotti, e non ogni lotto.
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
# Gioco di dati 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 configurati i tuoi pesi & bias per il monitoraggio e la registrazione, ti consiglio di aggiungere wandb Sweeps per automatizzare l’ottimizzazione degli iperparametri. È di gran lunga migliore rispetto al rilancio manuale degli script per ogni combinazione di parametri e ti consente di concentrarti sui risultati piuttosto che su esperimenti complicati.
FAQ
Q: Posso usare weights & biases con framework diversi da PyTorch?
R: Assolutamente. Wandb supporta TensorFlow, Keras, Hugging Face Transformers, sklearn—tu lo nomini. Fondamentalmente avvolge il tuo ciclo di addestramento e registra i dati. Devi solo inserire chiamate a wandb.init() e wandb.log() nei posti giusti.
Q: Come mantenere sicure le informazioni sensibili quando utilizzo wandb in pipeline CI?
R: Archivia la tua chiave API Wandb nel sistema di gestione dei segreti del tuo fornitore 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 registrare wandb offline e sincronizzare più tardi?
R: Sì. Puoi inizializzare wandb con wandb.init(mode="offline"), il che mette in cache i registri localmente. Più tardi, esegui wandb sync per caricare i dati delle esecuzioni precedenti quando l’accesso alla rete viene ripristinato. È 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 monitoraggio vince sui tradizionali registri di fogli di calcolo, ecco una tabella rapida che confronta il monitoraggio manuale tipico rispetto al monitoraggio wandb su metriche chiave:
| Aspetto | Registrazione manuale (Excel/CSV) | Monitoraggio dei pesi & bias |
|---|---|---|
| Visibilità in tempo reale | No (devi aspettare di aprire i file) | Sì (dashboard dal vivo che si aggiornano automaticamente) |
| Monitoraggio degli iperparametri | Sempre dimenticato o incoerente | Automatizzato; sempre collegato alle esecuzioni |
| Versioning degli artefatti del modello | Backup dei file manuali, nessuna metadati | Controllo di versione degli artefatti integrato |
| Collaborazione | Inviare file via email o condividere cartelle | I team condividono progetti dal vivo con accesso basato su 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 configurando wandb localmente con la modalità offline attivata, in modo da non doverti preoccupare di 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 i tuoi artefatti—credimi, nessuno vuole chiedere un nuovo export CSV.
Per gli ingegneri ML che costruiscono pipeline di produzione, integra i sweeps wandb e l’automazione CI/CD fin dall’inizio del tuo processo. Vorrai uno stato di esperienza coerente, opzioni di ripristino e un monitoraggio integrato nei cicli di pubblicazione per evitare buchi neri di debugging settimane dopo.
Dati validi al 21 marzo 2026. Fonti: Sito ufficiale di Weights & Biases, Documentazione Weights & Biases
Articoli correlati
- Sicurezza delle reti di bot IA
- Governance della sicurezza dei bot IA
- Grammarly è un’IA? Come lo strumento di scrittura utilizza l’intelligenza artificiale
🕒 Published: