GPTQ (İkinci Dereceden LLM Kuantizasyonu)

GPTQ, büyük dil modellerini INT4'e kuantize ederek bellek gereksinimini ~4× azaltan Hessian tabanlı post-training quantization algoritmasıdır.

GPTQ (Generative Pre-trained Transformer Quantization), büyük dil modellerini INT4 veya INT8 bit genişliğine kuantize etmek için ikinci dereceden bilgi (Hessian matrisini) kullanan post-training weight quantization algoritmasıdır. Frans Frantar ve ekibi tarafından 2022'de ETH Zürich'te geliştirilen GPTQ, Optimal Brain Compression (OBC) algoritmasının büyük ölçeğe uyarlanmış ve önemli ölçüde hızlandırılmış bir versiyonudur; OBC'nin O(d³) karmaşıklığını O(d²) seviyesine indiren yenilikçi Cholesky dekompoziyon tekniği, algoritmayı 175B parametreli modellere kadar uygulanabilir kılar. Algoritma, model ağırlıklarını katman katman, küçük bloklar hâlinde (tipik olarak 128 sütun) işler. Her blok için Hessian matrisinin tersini hesaplar ve kuantizasyon hatasını sonraki sütunlara yayarak global hatayı minimize eder. Bu süreçte yalnızca 128-512 örnekten oluşan küçük bir kalibrasyon veri seti kullanılır; tam eğitim gerektirmeyen bu yaklaşım, yüz milyar parametreli modeller için bile dakikalar içinde tamamlanabilir. Pratik etki belirgindir: 70 milyar parametreli bir model FP16'da yaklaşık 140 GB GPU belleği gerektirirken, GPTQ INT4 kuantizasyonu bu gereksinimi ~35 GB'a düşürür. Böylece 70B modeller, 24 GB VRAM'li tüketici sınıfı GPU'larda (RTX 4090 gibi) çalışabilir hale gelir. LLaMA 3 70B üzerinde yapılan karşılaştırmalarda GPTQ INT4 modeli, FP16 referansına göre yalnızca %2-3 puanlık MMLU kaybıyla üretim kalitesini koruyabilmektedir. GPTQ ekosistemi hızla genişlemiştir: AutoGPTQ ve ExLlamaV2 kütüphaneleri, vLLM ve HuggingFace Transformers doğrudan GPTQ formatını destekler. HuggingFace Hub'da '*-GPTQ' etiketi taşıyan binlerce hazır model mevcuttur. EXL2 formatı, GPTQ'nun katman başına farklı bit genişliği destekleyen gelişmiş bir türevidir ve daha iyi kalite-boyut dengesi sunar. Temel rakip yöntemler AWQ (aktivasyon farkındalıklı ağırlık kuantizasyonu) ve GGUF/llama.cpp'dir; AWQ genellikle daha hızlı çıkarım hızı sağlarken GPTQ bazı görevlerde daha iyi kalite korur; GGUF ise CPU ve Apple Silicon cihazlarında tercih edilen formattır.

compress GPTQ Nasıl Çalışır?

GPTQ, ağırlık matrisini sütun sütun işler. Her sütun için Hessian inverse kullanarak optimal kuantizasyon noktasını bulur; hata birikimini sonraki sütunlara yansıtır (Cholesky decomposition ile). Böylece naif yuvarlama yerine kuantizasyon hatasını global olarak minimize eder. Küçük kalibrasyon veri seti (128-512 örnek) yeterlidir.

GPTQ Formatları ve Kütüphaneleri

build AutoGPTQ

Python kütüphanesi; HuggingFace modelleri için GPTQ kuantizasyonu yapar. pip install auto-gptq ile kurulur.

upgrade EXL2

GPTQ tabanlı gelişmiş format; katman başına farklı bit genişliği. Daha iyi kalite-boyut dengesi. ExLlamaV2 ile kullanılır.

speed vLLM GPTQ

