Backend·3 dk okuma·

KVarN: Huawei'den KV-Cache Kuantizasyonu için Yerel vLLM Backend'i

Paylaş
BackendEdumints Blog

Büyük Dil Modelleri (LLM) ile çalışırken karşılaşılan en büyük darboğazlardan biri, özellikle uzun bağlam gerektiren görevlerde (long-context workloads) ve otonom etmenlerde (agentic AI) yüksek bellek tüketen KV-cache (Anahtar-Değer Önbelleği) yapısıdır. Huawei CSL ekibi tarafından açık kaynak kodlu olarak geliştirilen KVarN (Variance Normalized KV-Cache), bu soruna yenilikçi bir çözüm sunarak vLLM için yerel bir kuantizasyon backend'i sağlıyor. KVarN, FP16 seviyesinde doğruluğu tamamen korurken 3 ila 5 kat daha fazla bağlam kapasitesi ve FP16'nın üzerinde bir işlem hacmi (throughput) sunmayı başarıyor.

KVarN (Varyans Normalize Edilmiş KV-Cache) Nedir?

İsmini İsveççe'de tahıl veya kahve çekirdeklerini öğütmek için kullanılan "grinding apparatus" (öğütücü) kelimesinden alan KVarN, temel olarak şu dört ana özelliğiyle ön plana çıkıyor:

  • Ajanlar ve uzun bağlamlar için tasarlandı: Uzun girdi dizilerinde ve karmaşık çıkarımlarda yüksek performans sunar.
  • Yüksek kapasite ve hız: FP16 doğruluğunu korurken 3-5 kat daha fazla KV-cache kapasitesi ve FP16'ya kıyasla yaklaşık 1.3 kat daha yüksek işlem hacmi sağlar.
  • Tak-çalıştır entegrasyon: vLLM ile kalibrasyonsuz ve doğrudan entegre çalışır; model üzerinde herhangi bir değişiklik gerektirmez.
  • Üstün kıyaslama sonuçları: Diğer yöntemlere kıyasla (örneğin TurboQuant) yaklaşık 2.4 kat daha fazla işlem hacmi, yüksek doğruluk ve aynı kapasiteyi sunar.

KVarN Nasıl Çalışır?

KVarN, KV önbelleğini sabit boyutlu token blokları halinde kuantize eder ve her bloğu şu dört aşamadan geçirir:

  1. Önbellek (Cache): Dikkat (attention) mekanizmasından doğrudan gelen ve işlenmeyi bekleyen ham FP16 formatındaki KV bloğu.
  2. Döndürülmüş Önbellek (Rotated Cache): Kanal boyutu boyunca uygulanan Hadamard döndürmesi ile uç değerler (outliers) dağıtılır. Bu ortonormal döndürme işlemi sayesinde dikkat skorları korunur.
  3. Normalize Edilmiş Önbellek (Normalized Cache): Logaritmik alanda satır ve sütun bazlı varyans normalizasyonu (Sinkhorn benzeri) uygulanarak kuantizasyon öncesi hata payı minimize edilir.
  4. Kuantize Edilmiş Önbellek (Quantized Cache): Düşük bit genişliğinde asimetrik en yakın değere yuvarlama (round-to-nearest) gerçekleştirilir. Bu yapı 4-bit anahtarlar ve 2-bit değerler kullanır.

Yazılım Geliştirme ve Öğrenme Açısından Pratik Çıkarımlar

KVarN projesini incelediğimizde, yazılım geliştiriciler ve yapay zeka mühendisleri için şu pratik çıkarımlar öne çıkıyor:

  • Yazılım Seviyesinde Donanım Optimizasyonu: Bellek kısıtlamalarını aşmak için her zaman donanımı yükseltmek gerekmez. Doğru matematiksel yaklaşımlar (Hadamard döndürmesi ve Sinkhorn normalizasyonu) yazılım katmanında devasa bellek tasarrufları sağlayabilir.
  • Kullanıcı Dostu Entegrasyon Tasarımı: Karmaşık kurulum adımları yerine vLLM üzerinde sadece tek bir parametre (--kv-cache-dtype kvarn_k4v2_g128) ile çalışabilmesi, kütüphane geliştirirken API tasarımının ve geliştirici deneyiminin (DX) ne kadar önemli olduğunu kanıtlıyor.
  • Performans Kritik Kernel Yazımı: KVarN kernel'larının Triton ile yazılması ve Python üzerinde JIT (Just-In-Time) derlenmesi, C++ veya CUDA yazmadan da GPU üzerinde yüksek performanslı kod geliştirilebileceğini gösteriyor.

Orijinal kaynağa buradan ulaşabilirsiniz.

Paylaş

Bu konuyu daha derinlemesine öğrenmek ister misin?

Edumints'teki ücretsiz kursları incele ve bugün başla.

Kurslara Göz At →