YZ'de kuantizasyon, bir sinir ağının ağırlıkları ve aktivasyonlarının sayısal hassasiyetini azaltan bir model sıkıştırma tekniğidir. Her parametre 32 bitlik kayan noktalı sayı olarak saklanmak yerine, kuantize edilmiş modeller 8 bit, 4 bit veya daha düşük biçimler kullanır. Bellek ve hesaplama, bit sayısıyla orantılı olduğundan bu tek değişiklik bir modeli 2-8 kat küçültebilir ve çıkarımı hızlandırarak büyük modellerin telefonlarda, dizüstü bilgisayarlarda, tarayıcılarda ve gömülü cihazlarda çalıştırılmasını pratik hale getirebilir.
Kuantizasyon nasıl çalışır
Her ağırlık başlangıçta kesin bir gerçek sayıdır, ancak bu hassasiyetin çoğu nadiren gereklidir. Kuantizasyon, orijinal değer aralığını temsil edilebilir daha küçük bir seviye kümesine eşler. Eğitim sonrası kuantizasyonda (PTQ) tamamen eğitilmiş bir model genellikle kayan noktalı ağırlıklar daha dar bir tamsayı aralığına sığacak şekilde ölçeklenerek bir kez dönüştürülür. quantized = round(weight / scale) + zero_point formundaki basit bir doğrusal eşleme işin büyük bölümünü halleder ve aynı scale ve zero_point değerleri, çıkarım sırasında çıktıları tekrar kayan noktalı sayılara dönüştürmek için kullanılır.
Örneğin, 8 bitlik bir tamsayı yalnızca 256 farklı değer temsil edebilir; bu nedenle ağırlıkları başlangıçta float32'de [-1.0, 1.0] aralığında olan bir katman, bunları 256 eşit aralıklı adıma ayırmalıdır. Bu adımlar gerçek ağırlık dağılımına ne kadar iyi ayarlanırsa, doğruluk kaybı o kadar az olur. Daha iyi sonuçlar için kuantizasyon farkındalığıyla eğitim (QAT), ince ayar sırasında yuvarlama hatalarını simüle ederek modelin gürültüye uyum sağlamasını sağlar ve genellikle orijinal doğruluğun neredeyse tamamını geri kazandırır.
Neden önemlidir
Kuantizasyon, milyarlarca parametreli bir modelin birkaç gigabayt RAM'e sığmasını ve dizüstü bilgisayar CPU'sunda bir saniyenin çok altında yanıt vermesini sağlayan şeydir. Enerji tüketimini azaltır, sunucu maliyetlerini düşürür ve gizliliğe duyarlı veya çevrimdışı kullanım senaryoları için cihaz üzerinde YZ'nin önünü açar. Aynı zamanda donanımla da etkileşir: modern GPU'lar, NPU'lar ve CPU'lar özel INT8 ve INT4 matris birimleriyle gelir; bu nedenle kuantize edilmiş bir model, aynı modelin float32 sürümünden birkaç kat daha hızlı çalışabilir.
Temel türler
- Eğitim sonrası kuantizasyon (PTQ): Zaten eğitilmiş bir modeli dönüştürür. En ucuz seçenek, küçük doğruluk düşüşü.
- Kuantizasyon farkındalığıyla eğitim (QAT): Eğitim sırasında kuantizasyonu simüle ederek ağırlıkların uyum sağlamasını sağlar. Daha iyi doğruluk, ek hesaplama gerektirir.
- Dinamik kuantizasyon: Ağırlıkları düşük hassasiyette tutar ancak aktivasyonları anlık olarak hesaplar. Değişken dizi uzunluklarına sahip NLP modelleri için kullanışlıdır.
- Yalnızca ağırlık kuantizasyonu: Ağırlıkları 4 bit veya daha düşük biçimde saklar, anlık olarak dekuantize eder. Büyük dil modellerini sunmak için yaygındır.
- GPTQ, AWQ, GGUF: Doğruluğu korumak için farklı şemalar uygulayan 4 bit LLM kuantizasyonu için popüler algoritmalar ve dosya biçimleri.
Kuantizasyon, YZ dağıtım hattında varsayılan bir adım haline geldi. PyTorch'un torch.quantization, NVIDIA TensorRT ve ONNX Runtime gibi araçlar bu teknikleri üretim yığınlarına entegre ederek ekiplerin küçük bir miktar doğruluk karşılığında hız, bellek ve maliyette önemli kazanımlar elde etmesini sağlar.