- LLM’lerin matematik olimpiyatı düzeyindeki problemleri çözebilmesine rağmen basit toplama/Sudoku gibi işlemleri bile dış araçlar olmadan doğru biçimde yapamaması sorununu aşmak için, transformer’ın içine gerçek bir bilgisayar kurma yaklaşımı
- Rastgele C kodunu token’lara dönüştürüp modelin kendisinin milyonlarca adımlık çalıştırma izini doğrudan üretmesi; CPU’da saniyede 30 bin token’ın üzerinde hızla akış sağlayabilmesi
- Temel teknik, attention head boyutunu 2D ile sınırlayarak bunu dışbükey zarf (convex hull) tabanlı geometrik aramaya dönüştürmek ve doğrusal zamanlı taramayı logaritmik zamana çevirmek
- WebAssembly yorumlayıcısını transformer ağırlıkları içinde uygulayarak, harici araç çağrısı olmadan modelin decoding döngüsü içinde program çalıştırmanın şeffaf biçimde gerçekleşmesi
- Gelecekte programları doğrudan ağırlıklara derleme ve öğrenilmiş temsiller ile derlenmiş algoritmaları tek bir hesaplama temeli üzerinde birleştiren yapay zeka sistemlerine genişleme olasılığı
LLM’lerin hesaplama sınırları
- En gelişmiş LLM’ler Uluslararası Matematik Olimpiyatı altın madalya düzeyindeki problemleri çözebiliyor veya çözülmemiş matematik ve bilim problemlerine meydan okuyabiliyor; ancak saf hesaplama işlerinde hâlâ başarısız oluyor
- Temel toplama işlemlerinde bile hata oluşuyor ve Sudoku-Bench gibi benchmark’larda harici yardım olmadan çözüm başarısı çok düşük
- Bu boşluğu kapatmak için şu anda iki dolaylı yöntem bulunuyor
- Araç kullanımı (Tool use): Model kodu yazar, harici yorumlayıcı bunu çalıştırır ve sonucu geri verir
- Ajan orkestrasyonu: Harici bir döngü ara durumu saklar, işi parçalara ayırır ve modeli tekrar tekrar çağırır
- Bu yaklaşımlar faydalı olsa da, gerçek hesaplama yeteneğinin modelin dışında bulunduğu yönündeki temel sınırı vurguluyor
- Benzetme olarak, insanlığın uçak yapmış olması insanların uçabildiği anlamına gelmez
- Model hesaplama hakkında akıl yürütebilir ya da araçları koordine edebilir; ancak kendi başına çalıştıramıyorsa gerçek bir bilgisayar değildir
Transformer’ı bilgisayara dönüştürme yöntemi
- Transformer mimarisinin Turing makinesini simüle edebileceğine dair teorik evrensellik çeşitli çalışmalarda gösterilmiş olsa da, teorik ifade gücü pratik çalıştırma verimliliğini garanti etmez
- Saf teorik hesaplama modeli yerine, modern bir RAM bilgisayarı transformer’ın içine uygulanıyor ve her komut en fazla 5 token’a eşleniyor
- Ancak daha derin sorun decoding sürecinin kendisinde yer alıyor
- Standart autoregressive decoding, her adımda giderek uzayan tüm geçmişle etkileşime girer
- KV caching geçmiş anahtar/değerlerin yeniden hesaplanmasını önlese de, attention maliyeti hâlâ önbellek boyutuyla orantılıdır
- Bu sınıra çözüm olarak attention head boyutu 2D ile sınırlandırılıyor ve yürütme tarzı izler için verimli bir decoding yolu sunuluyor
- Temel arama/güncelleme işlemleri, dizi uzunluğuna göre logaritmik zamanda yapılabiliyor
- Bu sayede milyonlarca adımlık programlar transformer içinde çalıştırılabiliyor
Hesaplamanın anlamı — araç kullanımı vs model içi yürütme
- Mevcut araç kullanımı yaklaşımı: Model
python -c "print(3+5)" gibi kod üretir → harici yorumlayıcı çalıştırır → sonuç token akışına enjekte edilir
- Bu sistemin yaklaşımı: WebAssembly yorumlayıcısını transformer ağırlıkları içinde uygulamak
- WebAssembly, hızlı ve deterministik yürütme için düşük seviyeli bir komut kümesi ve C/C++ için genel amaçlı bir derleme hedefidir
- 3 + 5 hesaplanırken model wasm komutlarını (
i32.const, i32.add) üretir, ardından hızlı decoding moduna geçerek adım adım yürütme izini doğrudan oluşturur
- Temel farklar
- Araç kullanımı opaktır: model kontrolü devreder ve kara kutu bir yanıt alır
- Model içi yürütme şeffaftır: tüm ara adımlar izde görünür ve model kendi decoding döngüsünün dışına çıkmaz
Sudoku demosu — doğru uzun süreli hesaplama için stres testi
- Eğitilmiş sinir ağı yaklaşımları kolay Sudoku’larda iyi performans gösterse de zor problemlerde tamamen başarısız olur
- Autoregressive modellerin kısıt tatmini problemlerine temelden uygun olmadığı yönünde yaygın bir açıklama bulunsa da, bu sistem tamamen autoregressive olmasına rağmen %100 doğruluk sağlıyor
- Gerçek darboğaz, autoregressive paradigmanın kendisi değil; zor Sudoku’ların çok uzun yürütme izleri gerektirmesi ve standart attention’ın uzun bağlam üretimini pratik olmaktan çıkarmasıdır
- Derlenmiş tam bir Sudoku çözücüsü transformer içinde çalıştırılıyor; öğrenilmiş sezgiseller değil, gerçek algoritma adım adım yürütülüyor
- Arto Inkala’nın “dünyanın en zor Sudoku’su” 3 dakikanın altında doğru biçimde çözülüyor
- Derlenmiş çözücü doğruysa transformer’ın yürütmesinin de doğru olduğuna dair genel bir garanti sunuluyor
Hesaplamanın kodlanma biçimi — yalnızca eklenebilen iz
- Autoregressive transformer, kendi geçmişinin içinde yaşayan bir makineye benzetiliyor
- Geleneksel bilgisayarlar düzenlenebilir belleği günceller, ancak transformer’da böyle bir kavram yoktur
- Yapı; sabit bir prompt (girdi/program) ve durmadan büyüyen bir izden (üretilen token’lar) oluşur
- Yalnızca ekleme yapılabilen defter benzetmesi
- İlk satırlar girdi (prompt), sonraki her satır ise hesaplamanın bir sonraki adımını kaydeder
- Önceki satırlar değiştirilemez ve her adımda yalnızca az sayıda önceki konuma başvurulabilir
- Birçok algoritma, “her adımda sabit sayıda önceki konuma bakan yalnızca eklenebilir iz” olarak ifade edilebilir
- Bu sistemde modelin ürettiği token’lar, sanal makinenin komut işaretçisi, bellek/yığın işlemleri, aritmetik, kontrol akışı, çıktı gibi evrilen durumunu ifade eder
- Attention head’ler paylaşılan tek boyutlu bir dizi gibi davranır; her token’ın bir indekse değer yazıp başka bir indeksten değer okuduğu yazdıktan sonra oku primitifi sağlar
- Attention ayrıca kümülatif toplamları (cumulative sums) da hesaplayabilir; böylece komut işaretçisi, yığın derinliği vb. delta artışlarının kümülatif toplamı olarak izlenebilir
Temel kilit açılımı: üstel ölçüde hızlı attention
- Gerçek bilgisayarlar her komutta neredeyse sabit miktarda işle yük durumu güncellerken, standart transformer’lar t’inci decoding adımında uzunluğu t olan bir prefix ile etkileşime girer ve toplam maliyet ikinci dereceden artar
- HullKVCache ile bu ikinci dereceden patlama çözülüyor
- Gerçek benchmark’larda HullKVCache saniyede 31.037 token (6.747 satır/sn), standart KVCache ise saniyede 272 token (59 satır/sn) üretiyor; yaklaşık 114 kat fark
- Adım başına Θ(t) zaman yerine, attention araması O(log t) zamanda yapılıyor
-
2D attention’ın hızlı yolu
- Amaç transformer’ları genel olarak hızlandırmak veya yeni bir mimari sunmak değil; vanilla transformer’da head boyutunu 2D ile sınırlayan yönetilebilir bir parametreleştirmeye odaklanmak
d_model = 36, n_heads = 18 ile head başına tam 2 boyut, 7 katman, standart nn.MultiheadAttention ve gated feedforward network kullanılıyor
- Özel attention kernel’leri ya da sparse maskeler olmadan, tamamen vanilla PyTorch ile kurulmuş
- Katman sayısı, head sayısı ve embedding boyutu istenildiği kadar büyütülebileceği için modelin tamamının küçük olması gerekmiyor
n_heads = d_model / 2 ile daha fazla head kullanılabiliyor
-
2D attention’a geometrik bakış
- Attention mekanizması: Geçmiş token’lar 2D anahtar vektörleri kⱼ ve değerler vⱼ sağlar; mevcut adım bir sorgu q oluşturur ve iç çarpımı en büyük olan anahtarın değerini döndürür (hardmax attention)
- Bu, hesaplamalı geometrinin klasik “destek noktası (supporting point) sorgusu” ile tam olarak aynıdır: q yönü verildiğinde dışbükey zarf üzerinde o yönde en uzaktaki noktayı bulmak
- Token üretimiyle eşzamanlı olarak dışbükey zarf veri yapısı korunarak tüm geçmiş noktalar üzerinde logaritmik zamanlı arama yapılabilir
- Bellek/yığın işlemleri için “indeks i’ye en son yazılan değeri” sorgulamak gerekir; 2D anahtarların gerekmesi de bundandır
- İndeks j, 2D anahtar
kⱼ = (2j, -j²) olarak saklanır ve q = (i, 1) yönüyle sorgulandığında ikinci dereceden -j² terimi yalnızca tam eşleşmenin kazanmasını sağlayan bir ceza işlevi görür
- Turing tamlığı için 2D attention yeterlidir ve bu blogda gösterildiği gibi tüm bir RAM bilgisayarı temsil edilebilir
Gelecek planları
-
Daha zengin attention mekanizmaları
- Mevcut uygulama hardmax attention kullanıyor, ancak bu temel bir kısıt değil
- k-sparse softmax attention ile yaklaşık çözüm mümkün: iç içe geçmiş dışbükey zarflardan en iyi k anahtar alınır ve softmax yalnızca bunlar üzerinde uygulanır; maliyet O(k + log n)
- Geometrik hızlı yol yalnızca yürütücü yapılarla sınırlı değil; ilke olarak 2D head kullanan tüm transformer’ların decoding süresini hızlandırabilir
- 3D head’lere de 3D dışbükey zarf üzerinden doğal bir genişleme mümkün; ancak daha yüksek boyutlarda verim hızla düşer
-
2D head’lerle büyük ölçekli model eğitimi
- 2D head parametreleştirmesi özünde küçük değildir — daha fazla head ve katman kullanılarak standart transformer’lara benzer toplam parametre sayısı korunabilir
- Birden çok kullanım modu mümkün
- Daha yavaş ve genel amaçlı modellerle birleşen özel hızlı yol
- Tek sistem içinde hızlı/yavaş hibrit mimari
- 2D modelin token’ları hızlıca önerip genel attention modelinin doğruladığı speculative decoding
- Yürütme izi forward pass’in bir parçası olduğundan tüm süreç diferansiyellenebilir (differentiable); bu da onu dış araçlardan temelden farklı, daha büyük modellere doğrudan entegre edilebilecek öğrenilebilir bir hesaplama temeli hâline getiriyor
-
Programları ağırlıklara derlemek
- Şu anda model, ağırlıklara kodlanmış yorumlayıcıyı öğreniyor; ancak ağırlık üreten derleme makinesi genişletilirse rastgele programları token dizileri olmadan doğrudan ağırlıklara derlemek mümkün olabilir
- Böylece ağırlıkların kendisi yazılımın dağıtım hedefi (deployment target) olur; model yazılım benzeri davranışı öğrenmek yerine, derlenmiş program mantığını iç devrelerinin bir parçası olarak içerir
- Mantık ağırlıklara derlenebiliyorsa, gradient descent model değiştirmek için tek yol olmaktan çıkar — yapı, algoritma ve garantileri ağa doğrudan yerleştiren başka bir yol ortaya çıkar
- Nihayetinde yalnızca deneyimden öğrenen değil, kendi ağırlıklarını değiştirip genişleterek iç makinesini kendisi yeniden yazan sistemlere doğru gelişebilir
-
Yapay zeka sistemlerini yazılım gibi büyütmek
- Modern yazılım ekosisteminin modüller, soyutlamalar ve yeniden kullanılabilir bileşenler biriktirerek gelişmesi gibi, yapay zeka sistemlerinin içinde de yeni hesaplama yeteneklerinin kademeli olarak eklenmesi mümkün olabilir
- Yeni işlevler, tüm sistemi yeniden eğitmeden mevcut devrelere bağlanabilir
- Geleceğin yapay zeka sistemleri yazılımı yalnızca kullanmakla kalmayıp yazılımı kendi içinde barındırarak, öğrenilmiş temsiller ile derlenmiş algoritmaları tek bir hesaplama temeli üzerinde birleştirebilir
1 yorum
Hacker News görüşleri
Bu, basit bir hesaplama yapma meselesinden çok daha ilginç bir yaklaşım
Model, token sayısının logaritmasıyla orantılı dinamik attention geçişi yapabiliyor
Böylece metinle ifade edilen register ve stack’i izleyerek program yürütmeyi taklit edebiliyor
Eğer bir LLM bir tür “odak modu”na geçip çok hızlı token üretebilirse, çok sayıda hipotezi araştırıp ayıklayan akıl yürütme aşamasını hızlandırabilir
Makale, bunu hızlı yol ile yavaş yolu birleştiren hibrit bir yapı ya da speculative execution modeli olarak kullanmanın mümkün olduğunu öne sürüyor
Başta “bunu neden yapalım ki?” diye düşünmüştüm ama şimdi buna eğitim bootstrap’i açısından bakıyorum
Örneğin %80 doğrulukta bir uzman sistemi modele gömüp, onun çıktısını eğitim verisi olarak kullanarak doğruluğu artırabilirsiniz
Farklı görevlerin eğitim maliyeti ne kadar düşerse, AI rekabetindeki giriş bariyerleri de o kadar düşer
softmax attention’dan farklı olarak average-hard attention, key ve query açısından türevlenebilir değil
straight-through tahminiyle düzeltilse bile backpropagation hızı artmıyor
İnsan beyni hesaplama yeteneği bakımından o kadar da güçlü değil
10 basamaklı sayıları çarpmak bile uzun sürer. Bu tür hesapları mantık kapıları çok daha verimli işler
O halde LLM’in doğrudan hesaplama yapması yerine ALU benzeri harici bir modül çağırması daha iyi olmaz mı diye düşünüyorum
Üslup AI tarafından yazılmış gibi duruyor ama ana mesaj belirsiz
Modelin harici bir sistem yerine içeride program çalıştırmasının neden iyi olduğu, hız, backpropagation veya benchmark açısından ne kazandırdığı net değil
Bazıları symbolic logic’in şart olduğuna inanıyor ama bu tür denemeler basitçe ilginç bir deney olarak da görülebilir
Bu, harici araç çağrılarından temelden farklı
Ayrıca O(k + log n) karmaşıklığında decoding maliyeti var ve Sudoku gibi problemleri %100 doğrulukla çözerse bu gayet anlamlı olur
Böyle bir yaklaşım MoE tarzında birleştirilebilir ya da WASM tabanlı VM gömme gibi farklı yorumlayıcılarla denenebilir
Modelin iç hesaplama yoluna araçları entegre etme fikri, yorumlanabilirlik açısından çok ilginç
Sıradan bir Transformer ile böyle bir verim alınabilmesi şaşırtıcı
Potansiyeli var ama mevcut haliyle pek pratik görünmüyor
Ağırlıklar ya da “compiler” araçları yayımlanmadığı için deney yapmak zor
Yine de önceden tanımlı hesaplama primitive’lerini LLM’e gömme fikri hâlâ yararlı olabilir
Kilit cümle şu:
“Yürütme izi ileri geçişin bir parçası olduğu için, gradyan hesaplamanın kendisi üzerinden yayılabilir”
Yani harici araç çağrılarından farklı olarak bu, eğitilebilir hesaplama tabanlı bir yapı oluyor
Ayrıca eğitim verisinin ya da loss function tasarımının nasıl olduğu net değil
Yine de araç çağrılarının batch verimliliğini bozduğu düşünülürse, içsel bir hesaplama subnet’inden geçirmek büyük ölçekli verim artışı sağlayabilir
Ama o subnet’in illa Transformer olması gerekmeyebilir; GPU için optimize edilmiş öğrenmeyen katmanlar da yeterli olabilir
Makale asıl önemli noktayı gizliyor
Attention head boyutu 2 ile sınırlandığında, token’ları logaritmik zaman karmaşıklığıyla aramak ve güncellemek mümkün oluyor
Ama bu stratejinin neden yalnızca “kod token’larına” uygulandığı belirsiz
WASM’ın hedef alınması da verimlilik açısından soru işareti yaratıyor
Örneğin self-attention’ı “lookup table” diye tanımlamak isabetli değil
Kod örneğinde
d_model = 36, n_heads = 18ile head başına 2D kurulmuş ama yine de durum net değilSudoku çözücüsünün Transformer ağırlıklarına nasıl compile edildiğine dair somut bir açıklama yok
Doğrudan code-to-weight compilation mı yapıldı, yoksa eğitimle mi öğrenildi, belli değil
İlginç ama “neden bunu özellikle böyle yapalım?” sorusu ortada duruyor
İnsan beyni de bir Turing makinesini simüle edebilir ama yavaştır. Bu yüzden harici araçlar kullanırız
Model için de benzer şekilde harici araç kullanmak daha verimli olabilir diye düşünüyorum
Elixir gibi bir dili gömüp daha kısa kod çalıştırmak da mümkün olabilir
Buradaki fikir, modelin yürütme sırasında kodu değiştirip debug etme yeteneğine sahip olabilmesi