Model Weights
Modellgewichte sind die erlernten Zahlenwerte, die Eingaben eines Netzwerks in Vorhersagen umwandeln. Behandelt werden ihre Bestimmung beim Training, Gewichtsdateien und Komprimierung.
Modellgewichte sind die lernbaren Zahlen innerhalb eines neuronalen Netzes, die dessen Eingaben in Vorhersagen umwandeln. Jedes Gewicht skaliert das Signal, das zwischen zwei Einheiten übertragen wird, oder bildet einen Wert eines Faltungsfilters. Zusammen kodieren die Gewichte alles, was das Modell aus seinen Trainingsdaten gelernt hat. Der Begriff wird häufig ungenau für alle erlernten Parameter eines Modells verwendet, darunter auch Bias-Werte und Normalisierungswerte, wie in „vortrainierte Gewichte“ oder „Modelle mit offenen Gewichten“. Die Anzahl der Gewichte reicht über viele Größenordnungen: ResNet-50 hat etwa 25,6 Millionen Parameter, während große Sprachmodelle Milliarden davon haben.
Wie das Training die Gewichte festlegt#
Ein neues Netzwerk beginnt mit kleinen zufälligen Gewichten, die nach Verfahren wie der He-Initialisierung gezogen werden. Dabei werden die Zufallswerte an die Größe jeder Schicht angepasst, damit Signale beim Durchlaufen vieler Schichten weder verschwinden noch explodieren. Zu diesem Zeitpunkt sind die Vorhersagen des Modells Rauschen. Beim Training wird dann für jeden Daten-Batch ein Zyklus wiederholt: Ein Vorwärtsdurchlauf erzeugt Vorhersagen, eine Verlustfunktion bewertet deren Fehler, die Backpropagation berechnet, wie stark jedes Gewicht zu diesem Fehler beigetragen hat, und ein Optimierer wie der stochastische Gradientenabstieg (SGD) oder der Adam-Optimierer passt jedes Gewicht leicht an, um den Fehler zu verringern. Nach Millionen solcher kleinen Aktualisierungen nehmen die Gewichte Werte an, die genaue Vorhersagen ermöglichen, und bleiben während der Inferenz unverändert.
Gewichte und verwandte Begriffe#
- Bias-Werte: In einer Schicht, die
y = Wx + bberechnet, multiplizieren die GewichteWdie Eingaben, und der Biasbaddiert einen Versatz. Dadurch kann die Aktivierungsfunktion einer Einheit ihren Schwellenwert verschieben und eine Ausgabe ungleich null erzeugen, wenn alle Eingaben null sind. Beide werden während des Trainings gelernt. - Hyperparameter: Einstellungen wie die Lernrate und die Batch-Größe, die vor dem Training festgelegt werden und steuern, wie die Gewichte gelernt werden. Der Gradientenabstieg aktualisiert sie nicht.
- Aktivierungen: Die Zwischenausgaben, die ein Netzwerk für eine bestimmte Eingabe berechnet. Die Gewichte bleiben für jede Eingabe gleich, während die Aktivierungen für jede Eingabe neu berechnet werden.
- Weights & Biases: Eine Plattform zur Versuchsverfolgung, deren Name die beiden Parametertypen aufgreift.
Gewichte speichern und laden#
Trainierte Gewichte werden in Dateien gespeichert, damit sie für die Inferenz erneut geladen, geteilt oder als Ausgangspunkt für Transfer Learning verwendet werden können. In PyTorch befinden sich die Gewichte eines Modells in state_dict und werden üblicherweise in .pt-Dateien gespeichert. Diese Dateien verwenden das Pickle-Format von Python, das beim Laden Code ausführen kann. Seit PyTorch 2.6 ist torch.load daher standardmäßig auf weights_only=True gesetzt. Das Format safetensors speichert ausschließlich rohe Tensoren. Damit wird die Codeausführung ausgeschlossen und ein schnelles Laden per Memory Mapping ermöglicht. Es ist das Standardformat auf Hugging Face. ONNX-Dateien bündeln die Gewichte zusammen mit dem Berechnungsgraphen, damit andere Laufzeitumgebungen das Modell ausführen können.
Checkpoints von Ultralytics YOLO26 .pt speichern einen exponentiellen gleitenden Durchschnitt (EMA) der Gewichte, der Schwankungen von Schritt zu Schritt glättet, zusammen mit den Trainingsargumenten und den Ergebnissen pro Epoche. Bei jedem Trainingslauf werden best.pt und last.pt im Ordner weights gespeichert. Lädt man dieselbe Architektur einmal mit und einmal ohne trainierte Gewichte, sieht man, wo das Wissen des Modells gespeichert ist:
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")Die trainierten Gewichte finden den Bus und die Personen im Bild, während die zufällig initialisierte Kopie desselben Netzwerks nichts erkennt.
Gewichte für den Einsatz komprimieren#
Die Genauigkeit der Gewichte bestimmt die Dateigröße und den Speicherbedarf eines Modells. Das ist vor allem bei Geräten für Edge-KI wichtig. Bei der Modellquantisierung werden Gewichte mit geringerer Genauigkeit gespeichert. Der Wechsel von 32-Bit-Gleitkommazahlen zu 8-Bit-Ganzzahlen macht sie viermal kleiner und beschleunigt die Inferenz auf Hardware mit Ganzzahlunterstützung. Beim Pruning werden Gewichte entfernt, die nur wenig zur Ausgabe beitragen. Bei der Wissensdestillation wird ein kleineres Modell darauf trainiert, ein größeres nachzuahmen. Ein Sprachmodell mit 7 Milliarden Parametern benötigt für seine Gewichte bei 32 Bit etwa 28 GB, bei 16 Bit 14 GB und bei 4 Bit 3,5 GB.










