Yapay zeka modellerinin eğitiminden sonra, bunları dağıtım için optimize etmek adına çeşitli sıkıştırma teknikleri kullanılabilir. Bunların en yaygını, eğitim sonrası kuantizasyon (PTQ) yöntemidir. PTQ, model ağırlıklarının daha düşük hassasiyetli veri tiplerinde yaklaşık olarak temsil edilmesini sağlamak için sayısal ölçekleme teknikleri uygular. Ancak iki başka strateji — kuantizasyon farkındalığı eğitimi (QAT) ve kuantizasyon farkındalığı distilasyonu (QAD) — PTQ’nin yetersiz kaldığı yerlerde başarı göstererek modeli daha düşük hassasiyetli yaşam için hazırlar (Aşağıdaki Şekil 1’e bakınız).
QAT ve QAD, kuantizasyon etkisini eğitim sürecinde simüle etmeyi hedefler. Bu sayede, daha yüksek hassasiyetteki model ağırlıkları ve aktivasyonlar, yeni formatın temsil edilebilir aralığına uyum sağlar. Bu adaptasyon, daha düşük hassasiyetlere geçerken daha akıcı bir geçiş sağlar ve çoğunlukla daha iyi bir doğruluk geri kazanımı sunar.

Bu blogda QAT ve QAD’yı inceleyecek ve nasıl uygulanacağını TensorRT Model Optimizasyonu ile göstereceğiz. Model Optimizasyonu, geliştiricilerin QAT/QAD için modelleri Hugging Face ve PyTorch ile uyumlu API’ler kullanarak kolayca hazırlamasını sağlar. Nihai model bu tekniklerle eğitildikten sonra, TensorRT-LLM ile verimli bir şekilde nasıl dışa aktarılacağı ve dağıtılacağına dair örnekler sunacağız.
Kuantizasyon Farkındalığı Eğitimi Nedir?
QAT, modelin düşük hassasiyetli hesaplamaları yönetmeyi öğrendiği ek bir eğitim aşamasıdır. PTQ, tam hassasiyetli eğitimden sonra bir kalibrasyon veri seti kullanarak modeli kuantize ederken, QAT, kuantize değerlerle ileri besleme süreci gerçekleştirilerek modeli eğitir. QAT iş akışı, PTQ iş akışına oldukça benzer, fakat kuantizasyon tarifinin uygulandığı orijinal modelden sonra ek bir eğitim aşaması eklenir (Aşağıdaki Şekil 2’ye bakınız).

QAT’nin amacı, yüksek doğruluk ile bir kuantize model elde etmektir. Bu nedenle, QAT, eğitim verimliliğini artırmayı hedefleyen kuantize eğitimden farklıdır. QAT, eğitim süresi boyunca en iyi sonuçları elde etmek için bazı yöntemleri kullanabilir, ancak bunlar daha doğru bir model sunmak amacıyla uygulanır.
QAT, genellikle ileri yönde ‘sahte kuantize’ ağırlıklar ve aktivasyonlar ile gerçekleştirilir. Bu yaklaşım, daha düşük hassasiyetin, daha yüksek bir veri tipi içinde temsil edilmesini sağlar ve bu nedenle yerel donanım desteği gerektirmez. Örneğin, NVFP4 için QAT, Hopper GPU’lar üzerinde simüle edilmiş kuantizasyon ile yapılabilir. Yüksek hassasiyetli büyüklükler içinde ardışık olarak işlenirken, kuantizasyon, bir geçiş operasyonu (straight-through estimator, STE) olarak modelleme ile entegre olur. Ayrıca, dışlayıcı gradyanları sıfırlamak gibi ek adımlar uygulamak mümkün olup, bu da BF16 veya FP16’dan daha fazla yük getirecektir.
Eğitim sırasında kayıp fonksiyonunu yuvarlama ve kırpma hatalarına maruz bırakarak, QAT, modelin bu hatalara uyum sağlamasını ve onlardan kurtulmasını sağlar. Pratikte, QAT maksimum eğitim performansını artırmayabilir, ancak yüksek doğruluk ile bir kuantize model elde etmek için istikrarlı ve pratik bir eğitim süreci sunar.

