Transformers documentation

Genel Bakış

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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ğunuzYaptıklarınızYö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 checkpointfrom_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

Update on GitHub