Transformers documentation
Genel Bakış
Genel Bakış
Quantization, bir modelin ağırlıklarını ve bazen aktivasyonlarını daha az bit ile saklayarak modelin daha az bellek gerektirmesini sağlar. Modeller genellikle bf16 olarak yüklenir; bu, parametre başına 2 bayt yer kaplar. 8B parametreli bir model, bf16 ağırlıkları için yaklaşık 16GB, 8 bit için yaklaşık 8GB ve 4 bit için yaklaşık 4–5GB bellek gerektirir. Daha az bit kullanmak bazı doğruluk kayıplarına yol açar ve her quantization yöntemi, bellek, hız ve doğruluk arasında farklı bir ödünleşim yapar.
Transformers, from_pretrained() üzerinden 20'den fazla kuantizasyon yöntemini entegre eder; bu sayede hangi yöntemi seçerseniz seçin aynı yükleme kodunu kullanırsınız.
Kantize edilmiş bir modelin kullanılabileceği iki yol
Kuantizasyonu nasıl kullanacağınız, kontrol noktanızın (checkpoint) zaten kuantize edilip edilmediğine bağlıdır.
| Şu an sahip olduğunuz | Yaptıklarınız | Yöntemler |
|---|---|---|
| Tam hassasiyetli bir denetim noktası | from_pretrained fonksiyonuna bir kuantizasyon yapılandırması iletin; ağırlıklar yükendikçe kuantize edilir. | Bir modeli yüklerken nicelleştirme |
| Zaten kuantize edilmiş bir checkpoint | from_pretrained fonksiyonunu bir kuantizasyon yapılandırması olmadan çağırın. Transformers, yöntemi kontrol noktasının config.json dosyasından veya adını verdiğiniz GGUF dosyasından okur. | Önceden kuantize edilmiş bir kontrol noktası yükleyin |
AWQ, AutoRound, AQLM, compressed-tensors ve GGUF gibi bazı yöntemler yalnızca bir checkpoint'ten yüklenebilir. Modeli önce yöntemin kendi kütüphanesiyle kuantize edersiniz, ardından sonucu Transformers içinde yüklersiniz.
Bir modeli yüklerken nicelleştirme
Yöntemin yapılandırma sınıfını oluşturun ve quantization_config parametresine iletin. Aşağıdaki örnek, bitsandbytes ile 8B modelini 4 bit olarak yükler.
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",
)Bu gruptaki her yöntemin TorchAoConfig veya BitsAndBytesConfig gibi kendi yapılandırma sınıfı vardır. Çoğu, kalibrasyon veri seti gerektirmez. GPTQ, model yüklenirken bir veri seti üzerinde kalibrasyon yaptığı için istisnadır.
Önceden nicelenmiş bir kontrol noktası yükleyin
Önceden kuantize edilmiş bir checkpoint, config.json dosyasında bir quantization_config barındırır. from_pretrained bunu bulduğunda, eşleşen kuantizleyici otomatik olarak seçilir.
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained(
"TheBloke/zephyr-7B-alpha-AWQ",
device_map="auto",
)
print(model.config.quantization_config.quant_method)Nokta kontrol noktasını (checkpoint) yüklemekten önce, yöntemin bağımlı olduğu kütüphaneyi yükleyin. Her yöntem sayfasında nelerin yüklenmesi gerektiği listelenir. Hangi çekirdek (kernel) arka ucunun çalışacağı gibi yükleme seçeneklerini değiştirmek için, aynı türden bir yapılandırma (config) nesnesi iletin. Bu seçenekler, nokta kontrol noktasında saklanan seçeneklerle birleştirilir.
GGUF denetim noktaları
GGUF checkpoint, ağırlıkları, yapılandırmayı ve tokenizer'ı tek bir dosyada barındıran bir dosyadır ve from_pretrained'in okuyacağı bir config.json dosyası yoktur. Dosyanın adını gguf_file ile belirtin.
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained(
"unsloth/Qwen3.5-4B-GGUF",
gguf_file="Qwen3.5-4B-Q4_K_M.gguf",
)Çoğu GGUF modeli, yüklenirken tam hassasiyete dekuantize edilir; bu nedenle, kuantize edilmemiş bir model kadar bellek kullanır. Ağırlıklar yalnızca kernels paketi yüklüyse ve Qwen3.5 ile Qwen3.5 MoE için MPS üzerinde sıkıştırılmış kalır. Detaylar için GGUF bölümüne bakın.
Kantize edilmiş bir modeli kaydet
Kantize ağırlıkları ve quantization_config değerlerini kaydetmek için save_pretrained() veya push_to_hub() çağırın. Her yöntem, kantize ağırlıklarını kaydedemeyebilir.
Bir yöntem seçin
Bir yöntem seçin, yaygın hedefler için bir başlangıç noktası önerir ve her yöntemi donanım, bit genişliği, tasarruf, ince ayar ve torch.compile desteği açısından karşılaştırır. Bir modelin her hassasiyette donanımınızın belleğine sığıp sığmadığını kontrol etmek için kantizasyon seçicisini kullanın.
Diğer araçlar
Bu araçlar, modelleri Transformers dışında kuantize eder.
- Optimum, modelleri Intel CPU ve ONNX Runtime gibi belirli donanımlar ve çalışma zamanları için kuantize eder.
- Hub Spaces bir modeli kuantize eder ve sonucu hesabınıza gönderir: bitsandbytes, GGUF ve MLX.
Kaynaklar
Sonraki adımlar
- Kantizasyon şemalarının, granülerliğin ve tekniklerin nasıl çalıştığını öğrenmek için Kantizasyon kavramları bölümünü okuyun.
- Uzun üretimler sırasında bellek tasarrufu sağlamak için KV önbelleğini quantized cache ile kuantize edin.
- Bir modeli Dışa aktarımları kuantize etme ile dışa aktarırken kuantize edin.
- Kantizasyon yöntemi katkıda bulunma ile yeni bir yöntem katkıda bulunun.