Model Weights
I pesi del modello sono i valori appresi che trasformano gli input di una rete in previsioni. Panoramica di come vengono impostati durante l'addestramento, dei file dei pesi e della compressione.
I pesi del modello sono i numeri apprendibili all'interno di una rete neurale che trasformano gli input in previsioni. Ogni peso scala il segnale che passa tra due unità, oppure costituisce un valore di un filtro convoluzionale; insieme, i pesi codificano tutto ciò che il modello ha appreso dai dati di training. Il termine viene spesso usato in senso lato per indicare tutti i parametri appresi dal modello, inclusi bias e valori di normalizzazione, come nelle espressioni «pesi preaddestrati» o «modelli con pesi aperti». Il numero di pesi può variare di diversi ordini di grandezza: ResNet-50 ha circa 25,6 milioni di parametri, mentre i modelli linguistici di grandi dimensioni ne hanno miliardi.
In che modo il training determina i pesi#
Una rete nuova inizia con piccoli pesi casuali, generati con schemi come l'inizializzazione di He, che scalano i valori casuali in base alle dimensioni di ciascun layer, in modo che i segnali non svaniscano né esplodano mentre attraversano molti layer. A questo punto, le previsioni del modello sono rumore. Il training ripete quindi un ciclo per ogni batch di dati: una passata forward produce le previsioni, una funzione di loss ne valuta l'errore, la backpropagation calcola quanto ogni peso ha contribuito a quell'errore e un ottimizzatore, come la discesa stocastica del gradiente (SGD) o l'ottimizzatore Adam, modifica leggermente ogni peso per ridurre l'errore. Dopo milioni di questi piccoli aggiornamenti, i pesi si assestano su valori che producono previsioni accurate e rimangono fissi durante l'inferenza.
Pesi e termini correlati#
- Bias: in un layer che calcola
y = Wx + b, i pesiWmoltiplicano gli input e il biasbaggiunge un offset, consentendo alla funzione di attivazione di un'unità di spostare la propria soglia e produrre un output diverso da zero quando tutti gli input sono zero. Entrambi vengono appresi durante il training. - Iperparametri: impostazioni come il tasso di apprendimento e la dimensione del batch, scelte prima del training, che controllano il modo in cui vengono appresi i pesi. La discesa del gradiente non li aggiorna.
- Attivazioni: gli output intermedi calcolati da una rete per un determinato input. I pesi restano uguali per ogni input, mentre le attivazioni vengono ricalcolate per ciascuno di essi.
- Weights & Biases: una piattaforma per il monitoraggio degli esperimenti il cui nome riprende i due tipi di parametri.
Salvare e caricare i pesi#
I pesi appresi vengono salvati in file, così da poterli ricaricare per l'inferenza, condividere o usare come punto di partenza per il transfer learning. In PyTorch, i pesi di un modello si trovano nel suo state_dict e di solito vengono salvati in file .pt. Questi file usano il formato pickle di Python, che può eseguire codice al caricamento; perciò, da PyTorch 2.6, torch.load usa weights_only=True per impostazione predefinita. Il formato safetensors memorizza solo tensori grezzi, escludendo così l'esecuzione di codice e consentendo un caricamento rapido tramite mappatura in memoria; è il formato standard su Hugging Face. I file ONNX includono i pesi insieme al grafo di calcolo, così che altri runtime possano eseguire il modello.
I checkpoint .pt di Ultralytics YOLO26 memorizzano una media mobile esponenziale (EMA) dei pesi, che attenua il rumore tra un passaggio e l'altro, insieme agli argomenti di training e ai risultati per epoca; ogni esecuzione di training scrive best.pt e last.pt nella propria cartella weights. Caricando la stessa architettura con e senza pesi appresi, puoi vedere dove risiede la conoscenza del modello:
from ultralytics import YOLO
# Same YOLO26n architecture with two different sets of weights
trained = YOLO("yolo26n.pt") # weights learned on COCO
untrained = YOLO("yolo26n.yaml") # randomly initialized weights
for name, model in [("trained", trained), ("untrained", untrained)]:
results = model("https://ultralytics.com/images/bus.jpg")
print(f"{name}: {len(results[0].boxes)} objects detected")I pesi appresi individuano l'autobus e le persone nell'immagine, mentre la copia della stessa identica rete, inizializzata casualmente, non rileva nulla.
Compressione dei pesi per la distribuzione#
La precisione dei pesi determina le dimensioni del file e l'ingombro in memoria del modello, aspetti particolarmente importanti per i dispositivi di IA edge. La quantizzazione del modello memorizza i pesi con una precisione inferiore; passare dalla virgola mobile a 32 bit agli interi a 8 bit li rende quattro volte più piccoli e velocizza l'inferenza sull'hardware che supporta gli interi. Il pruning rimuove i pesi che contribuiscono poco all'output, mentre la distillazione della conoscenza addestra un modello più piccolo a imitare uno più grande. Per dare un'idea delle dimensioni: un modello linguistico da 7 miliardi di parametri richiede circa 28 GB per i pesi a 32 bit, 14 GB a 16 bit e 3,5 GB a 4 bit.










