Transformers documentation

Choisir une méthode

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.2).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Choisir une méthode

Si votre point de contrôle est déjà quantifié, c'est le point de contrôle qui détermine la méthode. Chargez-le comme indiqué dans Charger un point de contrôle pré-quantifié. Sinon, choisissez une méthode en fonction de votre matériel et de ce que vous devez faire avec le modèle après son chargement.

Partez de votre objectif

Chaque ligne recommande une première méthode à essayer. Consultez le tableau de comparaison complet avant de vous engager sur une option.

ObjectifCommencez parPourquoi
Entraînez un modèle avec moins de mémoire et un minimum de configurationbitsandbytesQuantifie en 4 ou 8 bits lors du chargement, sans calibration, fonctionne sur CUDA, XPU, HPU et CPU, et prend en charge la sauvegarde et l'ajustement fin.
Ajustement fin avec QLoRAbitsandbytesPrend en charge le NF4 4 bits avec PEFT. HQQ, EETQ, GPTQ, SINQ et Quanto prennent également en charge le fine-tuning.
Accélérer l'inférence avec torch.compiletorchaogenerate compile automatiquement les modèles torchao avec un cache statique, et torchao propose des schémas int4, int8 et FP8 pour CUDA, XPU et CPU.
Obtenir la meilleure précision en 4 bitsGPTQEffectue l'étalonnage sur un jeu de données lors du chargement. Pour utiliser AWQ ou AutoRound à la place, quantifiez avec leurs bibliothèques respectives puis chargez le point de contrôle.
Exécuter FP8 sur Ada, Hopper ou Intel XPUFP8 à granularité fineNécessite une capacité de calcul CUDA 8.9 ou supérieure, ou un XPU. FBGEMM FP8 nécessite une capacité de calcul 9.0 ou supérieure, ou un XPU.
Exécuter FP4 sur BlackwellNVFP4Quantifie au format flottant 4 bits de NVIDIA lors du chargement. MXFP4 s’exécute sur une capacité de calcul 7.5 ou supérieure, XPU et CPU.
Exécuter sur Apple siliconMetalQuantifie en 2, 4 ou 8 bits sur MPS lors du chargement. Les fichiers GGUF sont également chargés sur MPS.
Charger les points de contrôle créés avec llm-compressorcompressed-tensorsCharge les points de contrôle FP8, int4 et int8 au format compressed-tensors.
Compression en moins de 4 bitsHQQ ou SINQQuantifier en 2 ou 3 bits lors du chargement, sans calibration. Les points de contrôle AQLM, VPTQ et SpQR descendent plus bas, mais doivent être quantifiés avec leurs propres bibliothèques.
Show the full comparison table
Méthodequant_methodFlux de travailBitsMatérielEnregistrerAjustement finAuto-compilation
AQLMaqlmPré-quantifiés uniquement1–2CUDA, CPU✅✅ avec aqlm>=1.0.2❌
AutoRoundauto-roundPré-quantifiés uniquement2–8CUDA, XPU, CPU✅❌❌
AWQawqPré-quantifiés uniquement4CUDA, ROCm, XPU, CPU✅ sauf les backends ExLlama✅ avec gptqmodel>=5.0.0❌
BitNetbitnetPré-quantifiés uniquement1.58CUDA✅Uniquement autobitlinear en mode online❌
bitsandbytesbitsandbytesPendant le chargement4, 8CUDA, XPU, HPU, CPU✅✅❌
compressed-tensorscompressed-tensorsPré-quantifiés uniquementDéfini par point de contrôleCUDA, XPU, MPS, CPU✅✅ sauf avec les noyaux FP8✅
EETQeetqPendant le chargement8CUDA✅✅❌
FBGEMM FP8fbgemm_fp8Pendant le chargement8CUDA (capacité de calcul 9.0+), XPU✅❌❌
FP8 à granularité finefp8, mxfp8Pendant le chargement8CUDA (capacité de calcul 8.9+), XPU✅❌✅
Four Over SixfouroversixPendant le chargement4CUDA (le plus rapide sur Blackwell), CPU✅Uniquement avec keep_master_weights=True❌
FP-Quantfp_quantPendant le chargement4CUDA, XPU✅Uniquement avec store_master_weights=True❌
GGUFggufPré-quantifiés uniquement1–8CUDA, MPS, XPU, CPU❌❌✅
GPTQgptqPendant le chargement, avec calibration2, 3, 4, 8CUDA, ROCm, XPU, CPU✅✅❌
HIGGShiggsPendant le chargement2, 3, 4CUDA✅❌❌
HQQhqqPendant le chargement1, 2, 3, 4, 8CUDA, XPU✅✅❌
MetalmetalPendant le chargement2, 4, 8MPS✅❌❌
MXFP4mxfp4Pendant le chargement4CUDA (capacité de calcul 7.5+), XPU, CPU✅❌❌
NVFP4nvfp4Pendant le chargement4Un GPU Blackwell❌❌✅
QuantoquantoPendant le chargement2, 4, 8CUDA, MPS, XPU, CPU❌✅❌
QuarkquarkPré-quantifiés uniquementDéfini par point de contrôleCUDA, ROCm, CPU❌❌❌
SINQsinqPendant le chargement2, 3, 4, 6, 8Un GPU CUDA, CPU✅✅❌
SpQRspqrPré-quantifiés uniquement3CUDA✅❌❌
torchaotorchaoPendant le chargement4, 8CUDA, XPU, CPU✅Schémas 8 bits uniquement✅
VPTQvptqPré-quantifiés uniquement1–8CUDA✅❌❌

Vérifier la mémoire avec le sélecteur de quantification

Le sélecteur de quantification estime si un modèle tient sur votre matériel à chaque précision, y compris le cache KV. Choisissez un modèle, votre matériel et ce que la méthode doit accomplir, et la vue Compare répertorie les méthodes correspondantes.

Benchmarks

Les benchmarks ci-dessous comparent plusieurs méthodes sur Llama 3.1 8B et 70B. Ils rapportent la précision, le débit en jetons par seconde, la mémoire de pointe en Go et le temps de quantification.

Llama 3.1 70B en bf16 a été exécuté sur 2 GPU NVIDIA A100 80GB. Les méthodes FP8 ont été exécutées sur 1 GPU NVIDIA H100 80GB, et toutes les autres méthodes sur 1 GPU NVIDIA A100 80GB. Le débit a été mesuré avec une taille de lot de 1, en générant 64 jetons. Les résultats incluent torch.compile et les noyaux Marlin lorsque la méthode les prend en charge.

Les résultats se regroupent en trois plages de bits.

BitsMéthodes évaluéesMémoire vs. bf16Précision
8bitsandbytes int8, HQQ, Quanto, torchao, FP8Environ 2 fois plus petitTrès proche de bf16
4AWQ, GPTQ, HQQ, bitsandbytes NF4, SINQEnviron 4 fois plus petitÉlevé. AWQ et GPTQ sont souvent en tête, mais nécessitent une calibration.
Inférieur à 4VPTQ, AQLM, GPTQ 2 bitsPlus de 4 fois plus petitBaisse notable, en particulier à 2 bits. AQLM et VPTQ nécessitent un long temps de quantification.

Évaluez la précision et la vitesse sur votre propre tâche et votre propre matériel avant de choisir une méthode pour la production.

Update on GitHub