QAT/QAD uygulamalarının bazıları sahte kuantizasyon gerektirmiyor, ancak bu yöntemler bu blogun kapsamı dışında kalmaktadır. Şu anda Model Optimizasyonunun uygulamasında, QAT’nin çıktısı, güncellenmiş ağırlıklarıyla birlikte orijinal hassasiyetinde yeni bir model ve toplantı için hedef formatına dönüştürme ile ilgili kritik meta veriler içerir:
- Her katman aktivasyonu için ölçekleme faktörleri (dinamik aralıklar)
- Kuantizasyon parametreleri, örneğin bit sayısı
- Blok boyutu
Model Optimizasyonu ile QAT Uygulama Yöntemi
Model Optimizasyonu ile QAT uygulamak oldukça basittir. QAT, PTQ iş akışı ile aynı kuantizasyon formatlarını destekler ve FP8, NVFP4, MXFP4 gibi temel formatları içerir. Aşağıdaki kod örneğinde, NVFP4 ağırlık ve aktivasyon kuantizasyonunu seçtik.
import modelopt.torch.quantization as mtq
config = mtq.NVFP4_MLP_ONLY_CFG
# Kalibrasyon için ileri döngüyü tanımla
def forward_loop(model):
for data in calib_set:
model(data)
# Modeli kuantize et ve QAT için hazırla
model = mtq.quantize(model, config, forward_loop)
Şu ana kadar, kod PTQ ile aynıdır. QAT uygulamak için bir eğitim döngüsü gerçekleştirmemiz gerekecek. Bu döngü, optimizer, zamanlayıcı, öğrenme oranı ve diğer standart ayarlanabilir parametreleri içerir.
# QAT ile standart ince ayar hattı
# Öğrenme oranı ve eğitim epochlarını ayarlayın
train(model, train_loader, optimizer, scheduler, ...)
İyi sonuçlar için, QAT’ın başlangıç eğitim epochlarının yaklaşık %10’u kadar sürdürülmesi önerilir. LLM’ler bağlamında, QAT ince ayarının, orijinal ön eğitim süresinin %1’inden daha az bir sürede yeterli olduğu gözlemlenmiştir. QAT hakkında daha derinlemesine bilgi için, Jupyter defteri kılavuzuna göz atmanızı öneririz.
Kuantizasyon Farkındalığı Distilasyonu Nedir?
QAD, PTQ’dan sonra doğruluğu geri kazanmaya odaklanırken, aynı zamanda bilgi distilasyonu gerçekleştirir. Standart bilgi distilasyonunun aksine, burada daha büyük bir “öğretmen” model, daha küçük bir “öğrenci” modeline yön vermektedir. Ancak QAD’da öğrenci, yalnızca ileri yönde sahte kuantizasyon kullanır. Öğretmen modeli, daha önce aynı veri üzerinde eğitim görmüş olan orijinal yüksek hassasiyetli modeldir. Distilasyon süreci, kuantize öğrencinin çıktılarının orijinal yüksek hassasiyetli öğretmenin çıktıları ile nasıl örtüştüğünü ölçmek için bir distilasyon kaybı kullanır (Aşağıdaki Şekil 4’e bakınız).

Öğrencinin hesaplamaları distilasyon süreci boyunca sahte kuantize edilirken, öğretmen model tam hassasiyetle kalır. Kuantizasyondan kaynaklanan herhangi bir uyumsuzluk distilasyon kaybı ile doğrudan ortaya konulabilir ve bu nedenle düşük hassasiyetli ağırlıklar ve aktivasyonlar, öğretmenin davranışına uyum sağlamak için ayarlanır (Aşağıdaki Şekil 5’e bakınız). QAD sonrasında elde edilen model, PTQ ve QAT’la aynı inference performansı sergiler, ancak ek öğrenme sağlandığı için doğruluk tekrar kazanımı daha yüksek olabilir.

Pratikte bu yöntem, FP32 bir modelin distilasyonunu yapmak ve sonrasında kuantize etmekten daha etkilidir. Çünkü QAD süreci, kuantizasyon hatasını hesaba katıp, modeli doğrudan buna göre ayarlamakta daha başarılıdır.
Model Optimizasyonu ile QAD Uygulama Yöntemi
TensorRT Model Optimizasyonu, bu tekniği uygulamak için deneme aşamasındaki API’ler sunmaktadır. İlk olarak, öğrenci modeline kuantizasyon tarifinin uygulanmasıyla başlayan bir süreç izlenir. Ardından, öğretmen modeli, eğitim argümanları ve distilasyon kayıp fonksiyonu gibi ögeleri belirleyen distilasyon yapılandırması tanımlanabilir. QAD API’leri, bu tekniğin uygulanmasını kolaylaştırmak için geliştirilmekte ve en son kod örnekleri ve belgeler için Model Optimizasyonu deposunun QAD kısmı incelenebilir.
QAT ve QAD’nın Etkisini Değerlendirme
Tüm modellerin QAT veya QAD’ya ihtiyacı yoktur; çünkü birçok model, PTQ ile %99.5’in üzerinde doğruluğunu korumaktadır. Ancak Llama Nemotron Süper gibi bazı durumlarda QAD’dan önemli ölçüde fayda sağlamak mümkündür. Aşağıdaki Şekil 6, bu modelin GPQA Diamond, LIVECODEBENCH, Math-500 ve AIME 2024 gibi benchmarklar üzerindeki temel BF16 puanlarını PTQ ve QAD sonrasında karşılaştırmaktadır. LIVECODEBENCH hariç, diğer tüm benchmarklarda QAD en az %4-22 doğruluk kazanıyor.

