LLM.int8(): 8-Bit-Matrixmultiplikation für Transformer im großen Maßstab

Große Sprachmodelle (Large Language Models) werden weit verbreitet eingesetzt, erfordern jedoch erheblichen GPU-Speicher für die Inferenz. Wir haben ein Verfahren zur Int8-Matrixmultiplikation für die Feed-Forward- und Aufmerksamkeitsprojektionsschichten in Transformatoren entwickelt, das den benötigten Speicher für die Inferenz halbiert, während es die volle Präzision beibehält. Mit unserer Methode kann ein 175-Milliarden-Parameter-Modell mit 16/32-Bit-Checkpoint geladen, in Int8 konvertiert und sofort ohne Leistungsverlust verwendet werden. Dies ist durch das Verständnis und die Umgehung von Eigenschaften hochsystematischer emergenter Merkmale in Transformer-Sprachmodellen möglich, die die Aufmerksamkeits- und Vorhersageleistung der Transformatoren dominieren. Um mit diesen Merkmalen umzugehen, haben wir eine zweiteilige Quantisierungsprozedur entwickelt: LLM.int8(). Zunächst verwenden wir vektorweise Quantisierung mit separaten Normalisierungskonstanten für jedes Skalarprodukt in der Matrixmultiplikation, um die meisten Merkmale zu quantisieren. Für die emergenten Ausreißer (outliers) schließen wir jedoch auch ein neues Mischpräzisionszerlegungsschema ein, das die Ausreißer-Merkmalsskalare in eine 16-Bit-Matrixmultiplikation isoliert, während mehr als 99,9 % der Werte weiterhin in 8-Bit multipliziert werden. Mit LLM.int8() zeigen wir empirisch, dass es möglich ist, Inferenz in Sprachmodellen mit bis zu 175 Milliarden Parametern durchzuführen, ohne Leistungsverluste aufzuweisen. Dieses Ergebnis macht solche Modelle viel zugänglicher; zum Beispiel wird es möglich, OPT-175B/BLOOM auf einem einzelnen Server mit Consumer-GPUs zu verwenden. Wir stellen unsere Software als Open Source zur Verfügung.