Transformers documentation
AutoRound
AutoRound
AutoRound adalah algoritma kuantisasi canggih yang memberikan akurasi tinggi, bahkan pada presisi 2-bit. Algoritma ini memanfaatkan sign gradient descent untuk menyetel ulang nilai pembulatan dan ambang batas pemotongan min-max hanya dalam 200 langkah. Dirancang untuk kompatibilitas yang luas, algoritma ini mendukung berbagai LLM secara mulus dan terus diperluas untuk mencakup lebih banyak VLM. Algoritma ini juga mendukung kuantisasi dan inferensi di berbagai platform perangkat keras, termasuk CPU, XPU, dan CUDA.
AutoRound juga menyediakan berbagai fitur yang berguna, termasuk penyetelan dan inferensi mixed-bit otomatis, dukungan untuk tipe data MXFP4 dan NVFP4, kuantisasi tanpa model, ekspor ke format seperti GPTQ, AWQ, GGUF, dan LLM-Compressor, serta resep penyetelan yang fleksibel. Untuk gambaran menyeluruh dan pembaruan terbaru, lihat README AutoRound.
AutoRound awalnya dikembangkan sebagai bagian dari Intel Neural Compressor, berfungsi sebagai pustaka kompresi model serbaguna untuk pembelajaran mendalam. Sejak itu, AutoRound telah berkembang menjadi pustaka mandiri yang berfokus secara khusus pada optimasi presisi rendah untuk model bahasa besar (LLM). AutoRound tetap terintegrasi sepenuhnya dengan Intel Neural Compressor, dan Anda dapat menjelajahi repositori untuk detail lebih lanjut.
Instalasi
pip install auto-round
Konfigurasi Kuantisasi yang Didukung
AutoRound mendukung konfigurasi kuantisasi berikut:
- Weight-Only INT2–INT8
- Bobot Saja Campuran-Bit
- GGUF Q*_K
- MXFP (dukungan terbatas)
- NVFP4 (dukungan terbatas)
Kompatibilitas Perangkat Keras
CPU, XPU, dan CUDA untuk kuantisasi maupun inferensi.
Kuantisasi dan Serialisasi (offline)
Saat ini, hanya mode offline yang didukung untuk menghasilkan model terkuantisasi.
Penggunaan Baris Perintah
auto-round \
--model Qwen/Qwen3-0.6B \
--scheme "W4A16" \
--group_size 128 \
--output_dir ./tmp_autoroundAutoRound juga menyediakan empat resep lainnya, auto-round-best, auto-round-light,auto-round-opt-rtn,auto-round-rtn, yang dirancang untuk akurasi optimal dan peningkatan kecepatan, masing-masing.
Untuk 2 bit, kami merekomendasikan penggunaan auto-round-best dengan --enable_alg_ext.
Penggunaan AutoScheme
AutoScheme adalah fitur yang secara otomatis memilih skema kuantisasi terbaik dari opsi yang tersedia untuk setiap lapisan yang akan dikuantisasi dalam hitungan menit, dengan mempertimbangkan lebar bit rata-rata yang ditargetkan.
auto-round \
--model Qwen/Qwen3-0.6B \
--options "W4A16,W2A16G64" \
--target_bits 3.5 \
--output_dir ./tmp_autoroundKombinasi Algoritma
AutoRound mendukung penggabungan beberapa algoritma, seperti AutoRound, AutoRound + AWQ, dan AutoRound + AWQ + Hadamard (dukungan sangat terbatas). Saat ini, kami sedang memperluas dukungan untuk lebih banyak algoritma. Hal ini memungkinkan optimasi lebih lanjut pada hasil kuantisasi, terutama untuk skenario yang melibatkan aktivasi terkuantisasi.
auto-round \
--model Qwen/Qwen3-0.6B \
--algs "autoround,awq" \
--output_dir ./tmp_autoroundPenggunaan API AutoRound
Pengaturan ini menawarkan keseimbangan yang lebih baik antara akurasi dan biaya penyetelan, serta direkomendasikan untuk semua skenario.
from auto_round import AutoRound
model_name = "Qwen/Qwen3-0.6B"
# mixed bits config
# layer_config = {"model.decoder.layers.6.self_attn.out_proj": {"bits": 2, "group_size": 32}}
ar = AutoRound(
model_name,
scheme="W4A16",
# enable_torch_compile=True,
# layer_config=layer_config,
)
output_dir = "./tmp_autoround"
# format= 'auto_round'(default), 'llm_compressor', "gguf:q4_k_m", 'auto_gptq', 'auto_awq'
ar.quantize_and_save(output_dir, format='auto_round') Resep terbaik AutoRound
Pengaturan ini memberikan akurasi terbaik dalam sebagian besar skenario, tetapi 4–5× lebih lambat daripada resep AutoRound standar. Pengaturan ini sangat direkomendasikan untuk kuantisasi 2-bit dan merupakan pilihan yang baik jika sumber daya yang memadai tersedia.
from auto_round import AutoRound
model_name = "Qwen/Qwen3-0.6B"
ar = AutoRound(
model_name,
scheme="W4A16",
nsamples=512,
iters=1000,
)
output_dir = "./tmp_autoround"
ar.quantize_and_save(output_dir, format='auto_round') Resep AutoRoundLight
Pengaturan ini menawarkan kecepatan terbaik (2 - 3X lebih cepat daripada AutoRound), tetapi dapat menyebabkan penurunan akurasi yang signifikan pada model kecil dan kuantisasi 2-bit. Pengaturan ini direkomendasikan untuk konfigurasi 4-bit dan model yang lebih besar dari 3B.
from transformers import AutoModelForCausalLM, AutoTokenizer
from auto_round import AutoRound
model_name = "Qwen/Qwen3-0.6B"
ar = AutoRound(
model_name,
iters=50,
lr=5e-3,
)
output_dir = "./tmp_autoround"
ar.quantize_and_save(output_dir, format='auto_round') Rata-rata Akurasi W4G128 untuk 13 tugas (mmlu-pro, if_eval, gsm8k, dll.) dan Hasil Biaya Waktu (Pengujian dilakukan pada Nvidia A100 80G menggunakan versi PyTorch 2.6.0 dengan enable_torch_compile):
| Model | Qwen2.5-0.5B-Instruct | Falcon3-3B | Qwen2.5-7B-Instruct | Meta-Llama-3.1-8B-Instruct | Falcon3-10B | Qwen2.5-72B-Instruct |
|---|---|---|---|---|---|---|
| 16bits | 0.4192 | 0.5203 | 0.6470 | 0.6212 | 0.6151 | 0.7229 |
| Terbaik | 0.4137(7m) | 0.5142(23m) | 0.6426(58m) | 0.6116(65m) | 0.6092(81m) | 0.7242(575m) |
| Default | 0.4129(2m) | 0.5133(6m) | 0.6441(13m) | 0.6106(13m) | 0.6080(18m) | 0.7252(118m) |
| Terang | 0.4052(2m) | 0.5108(3m) | 0.6453(5m) | 0.6104(6m) | 0.6063(6m) | 0.7243(37m) |
Inferensi
AutoRound secara otomatis memilih backend terbaik yang tersedia berdasarkan pustaka yang terpasang dan meminta pengguna untuk menginstal pustaka tambahan ketika backend yang lebih baik ditemukan.
CPU
Mendukung 2, 4, dan 8 bit. Kami merekomendasikan penggunaan backend AutoRound Kernel (ARK) untuk inferensi. PyTorch 2.8.0 atau lebih baru diperlukan untuk 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]))XPU
Mendukung 2, 4, dan 8 bit. Kami merekomendasikan penggunaan backend AutoRound Kernel (ARK) untuk inferensi. PyTorch 2.8.0 atau lebih baru diperlukan dengan 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="xpu", 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]))CUDA
Mendukung 2-8 bit. Kami merekomendasikan penggunaan GPTQModel untuk inferensi 4 dan 8 bit.
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "OPEA/Qwen2.5-1.5B-Instruct-int4-sym-inc"
model = AutoModelForCausalLM.from_pretrained(model_name, device_map="cuda", 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]))Tentukan Backend Inferensi
AutoRound secara otomatis memilih backend untuk setiap layer berdasarkan kompatibilitas. Secara umum, urutan prioritasnya adalah Marlin > ExLLaMAV2 > Triton, tetapi pilihan akhir bergantung pada faktor-faktor seperti group size, bit width, packing format, perangkat hardware, dan detail implementasi lainnya. Untuk detail lebih lanjut, silakan merujuk ke backends,
Backend mungkin tidak selalu menjadi yang paling sesuai untuk perangkat tertentu. Anda dapat menentukan backend yang diinginkan, seperti “ark” untuk CPU dan XPU, atau “marlin/exllamav2/triton” untuk CUDA, sesuai dengan kebutuhan atau kompatibilitas perangkat keras Anda. Harap diperhatikan bahwa pustaka tambahan yang sesuai mungkin diperlukan.
from transformers import AutoModelForCausalLM, AutoTokenizer, AutoRoundConfig
model_name = "OPEA/Qwen2.5-1.5B-Instruct-int4-sym-inc"
quantization_config = AutoRoundConfig(backend="ark")
model = AutoModelForCausalLM.from_pretrained(model_name, device_map="cpu", quantization_config=quantization_config, 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]))Mengonversi GPTQ/AWQ ke AutoRound
Sebagian besar model GPTQ/AWQ dapat dikonversi ke format AutoRound untuk kompatibilitas dan dukungan yang lebih baik dengan perangkat Intel. Harap diperhatikan bahwa konfigurasi kuantisasi akan berubah jika model tersebut diserialisasi.
from transformers import AutoModelForCausalLM, AutoTokenizer, AutoRoundConfig
model_name = "ybelkada/opt-125m-gptq-4bit"
quantization_config = AutoRoundConfig()
model = AutoModelForCausalLM.from_pretrained(model_name, device_map="cpu", quantization_config=quantization_config, 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]))Isu
Jika Anda mengalami masalah dengan integrasi transformers, silakan buka issue di
repositori transformers.
Jika Anda mengalami masalah dengan auto-round, silakan buka issue di
repositori AutoRound.
Pengakuan
Ucapan terima kasih khusus kepada pustaka presisi rendah open-source seperti AutoGPTQ, AutoAWQ, GPTQModel, Triton, Marlin, dan ExLLaMAV2 yang menyediakan kernel CUDA presisi rendah, yang dimanfaatkan dalam AutoRound.
Kontribusi
Kontribusi untuk AutoRound sangat diterima dan dihargai! Baik itu memperbaiki bug, meningkatkan dokumentasi, menambahkan fitur baru, atau mengusulkan perbaikan, bantuan Anda selalu dihargai.
Update on GitHub