GGUF vs AWQ vs GPTQ vs FP8 vs NF4 : choix de quantification des LLM

Traduction automatique

Cet article a été traduit automatiquement depuis la version originale en anglais.

Choisissez la quantification des LLM selon le runtime, le matériel et la tâche à exécuter. GGUF regroupe les tenseurs du modèle et les métadonnées. AWQ et GPTQ réduisent la précision des poids après l’entraînement. FP8 utilise des valeurs à virgule flottante sur huit bits. NF4 stocke les poids sur quatre bits et sert couramment à entraîner des adaptateurs QLoRA. Ces noms décrivent différentes parties du processus de chargement et d’exécution du modèle.

Choisissez d’abord le runtime et le matériel. Sélectionnez ensuite une représentation prise en charge par le runtime dont la version est fixée pour l’architecture exacte. Évaluez la qualité sur les tâches, la mémoire, le temps jusqu’au premier token, le débit et la concurrence avant d’accepter des fichiers de modèle plus petits.

Vérifiez la compatibilité avant de comparer la taille des fichiers ou le nombre de bits.

Tableau de décision

ObjectifPoint de départVérifications préalables
Inférence locale sur CPU, Metal ou llama.cpp portableGGUF avec une quantification documentéePrise en charge de l’architecture, gabarit de conversation, comportement du contexte, paramètres de quantification et révision source.
Inférence GPU avec quantification des poids calibréeAWQ ou GPTQMoteur de serving, GPU, largeur en bits, taille des groupes, kernels et architecture du modèle.
Serving sur GPU de datacenter pris en chargeFP8Capacités matérielles, implémentation du runtime, mode de calibration et qualité de bout en bout.
Entraînement économe en paramètres avec des poids gelés sur 4 bitsNF4 via bitsandbytesPrécision arithmétique, mémoire nécessaire à l’entraînement et utilisation d’un adaptateur ou de poids fusionnés pour le déploiement.
Prototype Transformers simplebitsandbytes sur 8 ou 4 bitsPrise en charge du backend et adéquation entre le chemin du prototype et le serveur de production.

GGUF ne définit pas une quantification unique

Une extension .gguf indique comment les tenseurs et les métadonnées sont empaquetés, et non la précision de chaque tenseur. Des noms tels que Q4_K_M identifient les recettes de quantification de llama.cpp, qui peuvent traiter différemment certains groupes de tenseurs. Consignez le checkpoint d’origine, la version du convertisseur, la commande de quantification et les hashes des fichiers. La calibration utilise des entrées représentatives pour choisir les paramètres de quantification. Si la conversion a utilisé ces entrées, consignez également le dataset.

AWQ et GPTQ nécessitent un chemin de serving compatible

Les fichiers de modèle AWQ et GPTQ utilisent généralement Safetensors ainsi que des paramètres décrivant la méthode de quantification. Un modèle peut être téléchargé correctement tout en basculant vers un kernel lent ou en échouant sur une architecture non prise en charge. Consultez la matrice de compatibilité actuelle de Transformers, vLLM ou de la version réelle du serveur avant de sélectionner les fichiers du modèle.

FP8 et NF4 répondent à des problèmes différents

FP8 est intéressant lorsque l’accélérateur et la pile de serving l’implémentent efficacement. NF4 sert principalement à stocker des poids de modèle gelés pendant l’entraînement de petits adaptateurs dans des flux de travail de type QLoRA. Dans bitsandbytes, le dtype de calcul définit la précision utilisée pour l’arithmétique ; elle peut différer de celle des poids stockés sur quatre bits. La quantification imbriquée optionnelle compresse également les constantes utilisées pour représenter ces poids. Aucune de ces désignations ne garantit la même qualité, la même vitesse ou la même consommation mémoire selon les modèles et le matériel.

Liste de vérification pour l’évaluation

Le stockage sur quatre bits ne signifie pas que tout le processus utilise quatre bits par paramètre. Les métadonnées de quantification, les tenseurs de précision supérieure, les tampons temporaires et le cache d’attention demandent davantage de mémoire. Testez la longueur des prompts et les requêtes concurrentes que vous prévoyez de servir.

  • comparez le même checkpoint source et le même jeu de prompts
  • incluez les contextes longs et les requêtes concurrentes
  • mesurez la conformité aux schémas et la correction des tool calls en plus de la perplexité
  • consignez la mémoire maximale du dispositif et de l’hôte
  • vérifiez le temps jusqu’au premier token et le débit de génération
  • examinez les segments de qualité rares ou coûteux
  • conservez la licence, la révision source, le convertisseur, la recette et le hash avec les fichiers du modèle

Pour approfondir

Références