GGUF ve GPTQ aynı şey değil: konteyner ile kuantizasyon ayrımı
MarkTechPost'un derlemesi, model dosya biçimleriyle ağırlık sıkıştırma yöntemlerinin farklı katmanlar olduğunu anlatıyor.
MarkTechPost, yerel olarak model çalıştıranların sık karıştırdığı bir ayrımı toparladı: konteyner, tensörlerin diskte nasıl saklandığını tanımlar; kuantizasyon yöntemi ise ağırlıkların kaç bite sıkıştırıldığını. Yazı yalnızca ağırlıkları kapsıyor, KV önbelleği ve çalışma zamanı yükü bunun üstüne biniyor.
Kuantize edilmemiş modeller genelde 16 bit ağırlıkla, pytorch_model.bin ya da model.safetensors olarak dağıtılıyor. Eski .bin/.pt dosyaları Python pickle kullandığı için yüklenirken rastgele kod çalıştırabiliyor; güvenilmeyen checkpoint'ler bu yüzden risk. Hugging Face'in geliştirdiği Safetensors bu riski kaldırıyor: küçük bir JSON başlık ve ham tensör tamponlarından oluşuyor, içinde çalıştırılabilir hiçbir şey yok. Safetensors artık PyTorch Foundation projesi olarak listeleniyor.
GGUF neyi çözüyor
GGUF, GGML ve llama.cpp gibi yürütücüler için ikili bir biçim. llama.cpp'yi de yöneten Georgi Gerganov tarafından yazıldı ve 21 Ağustos 2023'te eski GGML biçiminin yerine geldi. Eski GGML, GGMF ve GGJT dosyaları modelin hangi mimariye ait olduğunu söyleyemiyordu; yeni bir hiperparametre eklemek bütün mevcut dosyaları bozuyordu. GGUF tipli anahtar-değer meta verisine geçerek bu sorunu kapattı. Spesifikasyon beş hedef sayıyor: tek dosyayla dağıtım, genişletilebilirlik, mmap uyumu, kolay yükleme ve bilginin dosyanın içinde eksiksiz durması. GGUF ağırlıkların yanında tokenizer'ı, özel token'ları ve Jinja sohbet şablonunu da taşıyabiliyor.
Dosya adındaki Q4_K_M gibi son ekler şemayı gösteriyor. Q4_K hesabı şöyle: 256 ağırlıklı bir süper blok, 1.024 bit ağırlık, 96 bit ölçek ve minimum, 32 bit süper ölçek ve süper minimum; toplam 1.152 bit, yani ağırlık başına 4,5 bit. _S, _M, _L ise yeni tip değil, karışım. llama.cpp'ye göre Q4_K_M, attention.wv ve feed_forward.w2 tensörlerinin yarısında Q6_K kullanıyor.
GPTQ, AWQ ve EXL2
GPTQ'yu Elias Frantar, Saleh Ashkboos, Torsten Hoefler ve Dan Alistarh yazdı; 31 Ekim 2022'de arXiv'de çıktı, ICLR 2023'te yayımlandı. Tek seferlik, eğitim sonrası bir yöntem: yuvarlama kararını ikinci derece (Hessian) bilgiyle veriyor ve bir sütundaki hatayı henüz kuantize edilmemiş ağırlıklarla telafi ediyor. Küçük bir kalibrasyon kümesi yetiyor, yeniden eğitim gerekmiyor.
AWQ, MIT'de Song Han'ın grubundan çıktı, 1 Haziran 2023'te arXiv'e girdi ve MLSys 2024 En İyi Makale Ödülü'nü aldı. Önemli kanalları ağırlıklara değil aktivasyon büyüklüklerine bakarak buluyor; bu kanalları yüksek hassasiyette saklamak yerine matematiksel olarak eşdeğer bir dönüşümle ölçekliyor.
EXL2, turboderp'in ExLlamaV2 kütüphanesinin yerel biçimi ve 4.65bpw gibi kesirli bit adlarını buradan alıyor. Halefi EXL3 ise Cornell RelaxML'in QTIP çalışmasına dayanıyor. Ayrıntılar için MarkTechPost'un yazısına bakabilirsiniz.