down-left-and-up-right-to-centerEntraînement conscient de la quantification (QAT)

Quantifiez des modèles en 4 bits avec Unsloth et PyTorch pour récupérer la précision.

En collaboration avec PyTorch, nous introduisons QAT (Quantization-Aware Training) dans Unsloth pour permettre la quantification entraînable qui récupère autant de précision que possible. Cela se traduit par une qualité de modèle nettement meilleure par rapport à la quantification naïve standard en 4 bits. Le QAT peut récupérer jusqu'à 70 % de la précision perdue et atteindre une amélioration de 1–3 % de la performance du modèle sur des benchmarks tels que GPQA et MMLU Pro.

Essayez QAT avec notre carnet Qwen3 (4B)arrow-up-right

📚Quantification

Quantifier naïvement un modèle s'appelle la quantification après entraînement (PTQ). Par exemple, supposons que nous voulons quantifier en entiers 8 bits :

  1. Trouvez max(abs(W))

  2. Trouvez a = 127/max(abs(W)) où a est la plage maximale de int8 qui est 127

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

La déquantification en 16 bits effectue simplement l'opération inverse en float16(qW) / a . La quantification après entraînement (PTQ) peut réduire considérablement les coûts de stockage et d'inférence, mais dégrade souvent la précision lorsqu'on représente des valeurs haute précision avec moins de bits - surtout à 4 bits ou moins. Une façon de résoudre cela est d'utiliser nos quants GGUF dynamiques, qui utilisent un jeu de calibration pour modifier la procédure de quantification afin d'accorder plus d'importance aux poids importants. L'autre manière est de rendre la quantification plus intelligente, en la rendant entraînable ou apprenable!

🔥Quantification plus intelligente

Pour permettre une quantification plus intelligente, nous avons collaboré avec l'équipe TorchAOarrow-up-right pour ajouter l'entraînement conscient de la quantification (QAT) directement dans Unsloth - vous pouvez maintenant affiner des modèles dans Unsloth puis les exporter au format QAT 4 bits directement avec des améliorations de précision !

En fait, le QAT récupère 66,9 % de Gemma3-4B sur GPQA, augmentant la précision brute de +1,0 %. Gemma3-12B sur BBH récupère 45,5 %, et a augmenté la précision brute de +2,1 %. Le QAT n'ajoute pas de surcharge supplémentaire pendant l'inférence et utilise le même espace disque et mémoire que la quantification naïve normale ! Vous obtenez donc tous les avantages de la quantification en faible bit, mais avec une précision fortement accrue !

🔍Entraînement sensible à la quantification

Le QAT simule la véritable procédure de quantification en "faussement quantifiant" les poids et éventuellement les activations pendant l'entraînement, ce qui signifie généralement arrondir des valeurs haute précision vers des valeurs quantifiées (tout en restant dans un type de données haute précision, par ex. bfloat16) puis les déquantifier immédiatement.

TorchAO active le QAT en (1) insérant d'abord des opérations de fausse quantification dans les couches linéaires, et (2) en transformant les opérations de fausse quantification en opérations réelles de quantification et déquantification après l'entraînement afin de les rendre prêtes pour l'inférence. L'étape 1 nous permet d'entraîner une représentation de quantification plus précise.

QAT + fine-tuning LoRA

Le QAT dans Unsloth peut en outre être combiné avec le fine-tuning LoRA pour permettre les bénéfices des deux mondes : réduire significativement le stockage et les besoins en calcul pendant l'entraînement tout en atténuant la dégradation due à la quantification ! Nous prenons en charge plusieurs méthodes via qat_scheme y compris fp8-int4, fp8-fp8, int8-int4, int4 . Nous prévoyons également d'ajouter des définitions personnalisées pour le QAT dans une prochaine version !

🫖Exportation des modèles QAT

Après le fine-tuning dans Unsloth, vous pouvez appeler model.save_pretrained_torchao pour enregistrer votre modèle entraîné en utilisant le format PTQ de TorchAO. Vous pouvez aussi les téléverser sur le hub HuggingFace ! Nous supportons n'importe quelle configuration, et nous prévoyons de proposer des méthodes basées sur du texte également, et de rendre le processus plus simple pour tout le monde ! Mais d'abord, nous devons préparer le modèle QAT pour l'étape finale de conversion via :

Et maintenant nous pouvons sélectionner le style QAT que vous souhaitez :

Vous pouvez ensuite exécuter le modèle QAT fusionné en précision réduite dans vLLM, Unsloth et d'autres systèmes pour l'inférence ! Tout cela se trouve dans le carnet Colab Qwen3-4B QATarrow-up-right que nous avons également !

🫖Quantifier des modèles sans entraînement

Vous pouvez aussi appeler model.save_pretrained_torchao directement sans effectuer de QAT ! C'est simplement du PTQ ou de la quantification native. Par exemple, l'enregistrement au format Dynamic float8 est ci-dessous :

📱ExecuTorch - QAT pour le déploiement mobile

Avec Unsloth et le support QAT de TorchAO, vous pouvez aussi affiner un modèle dans Unsloth et l'exporter de manière transparente vers ExecuTorcharrow-up-right (la solution de PyTorch pour l'inférence sur appareil) et le déployer directement sur mobile. Voir un exemple en action iciarrow-up-right avec des workflows plus détaillés à venir !

Annonce à venir bientôt !

🌻Comment activer le QAT

Mettez Unsloth à jour vers la dernière version, et installez également la dernière version de TorchAO !

dataset = dataset.cast_column("filename", Audio(sampling_rate=24000)) essayez QAT avec notre carnet Qwen3 (4B)arrow-up-right

💁Remerciements

Un immense merci à l'ensemble des équipes PyTorch et TorchAO pour leur aide et leur collaboration ! Un grand merci à Andrew Or, Jerry Zhang, Supriya Rao, Scott Roy et Mergen Nachin pour leur aide dans de nombreuses discussions sur le QAT et pour l'intégration dans Unsloth ! Merci également à l'équipe Executorch !

Mis à jour

Ce contenu vous a-t-il été utile ?