vLLM, GPTQ modellerini doğrudan yükler; continuous batching ile yüksek throughput sunar.

GPTQ'nun Teknik Mekanizması

  • check_circle İkinci Dereceden Optimizasyon: Katman çıktısındaki hatayı minimize etmek için Hessian matrisini (ikinci türev bilgisi) kullanır. Basit yuvarlama tabanlı kuantizasyondan daha akıllı.
  • check_circle Optimal Brain Compression: OBC (Optimal Brain Compression) algoritmasının verimli versiyonu; hangi ağırlıkların kuantize edileceğini ve nasıl hata telafi edileceğini hesaplar.
  • check_circle Katman Katman Kuantizasyon: Her transformer katmanı bağımsız olarak kuantize edilir; önceki katmanın hatası sonraki katmana taşınmaz. Kalite kaybını sınırlar.
  • check_circle INT4 Hedefi: Yaygın kullanımda 4-bit (INT4) hassasiyeti hedeflenir; bu, FP16'ya göre 4× bellek tasarrufu demektir. INT3 ve INT2 de mümkün ama kalite kaybı artar.
  • check_circle Kalibrasyon Verisi: Kuantizasyon sürecinde modelden geçirilen küçük bir veri seti (128-512 örnek) kullanılır; bu veri modelin kuantizasyon hatasını minimize etmesini kolaylaştırır.

GPTQ'nun Pratikte Kullanımı ve Rakip Yöntemler

GPTQ, büyük dil modellerini tüketici donanımında çalıştırmanın en yaygın yöntemlerinden biridir. 70B modeli FP16'da çalıştırmak için 140 GB GPU belleği gerektirirken, GPTQ INT4 ile bu gereksinim ~35 GB'a düşer. Araçlar: AutoGPTQ Python kütüphanesi ile mevcut bir modeli kuantize etmek birkaç satır kodla mümkündür; Hugging Face Model Hub'da hazır GPTQ modelleri mevcuttur. Karşılaştırma: GGUF/llama.cpp CPU uyumlu ve daha esnek donanım desteği sunar. AWQ aktivasyon farkındalıklı ağırlık kuantizasyonu ile bazı görevlerde GPTQ'dan daha iyi kalite sağlar. bitsandbytes eğitim sırasında dinamik kuantizasyon yapar; QLoRA ile birlikte kullanılır. Seçim kriteri: NVIDIA GPU'da hızlı çıkarım için GPTQ veya AWQ; CPU veya Apple Silicon için GGUF daha uygun.

quiz Sık Sorulan Sorular

  • check_circle AWQ mu GPTQ mu?: AWQ genellikle daha hızlı çıkarım sunar. GPTQ bazı modellerde daha yüksek kalite korur. Her ikisini de test edip karşılaştırın.
  • check_circle GPTQ modelini nasıl yüklerim?: auto-gptq veya transformers kütüphanesi ile HuggingFace Hub'dan "*-GPTQ" etiketli modeller doğrudan yüklenebilir.
  • check_circle Kalibrasyon verisi ne olmalı?: Wikipedia veya C4 gibi genel metin veri setleri 128-512 örnek yeterlidir. Özel alan modellerinde alan-spesifik kalibrasyon daha iyi sonuç verir.
  • check_circle GPTQ ile AWQ arasındaki fark nedir?: GPTQ ağırlık hatalarını Hessian tabanlı optimize eder. AWQ aktivasyon büyüklüğünü göz önünde bulundurarak önemli ağırlıkları korur. Her ikisi de INT4 kalitesinde iyi; AWQ bazı görevlerde hafif üstündür.
  • check_circle GPTQ ile ne kadar bellek tasarrufu sağlanır?: FP16'ya göre 4-bit kuantizasyon ~4× bellek tasarrufu sağlar: 70B FP16 (~140 GB) → GPTQ INT4 (~35 GB). Pratikte bazı ek yük mevcuttur; gerçek tasarruf %60-75 arasında değişir.