Gerçek uygulamada, QAT ve QAD’nın başarısı büyük ölçüde eğitim verisinin kalitesine, seçilen hiperparametrelere ve model mimarisine bağlıdır. 4-bit veri tiplerine geçerken, NVFP4 gibi formatlar daha ayrıntılı ve daha yüksek hassasiyetli ölçek faktörlerinden yararlanmaktadır.
Aşağıdaki Şekil 7, Llama-Nemotron Nano üzerindeki yaygın VLM benchmarklarında hem NVFP4 hem de MXFP4 için doğruluğu göstermektedir. AI2D, ChartQA ve DocVQA gibi benchmarklarda NVFP4, sürekli olarak %1’den daha az bir farkla daha yüksek puan almakta. Ancak bu küçük farklar, gerçek dünya görevlerinde gözle görülür etkilere yol açabilir. OpenVLM Hugging Face Liderliği‘ndeki bir benchmarkda, en iyi model ile daha düşük sıralardaki modeller arasındaki performans farkı genellikle birkaç puanla ifade ediliyor.

Görsel soru yanıtlama (VQA) görevlerinde, özellikle InfoVQA ve DocVQA arasında daha büyük bir fark gözlemlenmiştir. InfoVQA ve DocVQA, görseller hakkında sorular sorarken, çıkarım sırasında farklı noktaları ön plana çıkarır. InfoVQA, karmaşık grafik ve infografikleri içerdiğinden, modelin küçük detayları algılama yeteneğini kaybetme riski taşır. NVFP4, daha ince ölçekleme (daha küçük bloklar ve daha yüksek hassasiyet ölçek faktörleri) kullandığından, bu küçük sinyalleri ve nadir dışlamaları daha iyi korur; sonuçta, modelin görsel ve metin bileşenleri arasındaki uyum daha iyi bir düzeyde sürdürülür (kırpma hatası azaltılır).
Öte yandan, DocVQA çoğunlukla temiz ve yapılandırılmış belgelerden oluşur; doğru alan bulunduğunda cevap hemen anlaşılır. Dolayısıyla, her iki format da zaten tavan düzeyinde olduğundan, fark küçük kalmaya devam eder.
Özet
Kuantizasyon farkındalığı eğitimi (QAT) ve kuantizasyon farkındalığı distilasyonu (QAD), PTQ’nin faydalarını uzatarak modellere düşük hassasiyetli ortamlara doğrudan adaptasyon sağlarken, basit kalibrasyonun yetersiz kaldığı durumlarda doğruluk geri kazanımına yardımcı olur. Math-500 ve AIME 2024 gibi benchmarklarda gösterildiği gibi, bu teknikler düşük hassasiyetle yapılan çıkarsama ile tam hassasiyet altı arasında kalan farkı kapatabilir. Sonuç olarak geliştiricilere, FP4 yürütmesinin verimliliği ile yüksek hassasiyet eğitiminin sağlamlığının birleşimini sunar. Eğitim veri setinin ve hiperparametrelerin dikkatle seçilmesi gerektiği unutulmamalıdır, çünkü bu unsurlar bu tekniklerin sonuçlarını önemli ölçüde etkileyebilir.
TensorRT Model Optimizasyonu ile, bu ileri düzey iş akışları, tanıdık PyTorch ve Hugging Face API’leri aracılığıyla erişilebilir hale geliyor. İster PTQ’nun hızını, ister QAT’nin dayanıklılığını, isterseniz de QAD’nın doğruluk kazançlarını arıyor olun, NVIDIA GPU’lar üzerinde modelleri sıkıştırmak, ince ayar yapmak ve dağıtmak için kapsamlı bir araç setine sahip olursunuz. Sonuç olarak, daha hızlı, daha küçük ve daha doğru yapay zeka — üretime hazır.
Daha fazla keşfetmek için Jupyter defteri eğitimlerine göz atın.