- Yüksek boyutlu vektörlerin bellek ek yükü sorununu temelden çözen bir niceleme algoritmaları seti; hem LLM'lerin anahtar-değer önbelleği sıkıştırmasına hem de vektör aramaya uygulanabiliyor
- PolarQuant ile veriyi yüksek kalitede sıkıştırdıktan sonra, QJL algoritmasıyla kalan hatayı yalnızca 1 bit kullanarak gideren iki aşamalı sıkıştırma yapısı
- Eğitim ya da fine-tuning olmadan anahtar-değer önbelleğini 3 bite kadar niceleyip model doğruluğunda kayıp yaratmıyor; H100 GPU'da en fazla 8 kat performans artışı sağlıyor
- Vektör aramada da büyük kod kitapları veya veri setine özel ayar gerektirmeden en iyi recall oranlarını kaydedip mevcut son teknoloji yöntemleri aşıyor
- Teorik alt sınıra yaklaşan kanıtlanabilir verimliliğe sahip temel bir algoritmik katkı olarak, Gemini gibi modeller ve büyük ölçekli semantik arama altyapılarında kilit rol oynaması bekleniyor
Vektörler ve nicelemenin arka planı
- Vektörler, yapay zeka modellerinin bilgiyi anlama ve işleme biçiminin temelidir; yüksek boyutlu vektörler görüntü özellikleri, kelimelerin anlamı ve veri seti nitelikleri gibi karmaşık bilgileri temsil eder
- Yüksek boyutlu vektörler çok büyük bellek tüketir; bu da anahtar-değer önbelleğinde (sık kullanılan bilgileri basit etiketlerle saklayıp anında erişim sağlayan yüksek hızlı dijital referans sayfası) darboğaz yaratır
- Vektör niceleme, yüksek boyutlu vektörlerin boyutunu küçülten klasik bir veri sıkıştırma tekniğidir; vektör aramayı hızlandırmaya ve anahtar-değer önbelleği darboğazını gidermeye yardımcı olur
- Geleneksel vektör niceleme, her küçük veri bloğu için niceleme sabitlerini tam hassasiyetle hesaplayıp saklamak zorunda olduğu için kendi başına bir bellek ek yükü oluşturur; sayı başına 1~2 bitlik ek maliyet getirerek nicelemenin amacını kısmen boşa çıkarır
TurboQuant nasıl çalışıyor
- TurboQuant, doğruluk kaybı olmadan yüksek düzeyde model küçültme sağlayan bir sıkıştırma yöntemi; hem anahtar-değer önbelleği sıkıştırmayı hem de vektör aramayı destekliyor
- İki temel adımdan oluşuyor:
1. aşama: yüksek kaliteli sıkıştırma (PolarQuant yöntemi)
- Veri vektörleri rastgele döndürülerek verinin geometrik yapısı sadeleştiriliyor, ardından standart yüksek kaliteli niceleyici vektörün her bölümüne ayrı ayrı uygulanıyor
- Bu aşamada bitlerin büyük kısmı kullanılarak özgün vektörün ana kavramları ve büyüklüğü yakalanıyor
2. aşama: gizli hatanın giderilmesi
-
- aşamadan kalan ince hataya, yalnızca 1 bitlik artık sıkıştırma gücüyle QJL algoritması uygulanıyor
- QJL matematiksel bir hata denetleyicisi gibi çalışarak yanlılığı kaldırıyor ve daha doğru attention score'lar üretiyor
QJL: sıfır ek yüklü 1 bitlik teknik
- Johnson-Lindenstrauss dönüşümünü kullanarak yüksek boyutlu veriyi küçültürken veri noktaları arasındaki temel uzaklıkları ve ilişkileri koruyor
- Ortaya çıkan vektördeki her sayı tek bir işaret bitine (+1 veya -1) indirgeniyor; böylece bellek ek yükü sıfır oluyor
- Doğruluğu korumak için yüksek hassasiyetli sorgularla düşük hassasiyetli sadeleştirilmiş veriyi stratejik olarak dengeleyen özel bir tahminleyici kullanılıyor
- Bu sayede model, girdinin hangi kısımlarının önemli olup hangilerinin göz ardı edilebileceğini belirleyen attention score'ları doğru biçimde hesaplayabiliyor
PolarQuant: sıkıştırmaya yeni bir "açı"
- Bellek ek yükü sorununu tamamen farklı bir yoldan çözen bir yaklaşım
- Standart koordinatlar (X, Y, Z) yerine vektörleri kutupsal koordinatlara dönüştürüyor — "doğuya 3 blok, kuzeye 4 blok" ifadesini "37 derece yönünde 5 blok" demeye benzer
- Dönüşüm sonucu iki tür bilgiden oluşuyor: temel verinin büyüklüğünü gösteren yarıçap ve verinin yönünü/anlamını gösteren açı
- Açı örüntüleri bilindiği ve yoğun biçimde toplandığı için, sınırları sürekli değişen bir "dikdörtgen" ızgara yerine sınırları önceden bilinen sabit bir "dairesel" ızgaraya eşleme yaparak maliyetli veri normalizasyonu adımını atlıyor
- d boyutlu bir vektörde koordinat çiftlerini gruplayıp kutupsal koordinat sistemine eşliyor, yarıçapları çiftler halinde toplayıp özyinelemeli kutupsal dönüşümü tekrarlayarak sonunda tek bir yarıçap ve açıklayıcı açı kümesine indiriyor
Deneyler ve sonuçlar
Uzun bağlam benchmark performansı
- LongBench, Needle In A Haystack, ZeroSCROLLS, RULER ve L-Eval gibi standart uzun bağlam benchmark'larında, açık kaynak LLM'ler (Gemma, Mistral) kullanılarak değerlendirildi
- TurboQuant, hem iç çarpım bozulması (dot product distortion) hem de recall açısından en iyi puanları elde ederken aynı anda anahtar-değer bellek ayak izini en aza indirdi
- Llama-3.1-8B-Instruct modelinde soru-cevap, kod üretimi ve özetleme gibi farklı görevlerde KIVI temel çizgisine karşı güçlü performans gösterdi
Needle-in-Haystack görevi
- Büyük metinler içinde belirli bilgiyi bulma testinde TurboQuant, tüm benchmark'larda kusursuz downstream sonuçlar elde etti
- Anahtar-değer bellek boyutunu en az 6 kat küçülttü
- PolarQuant da bu görevde neredeyse kayıpsız düzeydeydi
Çalışma zamanı performansı
- Eğitim ya da fine-tuning olmadan anahtar-değer önbelleğini 3 bit olarak niceleyip model doğruluğundan ödün vermedi
- Orijinal LLM'den daha hızlı çalışma zamanı elde etti; uygulama son derece verimli ve çalışma zamanı ek yükü ihmal edilebilir düzeyde
- 4 bit TurboQuant, H100 GPU'da 32 bit niceleme yapılmamış anahtarlara kıyasla attention logit hesaplamasında en fazla 8 kat performans artışı sağladı; ölçüm JAX optimize temel çizgisine karşı yapıldı
Vektör arama performansı
- Yüksek boyutlu vektör aramada PQ, RabbiQ gibi güncel yöntemlerle karşılaştırmalı değerlendirme yapıldı
- Algoritmanın yaklaşık üst k sonuç içinde gerçek en iyi iç çarpım sonucunu ne kadar sık yakaladığını ölçen 1@k recall oranı kullanıldı
- Verimsiz büyük kod kitapları ve veri setine özel ayarlara başvuran temel çizgilere karşı TurboQuant tutarlı biçimde daha iyi recall oranları kaydetti
- GloVe veri setinde (d=200), çeşitli güncel niceleme temel çizgilerine kıyasla en iyi 1@k recall oranına ulaştı
- Veriden bağımsız (data-oblivious) bir yaklaşımla yakın-optimal bozulma oranı sunarak, 3 bitlik bir sistemin verimliliğiyle çok daha ağır modellerin hassasiyetini korudu
Geleceğe bakış
- TurboQuant, QJL ve PolarQuant yalnızca pratik mühendislik çözümleri değil; aynı zamanda güçlü teorik kanıtlarla desteklenen temel algoritmik katkılar
- Kanıtlanabilir verimliliğe sahipler ve teorik alt sınıra yakın çalışıyorlar; bu da onları büyük ölçekli kritik sistemlerde sağlam ve güvenilir kılıyor
- Başlıca kullanım alanı olan Gemini gibi modellerdeki anahtar-değer önbelleği darboğazını çözmenin ötesinde, verimli çevrimiçi vektör nicelemenin etkisi daha geniş bir alana yayılabilir
- Modern arama, anahtar kelime merkezli yaklaşımdan niyeti ve anlamı anlama yönüne evrilirken, milyarlarca vektörden oluşan veri tabanlarında semantik olarak en benzer öğeleri bulmak için vektör arama zorunlu hale geliyor
- TurboQuant, en az bellek, neredeyse sıfır ön işleme süresi ve son teknoloji doğrulukla büyük ölçekli vektör indeksleri kurup sorgulamayı mümkün kılarak Google ölçeğinde semantik aramayı daha hızlı ve daha verimli hale getiriyor
4 yorum
"Döndürme sonsuz güce sahiptir. Buna inan."
Saygılar.
Bu yorum yüzünden giriş yaptım
Hacker News yorumları
KV önbelleği sıkıştırma araştırması gerçekten ilginç bir gelişme
Ancak ilgili çalışmada temel matematiksel mekanizmaya dair atıfların eksik olması üzücü
Yüksek boyutlu geometriyi ele almak için geometrik döndürme uygulayıp ardından aşırı nicemleme yapma tekniği, ekibimizin NeurIPS 2021 makalesi “DRIVE” ile ilk kez önerilmişti
Bu döndürme tabanlı yaklaşım ve önyargı düzeltme mekanizması sayesinde en uygun varyans ortalaması tahminine ulaştık
Daha sonra bunu Google davetli seminerinde de sunduk; TurboQuant ile PolarQuant arasındaki kuramsal benzerlikler düşünüldüğünde, ilerideki sürümlerde önceki çalışmalara atıf eklenmesini umuyorum
Yani köşegen matrisi ve yeni bazı saklayarak daha fazla sıkıştırma yapılan bir yöntem mi diye soruyorum
Bu çalışma ile MHLA arasındaki ilişkinin ne olduğunu açıklayabilir misiniz?
Bu fikirler birkaç yılda bir yeniden keşfediliyor; örneğin 2017 tarihli makalede de benzer bir yaklaşım vardı
Ama araştırmacıların çalışma zaten epey ilerlemişken benzer fikri bağımsız olarak geliştirmiş olmaları da mümkün
İyi fikirlere, problemi derinlemesine anlayan insanların doğal olarak ulaşması normaldir
“TurboQuant veriyi rastgele döndürerek geometriyi sadeleştiriyor” açıklaması bana pek anlaşılır gelmiyor
Döndürmenin her zaman daha basit bir biçim oluşturacağını kim garanti edebilir?
Ayrıca “Johnson–Lindenstrauss dönüşümüyle yüksek boyutlu veri küçültülüyor ve her vektör işaret bitleriyle ifade ediliyor” kısmında da, tek bir boolean değerle ilişki bilgisinin korunması bana ikna edici gelmiyor
Bazı boyutlarda aykırı aktivasyon değerleri oluşuyor ve Adam optimizer’ın yapısı gereği bu durum daha da güçleniyor
Bununla ilgili olarak SmoothQuant ve Privileged Basis makalelerine bakılabilir
Bu sayede gereksiz örüntü öğrenimi azalır ve optimizasyon daha kararlı hale gelir
Yani modelin “belirli bir boyutta belirli basamaktaki sayı 5 ise bu kedidir” gibi önemsiz kuralları öğrenmemesi amaçlanıyor
Döndürme matrisiyle çarpınca veri daha eşit dağılır ve verimli nicemleme mümkün olur
Sonrasında Lloyd–Max algoritması ile sınırlar ve yeniden yapılandırma değerleri optimize edilir, kalan önyargı (bias) ise 1 bit ile düzeltilir
Böylece az sayıda bit ile de yüksek doğruluk korunabilir
Örneğin kayan noktalı değerleri başka birimlere çevirirseniz (bel → desibel gibi), benzer değerler daha yakın temsil edildiği için sıkıştırma kolaylaşır
Yani uzakta bulunan verileri yeniden merkeze yaklaştırma süreci
Ayrıca her boyut ayrı ayrı kodlandığı için tüm vektör tek bir boolean değere indirgenmiyor
Bu blog yazısı düşük kaliteli
Grafiğin eksenleri yanlış etiketlenmiş ve video görselleştirme de Polar Quantization kavramını hiç aktaramıyor
Bir başka grafikte eksen 48’den başladığı için gerçek fark abartılıyor
Genel olarak görsel materyallerin güvenilirliği ve iletişim kalitesi zayıf
Birisi bunu şimdiden llama.cpp içinde uyguluyor
İlgili commit’e bakabilirsiniz
Johnson–Lindenstrauss teoreminin hâlâ geçerli olması sayesinde, her koordinatın bağımsız nicemlenmesinin kuramsal olarak geçerli kalması umuluyor
Alan bilgim çok derin değil ama yapı net görünüyor
4 ila 6 hafta içinde ana dala birleştirilmesi muhtemel
TurboQuant’ı sezgisel olarak açıklayan bir animasyon var
Lisans düzeyinde hazırladığım özet şöyle
Ana fikir, KV önbelleğini bilgi kaybını en aza indirerek nicemlemek
Vektörlerin çoğu yüksek boyutlu kürenin ekvatoru civarında toplandığı için, döndürme ile dağılım daha eşit hale getirilerek entropi korunumu artırılıyor
PolarQuant bunu kutupsal koordinat dönüşümüyle yapmaya çalışıyordu; TurboQuant ise bunu sadeleştirip QJL önyargı düzeltmesini ekliyor
Sonuçta PolarQuant + QJL + pratik düzeltmeler ile yüksek verimli sıkıştırma elde ediliyor
Blog yazısı ise çok sayıda hata içeriyor ve kafa karıştırıyor
PolarQuant’ın hiperkutupsal koordinat kod kitabı TurboQuant içinde kısmen korunmuş durumda
Bu yazı, yapay zeka bileşenlerini açıklama konusunda gördüğüm en kötü örneklerden biri
Teknik bağlam neredeyse hiç yok
Johnson–Lindenstrauss teoreminden söz ediyor ama bunun somut bağlantısını açıklamıyor
Örneğin “3 blok doğuya, 4 blok kuzeye” yerine “37 derecelik açıyla 5 blok ilerle” demek gibi; bu da ortaokul düzeyi bir benzetme gibi hissettiriyor
Bağımsız bir PyTorch uygulaması zaten yayımlandı
turboquant-pytorch
Blog yakın zamanda yayımlanmış olsa da, makale aslında yaklaşık 1 yıl önce arXiv’e gönderilmişti
Bunun Gemini gibi modellere uygulanıp uygulanmadığını merak ediyorum; eğer öyleyse kişisel kullanımda RAM maliyetlerini de düşürebilir
Son dönemde sıkıştırma araştırmalarının gerçek uygulamalara dönüşme hızı şaşırtıcı
Görüntü formatlarında AVIF ve JPEG XL’in video codec araştırmalarından türemesine benzer şekilde, yapay zeka nicemleme tekniklerinin de yakında gerçek çıkarım ortamlarında kullanılma ihtimali yüksek
XYB renk uzayı gibi bazı fikirler ortak; LLM’lerde de benzer özel mühendislik gerekeceğini düşünüyorum