Makale Bülteni — SmoothQuant
Aktivasyonlardaki aykırı değerleri matematiksel bir eşdeğerlikle ağırlıklara aktararak büyük dil modellerinde W8A8 tam INT8 çıkarımını doğruluk kaybı olmadan ve donanım hızlandırmasıyla mümkün kılan post-training kuantizasyon yöntemi.
MIT Han Lab ve NVIDIA araştırmacıları tarafından yayımlanan “SmoothQuant: Accurate and Efficient Post-Training Quantization for Large Language Models” makalesi, üretim ortamında LLM servis eden sistem mimarlarının yıllardır çözemediği en kronik donanım çıkmazına doğrudan neşter vurdu1. Sektörde yaygınlaşan ağırlık odaklı (weight-only) kuantizasyon teknikleri modellerin VRAM tüketimini düşürse de, hesaplama adımlarında aktivasyonlar 16-bit hassasiyetinde kaldığı için GPU’nun yüksek performanslı INT8 tensör çekirdekleri (Tensor Cores) atıl kalıyordu. Hem ağırlıkları hem aktivasyonları 8-bit’e (W8A8) çekme girişimleri ise modellerin 6,7 milyar parametre eşiğini aştığı anda patlayan aykırı aktivasyon değerleri (outliers) yüzünden matematiksel bir yıkımla sonuçlanıyordu. SmoothQuant, aktivasyonlardaki kuantizasyon zorluğunu çevrimdışı bir matematiksel dönüşümle ağırlık matrislerine aktararak hiçbir yeniden eğitim (retraining) gerektirmeden W8A8 INT8 çıkarımını üretim standardına dönüştürdü. Pratikte bunun anlamı şudur: Aynı GPU düğümünde iki kat daha büyük modelleri barındırabilir ve çıkarım throughput değerinizi doğrudan ikiye katlayabilirsiniz.
Bu mühendislik kazanımı makalede üç somut metrikle tescilleniyor: Standart FP16 çıkarıma kıyasla %50 daha az bellek tüketimi ve 1,56 kat çıkarım hızlanması, testlerin koşturulduğu tekil NVIDIA A100-80GB donanımı ve resmi açık kaynak depoda 1.700 yıldız, 72 açık issue ve 1 açık PR düzeyindeki topluluk ayak izi2.
İddia ve Gerçeklik: SmoothQuant
Büyük dil modellerinde matris çarpımlarının (GEMM) donanım seviyesinde hızlandırılması için hem girdi aktivasyonlarının hem de ağırlık tensörlerinin INT8 tamsayı formatında olması gerekir1. Ağırlıkları INT8 yapmak son derece kolayken, aktivasyonları kuantize etmek imkansıza yakındır; çünkü 6,7 milyar parametreyi geçen modellerde belirli kanallarda (channels) normallerinden yüz kat daha büyük aykırı değerler (activation outliers) ortaya çıkar. Standart per-tensor veya per-token kuantizasyon uygulandığında bu devasa aykırı değerler dinamik aralığı rehin alır ve geri kalan tüm küçük değerlerin sıfıra yuvarlanarak yok olmasına yol açar. Önceki çözümler aykırı kanalları tespit edip onları FP16’da tutup geri kalanı INT8’de çalıştırmayı denemişti; ancak bu karma hassasiyet (mixed-precision) yaklaşımı donanım seviyesinde ağır bir dallanma ve bellek parçalanması (fragmentation) yaratarak çıkarımı hızlandırmak yerine yavaşlatıyordu.
SmoothQuant bu krizin etrafından matematiksel bir ilüzyonla dolaşır. Yazarlar matris çarpımındaki doğrusal eşdeğerlikten faydalanarak $Y = (X \cdot \text{diag}(s)^{-1}) \cdot (\text{diag}(s) \cdot W)$ dönüşümünü kurgular. Kanal başına hesaplanan bir ölçekleme vektörü ($s$), aktivasyonların aykırı tepe noktalarını bölerek düzleştirir (smooth); bu bölmenin yarattığı matematiksel etki ise çevrimdışı olarak ağırlık matrisiyle çarpılarak telafi edilir. Ağırlıklar durağan ve tüm kanallara dağılmış homojen bir yapıya sahip olduğundan, bu ek ölçekleme ağırlıkların kuantizasyon kalitesini bozmaz. Böylece hem aktivasyonlar per-token hem de ağırlıklar per-channel olarak standart INT8 matris çarpım çekirdeklerine beslenebilir hale gelir.
Fakat üretim bandındaki her optimizasyon gibi SmoothQuant’ın da hesaba katılması gereken bir bedeli vardır. Algoritma sıfır eğitim (training-free) iddia etse de, aktivasyon kanallarının azami değerlerini tespit edebilmek için yaklaşık 512 rastgele cümleden oluşan temsil gücü yüksek bir kalibrasyon veri setine ihtiyaç duyar. Eğer üretim trafiğinizdeki prompt dağılımı kalibrasyon veri setinden radikal biçimde saparsa, aykırı değer eşikleri yanlış dengelenebilir. Ayrıca ağırlık ile aktivasyon arasındaki zorluk paylaşımını belirleyen alfa katsayısı (genelde 0,8 ile 0,85 arası) modele göre hassas ayarlanmalıdır; aksi takdirde ağırlıklara aktarılan yük bu kez ağırlık kuantizasyonunu kırarak modelin şaşkınlık (perplexity) skorunu bozabilir.
Kod ve Entegrasyon Haritası
MIT Han Lab tarafından GitHub üzerinde paylaşılan referans repo (mit-han-lab/smoothquant), CUTLASS kütüphanesi üzerine inşa edilmiş özel INT8 GEMM çekirdeklerini içeren torch-int paketiyle birlikte sunulmaktadır2. Akademik bir prototip olarak yola çıkan bu kod tabanı, OPT ve LLaMA modellerini dönüştürmek için temiz betikler içerse de, asıl endüstriyel devrim büyük çıkarım motorlarının SmoothQuant’ı çekirdeklerine entegre etmesiyle yaşandı.
NVIDIA, TensorRT-LLM motorunun merkezine SmoothQuant W8A8 desteğini yerleştirerek algoritmayı kurumsal üretim standardı haline getirdi2. Benzer şekilde vLLM, FasterTransformer, Intel Neural Compressor ve Microsoft ONNX Runtime projeleri de SmoothQuant ölçekleme katsayılarını yerel olarak desteklemektedir. Hatta AMD’nin Instinct MI300X serisi hızlandırıcılarında bile Composable Kernel altyapısı üzerinden SmoothQuant INT8 çıkarımı optimize edilmiştir. Hugging Face ekosisteminde Llama-2, Llama-3, Mistral, Mixtral ve Falcon ailelerinin dönüştürülmüş SmoothQuant kontrol noktaları açıkça paylaşılmaktadır.
Kod seviyesindeki en kritik operasyonel zorluk, bağımsız kütüphanelerin CUTLASS ve PyTorch sürümleri arasındaki ikili (binary) derleme uyumsuzluklarıdır. Ham torch-int paketini sıfırdan derlemek yerine, TensorRT-LLM veya vLLM gibi endüstriyel olarak paketlenmiş ve donanım optimizasyonu yapılmış servis motorlarını kullanmak üretim istikrarı açısından bir zorunluluktur. Ayrıca KV önbelleğinin (KV cache) de INT8 formatında saklanabilmesi için SmoothQuant’ın dikkat katmanı ölçeklemelerinin bu motorlarda doğru bayraklarla aktif edilmesi gerekmektedir.
Ticari Etki: Kimin İşine Yarar?
SmoothQuant’ın ticari etkisi, yüksek hacimli kullanıcı trafiğine sahip yapay zeka servis sağlayıcılarının, kurumsal sohbet robotu işletenlerin ve bulut faturalarını kısmaya çalışan şirketlerin sunucu mimarilerinde doğrudan devrim yaratmıştır. Yalnızca ağırlıkların kuantize edildiği W4A16 yöntemlerinde batch boyutu arttıkça bellek bant genişliği darboğazı yerini hesaplama darboğazına bırakır ve hız kazanımı sönümlenir. SmoothQuant ise hem ağırlıkları hem aktivasyonları INT8 tensör çekirdeklerine taşıyarak yüksek eşzamanlı istek (concurrency) senaryolarında gerçek donanım hızlanması sağlar.
Bu durum donanım maliyetlerinde doğrudan çarpan etkisi yaratır: 175 milyar parametrelik dev bir modeli servis etmek için önceden sekiz adet A100 GPU’dan oluşan bir sunucu düğümü gerekirken, SmoothQuant ile bu model dört GPU’ya sığdırılabilmektedir. Daha da çarpıcı olanı, 530 milyar parametrelik devasa MT-NLG modelinin tek bir HGX sunucusunda barındırılabilir hale gelmesidir1.
Özetle, token başına maliyetin ve kullanıcı başına bekleme süresinin hayati olduğu üretim sistemlerinde SmoothQuant, mimari karmaşıklığına rağmen kesinlikle uygulanması gereken bir yöntemdir. Eğer ürününüz yüzlerce eşzamanlı kullanıcıya hizmet veriyorsa ve GPU kümeleriniz hesaplama sınırına dayanmışsa, ağırlık-yalnız kuantizasyonla yetinmek sunucu bütçesini israf etmektir. Temiz bir kalibrasyon adımı ve TensorRT-LLM entegrasyonuyla devreye alınacak SmoothQuant, donanım yatırımınızın verimini anında iki katına çıkaracaktır.