Transformers documentation
Ikhtisar
Ikhtisar
Quantization menyimpan bobot model, dan kadang-kadang aktivasinya, dalam jumlah bit yang lebih sedikit sehingga model membutuhkan lebih sedikit memori. Model biasanya dimuat dalam bf16, yang membutuhkan 2 byte per parameter. Model 8B membutuhkan sekitar 16GB untuk bobotnya dalam bf16, sekitar 8GB pada 8 bit, dan sekitar 4–5GB pada 4 bit. Jumlah bit yang lebih sedikit mengorbankan sedikit akurasi, dan setiap metode quantization membuat tradeoff yang berbeda antara memori, kecepatan, dan akurasi.
Transformers mengintegrasikan lebih dari 20 metode kuantisasi melalui from_pretrained(), sehingga Anda menggunakan kode pemuatan yang sama terlepas dari metode yang Anda pilih.
Dua cara untuk menggunakan model terkuantisasi
Cara Anda menggunakan kuantisasi bergantung pada apakah checkpoint Anda sudah terkuantisasi.
| Anda memiliki | Apa yang Anda lakukan | Metode |
|---|---|---|
| Checkpoint presisi penuh | Lewatkan konfigurasi kuantisasi ke from_pretrained, dan bobot akan dikuantisasi saat dimuat. | Kuantisasi model saat memuat |
| Checkpoint yang sudah dikuantisasi | Panggil from_pretrained tanpa konfigurasi kuantisasi. Transformers membaca metode dari config.json checkpoint, atau dari file GGUF yang Anda tentukan. | Memuat checkpoint yang sudah dikuantisasi |
Beberapa metode, seperti AWQ, AutoRound, AQLM, compressed-tensors, dan GGUF, hanya dapat dimuat dari checkpoint. Anda terlebih dahulu mengkuantisasi model dengan pustaka milik metode tersebut, lalu memuat hasilnya di Transformers.
Kuantisasi model saat memuat
Buat kelas konfigurasi untuk metode tersebut dan teruskan ke quantization_config. Contoh di bawah memuat model 8B dalam 4 bit menggunakan bitsandbytes.
import torch
from transformers import AutoModelForCausalLM, BitsAndBytesConfig
quantization_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_compute_dtype=torch.bfloat16,
)
model = AutoModelForCausalLM.from_pretrained(
"meta-llama/Llama-3.1-8B-Instruct",
quantization_config=quantization_config,
device_map="auto",
)Setiap metode dalam grup ini memiliki kelas konfigurasinya sendiri, seperti TorchAoConfig atau BitsAndBytesConfig. Sebagian besar dari mereka tidak memerlukan dataset kalibrasi. GPTQ adalah pengecualian karena melakukan kalibrasi pada dataset saat model dimuat.
Muat checkpoint yang sudah dikuantisasi
Checkpoint yang sudah dikuantisasi menyimpan quantization_config di config.json. Ketika from_pretrained menemukannya, kuantizer yang sesuai akan dipilih secara otomatis.
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained(
"TheBloke/zephyr-7B-alpha-AWQ",
device_map="auto",
)
print(model.config.quantization_config.quant_method)Instal pustaka yang menjadi dependensi metode sebelum memuat checkpoint. Setiap halaman metode mencantumkan apa yang perlu diinstal. Untuk mengubah opsi pemuatan, seperti kernel backend yang dijalankan, lewati config dengan tipe yang sama. Opsi-opsinya akan digabungkan dengan opsi yang tersimpan di dalam checkpoint.
Checkpoint GGUF
Checkpoint GGUF adalah satu file yang menyimpan bobot, konfigurasi, dan tokenizer, dan tidak memiliki config.json untuk dibaca oleh from_pretrained. Beri nama file tersebut dengan gguf_file.
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained(
"unsloth/Qwen3.5-4B-GGUF",
gguf_file="Qwen3.5-4B-Q4_K_M.gguf",
)Sebagian besar model GGUF didekuantisasi ke presisi penuh saat dimuat, sehingga menggunakan memori sebanyak model yang tidak dikuantisasi. Bobot tetap ter-packing hanya di MPS dengan paket kernels yang terpasang, untuk Qwen3.5 dan Qwen3.5 MoE. Lihat GGUF untuk detailnya.
Simpan model terkuantisasi
Panggil save_pretrained() atau push_to_hub() untuk menyimpan bobot terkuantisasi beserta quantization_config-nya. Tidak semua metode dapat menyimpan bobot terkuantisasinya.
Pilih metode
Pilih metode merekomendasikan titik awal untuk tujuan umum dan membandingkan setiap metode berdasarkan perangkat keras, lebar bit, penghematan, penyesuaian halus, dan dukungan torch.compile. Gunakan pemilih kuantisasi untuk memeriksa apakah model muat di memori perangkat keras Anda pada setiap presisi.
Alat lain
Perangkat ini mengkuantisasi model di luar Transformers.
- Optimum melakukan kuantisasi model untuk perangkat keras dan runtime tertentu, seperti CPU Intel dan ONNX Runtime.
- Hub Spaces mengkuantisasi model dan mendorong hasilnya ke akun Anda: bitsandbytes, GGUF, dan MLX.
Sumber daya
Langkah selanjutnya
- Baca Konsep kuantisasi untuk memahami cara kerja skema kuantisasi, granularitas, dan teknik-tekniknya.
- Kuantisasi KV cache untuk menghemat memori selama generasi panjang dengan cache terkuantisasi.
- Kuantisasi model saat mengekspornya dengan Ekspor yang dikuantisasi.
- Kontribusikan metode baru dengan Kontribusikan metode kuantisasi.