Ein Netz trainieren
Die Gewichte starten zufällig. Klicke auf Trainieren, sieh zu, wie der Loss sinkt, und zeichne dann eine Ziffer, um das Netz zu testen. Wechsle das Modell oder schalte reduzierte Präzision ein, um zu sehen, wie die Genauigkeit abnimmt.
Der Loss wird auf den Trainingsbildern gemessen, die Genauigkeit auf ungesehenen Testbildern. Sinkt der Loss weiter, während die Genauigkeit stagniert, lernt das Netz seine 2'000 Trainingsbilder auswendig, statt allgemeinere Merkmale zu lernen (Overfitting).
Wie es lernt
Das Standardmodell ist ein mehrschichtiges Perzeptron, trainiert auf MNIST. Deine Zeichnung wird auf 28 × 28 verkleinert, zu 784 Zahlen abgeflacht und durch drei Schichten von Gewichten geschickt. Das Training passt jedes Gewicht so an, dass der Vorhersagefehler kleiner wird.
Kein Framework
Vorwärtsdurchlauf, Backpropagation und SGD sind in reinem JavaScript geschrieben. Kein TensorFlow, kein ONNX, kein WebAssembly.
Das Training im Browser verwendet 2'000 MNIST-Bilder (200 pro Klasse) mit Mini-Batch-SGD. «Vortrainiert laden» setzt Gewichte ein, die in PyTorch auf dem vollständigen Datensatz mit 60'000 Bildern trainiert wurden.
Weniger Bits
Gewichte sind meist 32-Bit-Gleitkommazahlen. Die Quantisierung speichert jedes mit weniger Bits und spart so Speicher und Rechenaufwand, was auf Smartphones und Mikrocontrollern zählt.
Schalte oben Präzision ein und ziehe den Bit-Regler. Bei 8 Bit hält die Genauigkeit. Bei 4 Bit ist das Modell 8× kleiner, beginnt aber nachzulassen. Bei 2 Bit hat jedes Gewicht nur noch einen von vier Werten, und die Vorhersagen zerfallen.
Die Exponentialfunktionen der Softmax lassen sich schlecht quantisieren, deshalb behalten die meisten «integer-only»-Modelle sie in Gleitkomma. Diese Demo probiert I-BERT (Polynomapproximation), Softermax (Basis 2) und den Shift-Trick aus.
Beim Vision Transformer und beim GPT werden die Attention-Werte vor der Softmax quantisiert. Der Shift-Schalter nutzt die Verschiebungsinvarianz softmax(z + c) = softmax(z): Das Abziehen des Mittelwerts zentriert die Werte um null und erlaubt eine engere Anpassung. Am deutlichsten zeigt sich der Unterschied im Text des GPT bei wenigen Bits.
Softmax in Ganzzahlarithmetik
Eine Semesterarbeit bei Prof. Dr. Luca Benini: Softmax in MobileBERT für reine Ganzzahl-Inferenz optimieren und dabei die Genauigkeit bis hinunter zu 4 Bit halten.
Exponentialfunktionen sind in Festkomma-Hardware teuer, deshalb approximieren wir sie mit Polynomen zweiten Grades.
Weniger Bits machen aus dem Signal eine Treppe. Ziehe den Regler, um den L1-Fehler wachsen zu sehen.
Quantisierung mit wenigen Bits verzerrt die Attention-Muster. Der Shift-Trick (Schalter) zentriert die Logits um null, was engeres Clipping und höhere Genauigkeit bei 4 und 5 Bit erlaubt.
Volle Präzision (FP32)
Quantisiert
I-BERT
Approximiert Exponentialfunktionen mit reinen Ganzzahl-Polynomen und Zweierpotenz-Shifts.
Softermax
Basis 2 mit Online-Normalisierung, was mehrere Durchläufe über die Daten vermeidet.
ITAmax
Wählt optimale Skalierungsfaktoren, indem es sich auf schmale Eingabebereiche konzentriert.