Zum Hauptinhalt Zur Navigation

Ein Bit zur Fehlerkorrektur

Die Verzerrung korrigiert in einem zweiten Schritt ein ebenfalls bereits älterer, unter dem Namen Quantized Johnson-Lindenstrauss(öffnet im neuen Fenster) (QJL) veröffentlichter Ansatz. Der war zuvor nur für den Schlüsselteil (Key) des KV-Cache genutzt worden. Er nutzt ebenfalls statistische Ansätze und eine weitere, mit Zufallswerten belegte Matrix.

QJL ist darauf ausgelegt, den Fehler bei der Berechnung des Skalarprodukts zu minimieren. Der Originalvektor wird hierbei auf ein Vorzeichenbit und seine euklidische Norm abgebildet. Turboquant nutzt diesen Algorithmus mit dem Fehler zwischen dem Original- und dem mittels Polarquant quantisierten Wert, speichert aber nur das Vorzeichenbit. Entsprechend besteht der finale quantisierte Wert aus dem Vorzeichenbit sowie n Bit für den eigentlichen Wert.

Eine letzte Optimierung ist, dass Turboquant einen Teil der Dimensionen der Attention Heads mit höherer Bitrate quantisiert. Das ermöglicht eine höhere Genauigkeit bei Dimensionen mit großer Streuung der Werte. In der Veröffentlichung wird als Beispiel die 2,5-Bit-Quantisierung erläutert: Ein Viertel der Werte wird auf 4 Bit quantisiert (im Text sind es 3 Bit, was rechnerisch nicht aufgeht), der Rest auf 2 Bit.

Das Zusammenspiel der Einzelkomponenten sorgt dafür, dass Turboquant ohne großen Genauigkeitsverlust mit wesentlich weniger Bits auskommt: Die enthaltene Information wird sehr effizient gespeichert. Der Name dürfte an die Turbo-Codes(öffnet im neuen Fenster) angelehnt sein, lange die effizientesten bekannten Fehlerkorrekturmechanismen.

Schneller trotz des ganzen Aufwands

Allerdings klingen die ganzen Berechnungen erst einmal recht aufwendig. Da wundert es fast, dass die Entwickler von Turboquant sogar von einer Leistungssteigerung schreiben. Die ist aber auch unabhängig bestätigt: Bereits kurz nach Veröffentlichung von Turboquant haben einige Entwickler den Algorithmus implementiert und getestet. Ergebnisse sind in einem Foren-Thread bei Nvidia(öffnet im neuen Fenster) zu finden. Hier zeigt sich ebenfalls eine Verbesserung des Token-Durchsatzes.

Auch das ist intuitiv zu erwarten, da in der Decode-Phase, in der Tokens generiert werden, üblicherweise die Speicherbandbreite der begrenzende Faktor ist. Durch die Quantisierung des KV-Cache sinkt die zu dessen Übertragung erforderliche Bandbreite. Entsprechend können die Recheneinheiten schneller mit den Gewichtsparametern versorgt werden.

Ein Vorteil von Turboquant gegenüber anderen Ansätzen ist dabei, dass die Vorbereitung der Originaldaten relativ einfach ist. Auch zusätzliche Skalierungsfaktoren, wie sie etwa bei einer einfachen, blockbasierten Quantisierung(öffnet im neuen Fenster) genutzt werden, sind nicht erforderlich.


Relevante Themen