Come configurare il monitoraggio con Weights & Biases (passo dopo passo)
Se gestisci esperimenti di apprendimento automatico e stai ancora registrando tutto in fogli di calcolo o file di testo sparsi, stai seriamente perdendo qualcosa—la configurazione del monitoraggio di weights & biases ti farà risparmiare decine di ore dolorose e notti in bianco a lottare con dati sperimentali disorganizzati.
Cosa costruirai e perché è importante
Stiamo impostando il monitoraggio di weights & biases per tracciare, visualizzare e fare debug delle sessioni di addestramento di apprendimento automatico in modo efficace—niente più metriche perse né supposizioni sugli iperparametri che hanno fatto impennare il tuo modello.
Requisiti
- Python 3.8+ (Weights & Biases è piuttosto tollerante ma ti consigliamo di rimanere su 3.8 o una versione successiva per la compatibilità)
- pip installato, preferibilmente versione 23.0+ (gli aggiornamenti spesso risolvono i bug legati alle dipendenze dei pacchetti)
- Crea un account gratuito Weights & Biases su https://wandb.ai
- Conoscenza di base degli script di addestramento in apprendimento automatico (TensorFlow, PyTorch o sklearn funzionano)
- Conoscenza degli strumenti da riga di comando (il CLI di weights & biases è indispensabile)
Configurazione passo dopo passo
Passo 1: Installa il pacchetto Python Weights & Biases
pip install wandb
Questo è l’unico pacchetto di cui hai bisogno per monitorare le tue sessioni di apprendimento automatico. Si integra nel tuo codice e ti offre dashboard in tempo reale, monitoraggio delle metriche e gestione degli artefatti.
Perché? Perché il client di wandb gestisce tutto ciò che concerne il caricamento, la sincronizzazione e il collegamento con il server automaticamente. Questo ti evita il fastidio della registrazione manuale.
Trappole comuni: Se ricevi un conflitto di versione o un problema di dipendenza fallito, aggiorna pip e setuptools:
pip install --upgrade pip setuptools
Passo 2: Accedi al tuo account Wandb
wandb login
Questo comando ti chiederà 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 te lo chiede.
Perché? Devi autenticare il tuo strumento CLI con il tuo progetto cloud affinché le tue sessioni siano collegate al tuo account utente e ai tuoi progetti.
Attenzione: Se incolli accidentalmente spazi bianchi o premi invio troppo presto, wandb rifiuterà la tua chiave e mostrerà un errore criptico riguardo al fallimento dell’autenticazione.
Passo 3: Inizializza Wandb nel tuo script di addestramento
import wandb
# Inizia una nuova sessione
wandb.init(project="my-ml-project", entity="your-username")
# Esempio: Registra gli iperparametri
config = wandb.config
config.learning_rate = 0.001
config.batch_size = 32
Inserire questo frammento all’inizio del tuo ciclo principale di addestramento consente a wandb di catturare tutto ciò che accade in quella sessione.
Perché? Il passo di inizializzazione crea un nuovo oggetto di sessione lato server, permettendoti di registrare metriche e 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. Assicurati sempre di controllare questo.
Passo 4: Registra 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 frammento deve essere 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 performance del modello passo dopo passo. Puoi identificare il sovra-addestramento o i plateau e regolare gli iperparametri di conseguenza.
Errore tipico: Non inviare i log abbastanza frequentemente, il che porta a dati di sessione incompleti se il tuo compito fallisce. Assicurati che wandb.log() venga chiamato dopo ogni aggiornamento significativo (di solito ogni epoca o lotto).
Passo 5: Registra gli artefatti dei modelli per il monitoraggio delle versioni
# Registra il checkpoint del tuo modello localmente
torch.save(model.state_dict(), "model.pt")
# Carica il checkpoint come artefatto in wandb
artifact = wandb.Artifact('model', type='model')
artifact.add_file("model.pt")
wandb.log_artifact(artifact)
Gli artefatti wandb ti consentono di monitorare le versioni dei modelli, dei dataset o di altri risultati. Questo rende il tuo addestramento ripetibile e debuggabile.
Perché? Gli artefatti facilitano i flussi di lavoro collaborativi e l’integrazione con l’integrazione continua/consegna continua. Puoi confrontare i modelli e persino tornare facilmente a checkpoint precedenti.
Attenzione: Dimenticare di chiamare wandb.log_artifact() significa che i tuoi file registrati non appariranno nella dashboard del progetto. Inoltre, gli artefatti di grandi dimensioni possono fallire silenziosamente se vengono raggiunti i limiti di archiviazione — controlla i limiti di utilizzo del tuo progetto.
Passo 6: Visualizza i risultati nella dashboard Wandb
Apri https://wandb.ai e naviga fino al tuo progetto. Vedrai grafici in tempo reale aggiornarsi con le tue metriche, iperparametri e artefatti registrati.
Perché? La visualizzazione è la funzionalità chiave che rende la configurazione del monitoraggio tramite weights & biases davvero preziosa—vedere le tendenze delle tue metriche ti aiuta a comprendere il comportamento del modello in tempo reale.
Avvertenza: Se le tue metriche non appaiono, verifica che il tuo wandb.init() abbia il nome di progetto corretto e che tu sia connesso al giusto account (entità). Assicurati anche che la tua connessione di rete consenta le connessioni cloud (a volte, i firewall aziendali bloccano questo).
Passo 7: Integrazione avanzata – Automatizzare le esecuzioni Wandb con CI/CD
# Estratto da un workflow di GitHub Actions
name: Esegui l'addestramento e registrati su W&B
on: [push]
jobs:
train:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Configura Python
uses: actions/setup-python@v2
with:
python-version: 3.9
- name: Installa le dipendenze
run: pip install wandb torch
- name: Login in Wandb
run: echo ${{ secrets.WANDB_API_KEY }} | wandb login
- name: Esegui lo script di addestramento
run: python train.py
Questo script mostra un workflow CI automatizzato con GitHub che esegue il tuo addestramento e invia i risultati a wandb automaticamente.
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 mantenere la tua chiave API Wandb al sicuro come variabile d’ambiente segreta (non immetterla mai nel codice). Dimenticare questo significa che i compiti CI falliranno silenziosamente l’autenticazione.
Le trappole di cui nessuno ti parla
- Quote e limiti: Il tuo livello gratuito di Wandb ti consente di registrare circa qualche migliaio di sessioni al mese prima di raggiungere i limiti di larghezza di banda o di archiviazione degli artefatti. Se esegui 10K+ epoche o grandi set di dati, aspettati una riduzione della velocità. Non riceverai avvisi espliciti immediatamente; controlla semplicemente il tuo quota di progetto.
Soluzione: Pulisci regolarmente le sessioni più vecchie e archivia i grandi artefatti all’esterno.
- Latente 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 eseguendo il debug a un livello di granularità di batch.
Soluzione: Aggiungi `wandb.log(…, commit=True)` per inviare dati in momenti critici.
- Incoerenze nell’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 e registra sempre le versioni dei pacchetti. - Problemi di rete in ambienti ristretti: I server aziendali e accademici bloccano spesso per default i download di telemetria di Wandb, causando fallimenti silenziosi o sospensioni indefinite.
Soluzione: Utilizza la modalità offline locale (`wandb.init(mode=”offline”)`) e sincronizza successivamente, oppure aggiungi domini alla lista bianca sui firewall. - Registrazione di troppi dati: Registrare ogni metrica di batch può gonfiare le tue sessioni e rallentare l’interfaccia utente. Usa statistiche di sintesi oppure campiona a intervalli.
Soluzione: Registra a livello di epoca o ogni N batch, 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
# 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 l'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()
Cosa fare dopo
Una volta che hai configurato i tuoi pesi & bias per monitorare e registrare efficacemente, ti consiglio di aggiungere wandb Sweeps per automatizzare la regolazione degli iperparametri. È molto meglio che rilanciare manualmente script per ogni combinazione di parametri e ti consente di concentrarti sui risultati invece di esperimenti delicati.
FAQ
Q: Posso usare weights & biases con altri framework oltre a PyTorch?
A: Assolutamente. Wandb supporta TensorFlow, Keras, Hugging Face Transformers, sklearn, qualsiasi cosa tu voglia. Questo avvolge fondamentalmente il tuo ciclo di addestramento e registra i dati. Devi solo inserire chiamate simili a wandb.init() e wandb.log() nei punti giusti.
Q: Come proteggere le credenziali sensibili quando si utilizza wandb in pipeline CI?
A: Conservali 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 eseguire la registrazione wandb offline e sincronizzarsi in seguito?
A: Sì. Puoi inizializzare wandb con wandb.init(mode="offline"), che memorizza i log localmente. In seguito, esegui wandb sync per caricare i dati delle esecuzioni passate quando l’accesso alla rete è ripristinato. Questo è utile per gli ambienti isolati.
Progetto e dati di esecuzione Wandb a colpo d’occhio
Per comprendere perché la configurazione di weights & biases per il monitoraggio superi la registrazione tradizionale in fogli di calcolo, ecco una tabella rapida che confronta il monitoraggio manuale tipico con il monitoraggio wandb su metriche chiave:
| Aspetto | Registrazione manuale (Excel/CSV) | Monitoraggio dei Pesi & Biais |
|---|---|---|
| Visibilità in tempo reale | No (deve attendere l’apertura dei file) | Sì (dashboard in tempo reale che si aggiornano automaticamente) |
| Monitoraggio degli iperparametri | Spesso dimenticato o incoerente | Automatizzato; sempre legato alle esecuzioni |
| Versionamento degli artefatti di modello | Backup manuali di file, senza metadati | Controllo di versione degli artefatti integrato |
| Collaborazione | Inviare file tramite email o condividere cartelle | I team condividono progetti in tempo reale 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 solitario con piccoli modelli sul tuo laptop, inizia configurando wandb localmente con la modalità offline attivata per non dover preoccuparti di problemi di rete. L’interfaccia utente e la registrazione daranno alle tue esperienze un senso di organizzazione che nessun foglio di calcolo può uguagliare.
Se sei un data scientist che bilancia più modelli e collaboratori, investi tempo nell’integrare le esecuzioni wandb con i repository Git del tuo team e l’infrastruttura cloud. Automatizza la tua registrazione e i tuoi artefatti – fidati, nessuno vuole chiedere una nuova esportazione 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 costante, opzioni di ripristino, e un monitoraggio integrato nei cicli di pubblicazione per evitare di dover debuggare buchi neri settimane dopo.
Dati a partire dal 21 marzo 2026. Fonti: Sito Ufficiale di Pesi & Biais, Documentazione Pesi & Biais
Articoli Correlati
- Sicurezza dei network di bot IA
- Governance della sicurezza dei bot IA
- Grammarly è IA? Come lo strumento di scrittura utilizza l’intelligenza artificiale
🕒 Published: