Transformers documentation

AutoRound

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

AutoRound

AutoRound est un algorithme de quantification avancé qui offre une précision élevée, même à une précision de 2 bits. Il exploite la descente de gradient de signe pour affiner à la fois les valeurs d'arrondi et les seuils de rognage min-max en seulement 200 étapes. Conçu pour une compatibilité étendue, il prend en charge sans accroc une large gamme de LLM et s'étend activement pour couvrir davantage de VLM. Il prend également en charge la quantification et l'inférence sur plusieurs plateformes matérielles, notamment CPU, XPU et CUDA.

AutoRound propose également une variété de fonctionnalités utiles, notamment l'ajustement et l'inférence automatiques en bits mixtes, la prise en charge des types de données MXFP4 et NVFP4, la quantification sans modèle, l'exportation vers des formats tels que GPTQ, AWQ, GGUF et LLM-Compressor, ainsi que des recettes d'ajustement flexibles. Pour un aperçu complet et les dernières mises à jour, consultez le README d'AutoRound.

AutoRound a été initialement développé dans le cadre de Intel Neural Compressor, servant de bibliothèque de compression de modèles à usage général pour l'apprentissage profond. Il a depuis évolué en bibliothèque autonome, axée spécifiquement sur l'optimisation basse précision pour les grands modèles de langage (LLM). AutoRound reste entièrement intégré à Intel Neural Compressor, et vous pouvez consulter le dépôt pour plus de détails.

Installation

pip install auto-round

Configurations de quantification prises en charge

AutoRound prend en charge les configurations de quantification suivantes :

  1. Poids uniquement INT2–INT8
  2. Poids uniquement en bits mixtes
  3. GGUF Q*_K
  4. MXFP (prise en charge limitée)
  5. NVFP4 (prise en charge limitée)

Compatibilité matérielle

CPU, XPU et CUDA pour la quantification et l'inférence.

Quantification et sérialisation (hors ligne)

Actuellement, seul le mode hors ligne est pris en charge pour générer des modèles quantifiés.

cmd de quantification
auto scheme cmd
combinaisons alg
quantization auto-round api
quantization auto-round-best
quantization auto-round-light

Utilisation en ligne de commande

auto-round \
    --model Qwen/Qwen3-0.6B \
    --scheme "W4A16" \
    --group_size 128 \
    --output_dir ./tmp_autoround

AutoRound propose également quatre autres recettes, auto-round-best, auto-round-light,auto-round-opt-rtn,auto-round-rtn, conçues respectivement pour une précision optimale et une vitesse améliorée. Pour 2 bits, nous recommandons d'utiliser auto-round-best avec --enable_alg_ext.

Précision moyenne de 13 tâches (mmlu-pro, if_eval, gsm8k, etc.) et résultats de coût temporel pour W4G128 (les tests ont été effectués sur une Nvidia A100 80G en utilisant la version 2.6.0 de PyTorch avec enable_torch_compile) :

ModèleQwen2.5-0.5B-InstructFalcon3-3BQwen2.5-7B-InstructMeta-Llama-3.1-8B-InstructFalcon3-10BQwen2.5-72B-Instruct
16 bits0.41920.52030.64700.62120.61510.7229
Meilleur0.4137(7m)0.5142(23m)0.6426(58m)0.6116(65m)0.6092(81m)0.7242(575m)
Par défaut0.4129(2m)0.5133(6m)0.6441(13m)0.6106(13m)0.6080(18m)0.7252(118m)
Clair0.4052(2m)0.5108(3m)0.6453(5m)0.6104(6m)0.6063(6m)0.7243(37m)

Inférence

AutoRound sélectionne automatiquement le meilleur backend disponible en fonction des bibliothèques installées et invite l'utilisateur à installer des bibliothèques supplémentaires lorsqu'un backend plus performant est détecté.

inférence cpu
inférence xpu
inférence cuda
backend d'inférence
convertir le format

CPU

Prend en charge 2, 4 et 8 bits. Nous recommandons d'utiliser le backend AutoRound Kernel (ARK) pour l'inférence. PyTorch 2.8.0 ou une version ultérieure est requis avec ARK.

from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "OPEA/Qwen2.5-1.5B-Instruct-int4-sym-inc"
model = AutoModelForCausalLM.from_pretrained(model_name, device_map="cpu", dtype="auto")
tokenizer = AutoTokenizer.from_pretrained(model_name)
text = "There is a girl who likes adventure,"
inputs = tokenizer(text, return_tensors="pt").to(model.device)
print(tokenizer.decode(model.generate(**inputs, max_new_tokens=50, do_sample=False)[0]))

Problèmes

Si vous rencontrez des problèmes avec l'intégration transformers, veuillez ouvrir un ticket sur le dépôt transformers.
Si vous rencontrez des problèmes avec auto-round, veuillez ouvrir un ticket sur le dépôt AutoRound.

Remerciements

Un remerciement spécial aux bibliothèques open source de basse précision telles qu'AutoGPTQ, AutoAWQ, GPTQModel, Triton, Marlin et ExLLaMAV2, qui fournissent des noyaux CUDA à basse précision utilisés dans AutoRound.

Contribution

Les contributions à AutoRound sont les bienvenues et très appréciées ! Que ce soit pour corriger des bugs, améliorer la documentation, ajouter de nouvelles fonctionnalités ou suggérer des améliorations, votre aide est toujours valorisée.

Update on GitHub