down-left-and-up-right-to-centerQuantization-Aware Training (QAT)

Quantisiere Modelle auf 4-Bit mit Unsloth und PyTorch, um Genauigkeit wiederherzustellen.

In Zusammenarbeit mit PyTorch führen wir QAT (Quantization-Aware Training) in Unsloth ein, um trainierbare Quantisierung zu ermöglichen, die so viel Genauigkeit wie möglich wiederherstellt. Dies führt zu einer deutlich besseren Modellqualität im Vergleich zur standardmäßigen naiven 4-Bit-Quantisierung. QAT kann bis zu 70% der verlorenen Genauigkeit wiederherstellen und erzielt eine 1–3% Verbesserung der Modellleistung in Benchmarks wie GPQA und MMLU Pro.

Probieren Sie QAT mit unserem kostenlosen Qwen3 (4B) Notebookarrow-up-right

📚Quantisierung

Ein Modell naiv zu quantisieren wird Post-Training-Quantisierung (PTQ) genannt. Zum Beispiel, nehmen wir an, wir wollen auf 8-Bit-Ganzzahlen quantisieren:

  1. Finden Sie max(abs(W))

  2. Finden Sie a = 127/max(abs(W)) wobei a der maximale Bereich von int8 ist, der 127 beträgt

  3. Quantisieren via qW = int8(round(W * a))

Zurückdequantisieren auf 16 Bit macht einfach die umgekehrte Operation durch float16(qW) / a . Post-Training-Quantisierung (PTQ) kann Speicher- und Inferenzkosten stark reduzieren, verschlechtert jedoch oft die Genauigkeit, wenn hochpräzise Werte mit weniger Bits dargestellt werden - besonders bei 4 Bit oder weniger. Eine Möglichkeit, dies zu lösen, ist die Nutzung unserer dynamischen GGUF-Quants, die ein Kalibrierungsdatensatz verwendet, um das Quantisierungsverfahren so zu ändern, dass wichtigeren Gewichten mehr Bedeutung beigemessen wird. Die andere Möglichkeit ist, die Quantisierung intelligenter zu machen, indem sie trainierbar oder lernbar gemacht wird!

🔥Intelligentere Quantisierung

Um intelligentere Quantisierung zu ermöglichen, haben wir mit dem TorchAOarrow-up-right Team zusammengearbeitet, um Quantization-Aware Training (QAT) direkt in Unsloth hinzuzufügen – so können Sie jetzt Modelle in Unsloth feinabstimmen und sie dann direkt im 4-Bit-QAT-Format mit Genauigkeitsverbesserungen exportieren!

Tatsächlich stellt QAT 66,9% von Gemma3-4B auf GPQA wieder her und erhöht die rohe Genauigkeit um +1,0%. Gemma3-12B auf BBH stellt 45,5% wieder her, und erhöhte die rohe Genauigkeit um +2,1%. QAT verursacht während der Inferenz keinen zusätzlichen Aufwand und verwendet dieselbe Festplatten- und Speichernutzung wie die normale naive Quantisierung! Sie erhalten also alle Vorteile der Niedrigbit-Quantisierung, aber mit deutlich höherer Genauigkeit!

🔍Quantization-Aware Training

QAT simuliert das tatsächliche Quantisierungsverfahren durch "Fake-Quantisierung" von Gewichten und optional Aktivierungen während des Trainings, was typischerweise bedeutet, hochpräzise Werte auf quantisierte Werte zu runden (während sie in hochpräzisem Datentyp bleiben, z. B. bfloat16) und sie dann sofort wieder zu dequantisieren.

TorchAO ermöglicht QAT zunächst indem es (1) Fake-Quantize-Operationen in linearen Schichten einfügt und (2) die Fake-Quantize-Operationen nach dem Training in echte Quantize- und Dequantize-Operationen umwandelt, um sie infrerenztauglich zu machen. Schritt 1 ermöglicht es uns, eine genauere Quantisierungsdarstellung zu trainieren.

QAT + LoRA-Finetuning

QAT in Unsloth kann zusätzlich mit LoRA-Finetuning kombiniert werden, um die Vorteile beider Welten zu ermöglichen: deutliche Reduzierung von Speicher- und Rechenanforderungen während des Trainings bei gleichzeitiger Minderung der Quantisierungsverschlechterung! Wir unterstützen mehrere Methoden über qat_scheme einschließlich fp8-int4, fp8-fp8, int8-int4, int4 . Wir planen außerdem, in einem Folge-Release benutzerdefinierte Definitionen für QAT hinzuzufügen!

🫖Exportieren von QAT-Modellen

Nach dem Finetuning in Unsloth können Sie aufrufen model.save_pretrained_torchao um Ihr trainiertes Modell im PTQ-Format von TorchAO zu speichern. Sie können diese auch auf dem HuggingFace-Hub hochladen! Wir unterstützen jede Konfiguration und planen, auch textbasierte Methoden bereitzustellen und den Prozess für alle zu vereinfachen! Zunächst müssen wir das QAT-Modell jedoch für den finalen Konvertierungsschritt vorbereiten über:

Und nun können wir auswählen, welchen QAT-Stil Sie möchten:

Sie können dann das zusammengeführte QAT-Niedrigpräzisionsmodell in vLLM, Unsloth und anderen Systemen zur Inferenz ausführen! Diese finden Sie alle im Qwen3-4B QAT Colab-Notebookarrow-up-right das wir ebenfalls haben!

🫖Modelle quantisieren ohne Training

Sie können auch model.save_pretrained_torchao direkt aufrufen, ohne QAT durchzuführen! Das ist einfach PTQ oder native Quantisierung. Zum Beispiel ist das Speichern im Dynamic-Float8-Format wie folgt:

📱ExecuTorch - QAT für mobile Bereitstellung

Mit Unsloth und der QAT-Unterstützung von TorchAO können Sie ein Modell in Unsloth feinabstimmen und nahtlos zu ExecuTorcharrow-up-right (PyTorchs Lösung für On-Device-Inferenz) exportieren und direkt auf Mobilgeräten bereitstellen. Siehe ein Beispiel in Aktion hierarrow-up-right mit detaillierteren Workflows, die in Arbeit sind!

Ankündigung folgt in Kürze!

🌻Wie man QAT aktiviert

Aktualisieren Sie Unsloth auf die neueste Version und installieren Sie außerdem das neueste TorchAO!

Dann probieren Sie QAT mit unserem kostenlosen Qwen3 (4B) Notebookarrow-up-right

💁Danksagungen

Ein großes Dankeschön an das gesamte PyTorch- und TorchAO-Team für ihre Hilfe und Zusammenarbeit! Besonderer Dank gilt Andrew Or, Jerry Zhang, Supriya Rao, Scott Roy und Mergen Nachin für ihre Unterstützung in vielen Diskussionen zu QAT und bei der Integration in Unsloth! Ebenfalls Dank an das Executorch-Team!

Zuletzt aktualisiert

War das hilfreich?