- Uzun bağlamlı Transformer'larda self-attention maliyetinin darboğaz olduğu durumda, SPECTRE FFT tabanlı bir token karıştırıcıyla katman başına karmaşıklığı O(L²)'den O(L log L) düzeyine indiriyor
- Her attention head, hızlı real FFT, içeriğe uyarlanan spectral gate ve inverse FFT birleşimiyle değiştiriliyor; mevcut Transformer yapısı korunuyor
- Otoregresif üretimde Prefix-FFT cache, her adımda FFT'yi yeniden hesaplama yükünü azaltıyor; isteğe bağlı wavelet modülü de yerel özellik kaybını telafi edebiliyor
- Llama-3.2-1B omurgasında SDPA, FlashAttention-2 ve SPECTRE karşılaştırıldı; NVIDIA A100-80GB üzerinde 512~128k token için throughput ve gecikme ölçüldü
- SPECTRE, PG-19 ve ImageNet-1k'de temel performansla aynı ya da daha iyi sonuç verdi ve %6'dan az ek parametreyle standart GPU'larda uzun bağlam işlemeyi hedefliyor
Self-attention'ın karesel maliyetini FFT ile azaltma yöntemi
- Uzun bağlamlı Transformer'lar, çok turlu diyalog, kitap uzunluğunda özetleme ve yüksek çözünürlüklü görme gibi on binlerce token içeren görevler için gerekli
- Mevcut self-attention, O(n²d) maliyeti nedeniyle bağlam uzadıkça çıkarım gecikmesini ve bellek kullanımını artırıyor
- SPECTRE, self-attention katmanını frekans alanı token karıştırıcısı ile değiştiren, doğrudan takılabilir bir alternatif
- Token'ları ortonormal Fourier tabanına yansıtıyor
- İçeriğe uyarlanan diyagonal gate ve isteğe bağlı low-rank gate uyguluyor
- inverse transform ile yeniden token uzayına döndürüyor
- Temel fikir, çevredeki ağ mimarisini değiştirmeden katman başına karmaşıklığı O(n log n) düzeyine indirmek
Token karıştırıcı yapısı ve üretim desteği
- SPECTRE'nin attention head yerine geçen yapısı, fast real FFT, spectral gate ve inverse FFT'den oluşuyor
- spectral gating, n/2 + 1 frekans katsayısı üzerinde çalışarak hesaplama ve bellek kullanımını azaltırken ifade gücünü koruyacak şekilde tasarlanmış
- Prefix-FFT cache, standart KV-cache'e benzer bir rolle akış halinde decoding'i destekliyor
- Otoregresif üretimde her time step'te FFT'yi yeniden hesaplama gerektiren mevcut spectral mixer zayıflığını azaltıyor
- Sabit bellek bütçesi içinde verimli üretimi mümkün kılan bir yapı sunuyor
- İsteğe bağlı Wavelet Refinement Module, saf spectral yaklaşımda kaybolabilecek yerel ayrıntıları telafi ediyor ve hesaplama ek yükü düşük kalıyor
Mevcut Transformer'a uygulama yöntemi
- SPECTRE, multi-head attention katmanını doğrudan değiştirebildiği için ayrı bir mimari yeniden tasarım gerektirmiyor
- Mevcut önceden eğitilmiş modeller, SPECTRE katmanlarıyla fine-tuning yapılabilecek şekilde kullanılabiliyor
- Güncellenen kısım, yeni eklenen parametreler
- Ek parametreler, toplam ağırlıkların %6'sından azını oluşturuyor
- Specialized optimization veya standart dışı mimari isteyen yaklaşımların aksine, çevredeki Transformer yapısını koruyor
Llama-3.2-1B tabanlı deneyler
- Aynı Llama-3.2-1B omurgasında üç attention kernel uygulanarak karşılaştırma yapıldı
- standard softmax-dot-product attention (SDPA)
- FlashAttention-2
- SPECTRE mixer
- Ölçüm ortamı NVIDIA A100-80GB ve dizi uzunlukları L ∈ {512, 1k, 4k, 8k, 32k, 128k}
- Ölçütler, tokens-per-second throughput ve single-batch latency
- Throughput ne kadar yüksekse o kadar iyi
- latency ne kadar düşükse o kadar iyi
- SPECTRE, omurga doğruluğunu korurken neredeyse O(n log n)'e yakın çalışma süresi gösteriyor
- 32k token'a kadar çalışma süresi neredeyse düz kalıyor
- Özet kısmına göre, 128k token bağlamda FlashAttention-2'den en fazla 7× daha hızlı
- Metindeki contribution listesine göre ise 32k token'da FlashAttention-2'den en fazla 7× daha hızlı çıkarım gösteriyor
Benchmark sonuçları ve pratik kullanım alanı
- SPECTRE, PG-19 dil modelleme ve ImageNet-1k sınıflandırmada baseline performansla aynı ya da daha iyi sonuç veriyor
- Uzun bağlam işlemede self-attention'ın karesel maliyetinden kaçınırken küresel bağlam karıştırmayı koruyor
- Sparse pattern, kernel approximation ve low-rank structure tabanlı attention hızlandırma yöntemleri; kesinlikten ödün verme, standart dışı optimizasyon gereksinimi veya streaming generation desteği olmaması gibi sınırlara sahip olabiliyor
- SPECTRE, FFT'nin circular convolution'ı köşegenleştirerek küresel karıştırmayı element-wise product'a dönüştürdüğü frekans alanı yaklaşımını kullanıyor
- Ek parametreleri %6'nın altında tutarak, specialized hardware olmadan commodity GPU üzerinde yüz binlerce tokenlık bağlam işlemeyi hedefliyor
1 yorum
Hacker News yorumları
Temelde evrişim teoremini kullanan bir yaklaşım: özgün uzayda pahalı olan evrişim, karşılıklı uzayda basit bir çarpmaya dönüşür; tersi de geçerlidir.
Veride bir evrişim işlemi varsa, eşlenik alana dönüştürüp çarpmaya çevirmek yeterli.
Başka bir deyişle, verinin doğal olduğu alanda çalışın demek.
https://en.wikipedia.org/wiki/Convolution_theorem
Optimize etmek için her adımı optimize eder ve mümkün olduğunca en verimli uzayda daha fazla çalışırsınız.
Bu, sadece hesaplamanın daha kolay olmasından farklı bir şey değil mi?
Üstelik hesaplamada karmaşık sayılar kullanmanız gerekiyor ve sayısal olarak da daha az kararlı. Bildiğim kadarıyla FFT, genel evrişimde kazanç sağlamıyor.
Self-attention’da ya da bu makaledeki kullanımda n çok daha büyük olabilir. Makaleyi okumadım. Yine de karmaşık sayı sorunu kalıyor.
Google bu fikri 2022’de FNet: Mixing Tokens with Fourier Transforms ile ortaya koymuştu.
Sonrasında çoğu durumda TPU’nun matris çarpımı performansının FFT’den daha hızlı olduğunu gördüler.
https://arxiv.org/abs/2105.03824
“Genel olarak FNet, Performer ve sparse transformer gibi yaklaşımlar, sabit ya da yaklaşık token karıştırmayla hesaplama yükünün azaltılabileceğini gösterse de, bizim uyarlanabilir spektral filtreleme stratejimiz FFT’nin verimliliğini öğrenilebilir ve girdiye bağımlı spektral filtrelerle benzersiz biçimde birleştirir. Bu da karmaşık dizi modelleme görevleri için önemli olan güçlü bir ölçeklenebilirlik ve uyarlanabilirlik birleşimi sunar.”
Ardından bir karşılaştırma bölümü de var.
Peki DSP’lerde FFT’ye yardımcı olan özel donanım var mı? Gerçekten merak ettiğim için soruyorum. Hiç kullanmadım ama belli belirsiz işe yarayabileceğini düşünüyorum.
“TPU, Fourier dönüşümlerinde o kadar verimsiz ki araştırmacılar 4096’dan kısa dizilerde FFT algoritmasını kullanmadı; bunun yerine önceden hesaplanmış DFT matrisini kullanan, ikinci dereceden ölçeklenen bir Fourier dönüşümü uygulamasını seçti.”
“Nvidia Quadro P6000 GPU’da, FNet mimarisinde Fourier dönüşümü çıkarım süresinin en fazla %30’unu oluşturdu.”
Bu şirket 2021’de, Google TPU’larda kendi optik çiplerini kullanırsa çıkarım süresini %40 azaltabileceğini iddia etmişti. FFTNet daha fazla işi üstlenirse bu daha da azalabilir.
https://scribe.rip/optalysys/attention-fourier-transforms-a-...
Fourier dönüşümü “token” boyutu boyunca uygulanıyor. Ancak birçok uygulamada bu boyutun bir anlamı yok. Bu yüzden transformer’lar permütasyon değişmez verileri işlemek için iyi bir seçenek oluyor.
Daha az bilinen sonlu gruplar üzerinde Fourier dönüşümü ile ek deneyler görmek isterdim. Bu, permütasyon değişmez olmakla birlikte standart Fourier dönüşümüyle pek çok özelliği paylaşıyor.
Ayrıca bu LLM’lerin bir sonraki büyük akımı olursa, vLLM veya llama.cpp gibi çıkarım motorlarının bunu ne kadar kolay entegre edebileceğini de merak ediyorum.
https://en.wikipedia.org/wiki/Fourier_transform_on_finite_gr...
Bildiğim kadarıyla llama, girdi içindeki konuma göre vektöre bir rotasyon uyguluyor.
Matematik tamamen kafamın üzerinden geçiyor; formüllerin etrafındaki açıklamaları bile ancak zar zor anlayabiliyorum. Biri bunu basit sözlerle attention mekanizmasına nasıl eşdeğer olduğunu açıklayabilir mi?
Burada bahsedilen frekans nedir ve token’lar arasındaki konumsal ilişki nasıl kodlanıyor?
Sinyal analizi veya görüntülerde en sezgisel hâli budur: https://homepages.inf.ed.ac.uk/rbf/HIPR2/fourier.htm
Frekans uzayı özünde karmaşık sayılarla temsil edilen “karmaşık” bir uzaydır. Frekansın avantajı, probleme küresel olarak bakmasıdır
Bu mekanizma attention mekanizmasına eşdeğer değildir ve belirgin bir ödünleşim vardır. Ancak attention’ın yakaladığı önemli ilişkilerin çoğunu yakalama ihtimali vardır
modReLU için şu an iyi bir sezgim yok, ama frekansları değiştirirken ters Fourier dönüşümünü koruduğu için önemli görünüyor
Buradaki “frekans” muhtemelen epey soyut bir şey. FFT, net bir frekans yorumu olmayan şekillerde de sık kullanılır. Çoğu zaman evrişim teoremi gibi kullanışlı matematiksel özellikleri nedeniyle kullanılır
Gerçekten iyi çalışıyorsa oldukça şaşırtıcı ve çok zarif
Yani çıktının her vektörü, ilgili girdi vektörünün diğer tüm girdi vektörlerinin bir fonksiyonu tarafından dönüştürülmüş hâline bağlıdır
https://medium.com/optalysys/attention-fourier-transforms-a-...
Kavramsal olarak bunun biraz basitleştirilmiş evrişime nasıl benzediğini görebilirsiniz: https://openreview.net/pdf?id=8l5GjEqGiRG
Evrişim, bir şekilde küresel durumu dikkate almak istediğinizde sık kullanılır
Bu framework’e nedensel maskeleme eklemek için n adet farklı FFT yapmak gerekecek gibi görünüyor; konum embedding’lerinden de bahsedilmiyor
Bu yüzden karşılaştırma yapılan self-attention uygulaması nedensel olmayan NoPE gibi görünüyor; öyleyse bu, baseline’ı kasıtlı olarak zayıf seçme örneği olabilir ve çok etkileyici olmayabilir
Sonuçlar son teknolojiye yakın olsaydı yazar muhtemelen bundan bahsederdi
İlgili kaynakça gibi görünüyor: https://arxiv.org/abs/2111.13587
Adaptive Fourier Neural Operators: Efficient Token Mixers for Transformers
John Guibas, Morteza Mardani, Zongyi Li, Andrew Tao, Anima Anandkumar, Bryan Catanzaro
Burada frekans alanından bakmanın neden yardımcı olduğuna dair bir sezgisi olan var mı merak ediyorum
DC bileşenini anlıyorum, ama girdi verisinin diğer frekansların anlam taşıyacağı kadar yeterince periyodik olmasını beklemiyorum
Birkaç yıl önce O(n log n) tam bağlam karıştırmayı zaten gösteren Hyena Operator önceki çalışmasına değinilmemiş gibi görünüyor
https://arxiv.org/abs/2302.10866
https://arxiv.org/abs/2111.00396
Büyük O gösterimi bir ölçüde fikir veriyor, ama bilgisayar bilimi ya da elektrik mühendisliğiyle ilgili çoğu şey gibi bu da benim kafamın üzerinden geçip gidiyor.
Matematikte gerçekten kötü biri olarak, bunları anlayabilen ya da en azından öğrenip mühendislik diploması ve lisansı alabilen insanlara imreniyorum.
FFT hakkında bildiğim şey, sinyalleri dönüştürdüğü, bir tür sinyal işlemede kullanıldığı ve eskiden nükleer patlama tespitinin merkezinde yer aldığını duyduğumdan ibaret.
Temel fikir şu: Yararlı sinyallerin neredeyse tamamı, farklı frekans ve fazlara sahip sinüs dalgalarının toplamı olarak ifade edilebilir. Örneğin elektrik sinyali ya da ses dalgası, x ekseninin zaman olduğu tek boyutlu bir sinyaldir. Görünüşte başa çıkması zor, karmaşık, kıvrımlı bir çizgi olabilir.
Fourier dönüşümüyle zaman tabanlı bir sinyalin tek tek frekanslarını ayırabilirsiniz. Sonra belirli frekansları istediğiniz şekilde değiştirebilirsiniz. Örneğin sinyalde çok sayıda rastgele sivri gürültü varsa, bu yüksek frekans olarak görünür. Temizlemek için Fourier dönüşümü yapar, belirli bir eşikten yüksek frekanslardaki veriyi atar, sonra kalan veriye ters Fourier dönüşümü uygulayarak özgün sinyalin daha pürüzsüz bir sürümüne dönersiniz. Buna alçak geçiren filtre denir ve özgün sinyalin hareketli ortalamasını almaya oldukça benzer.
İşin ilginç yanı, bunun daha yüksek boyutlara da oldukça sezgisel biçimde genişletilebilmesidir. x ve y eksenlerinin ikisi de uzay olan iki boyutlu bir sinyal, bir görüntüdür. JPEG sıkıştırması bu kavrama dayanır. Görüntüyü daha küçük saklamak için yüksek frekanslı sinyaller kaldırılır; bunun bedeli olarak ince ayrıntılar kaybedilir ya da çok fazla atılırsa halka biçimli artefaktlar oluşur. Buna üçüncü boyut olarak zamanı eklerseniz video olur ve böylece genişletmeye devam edebilirsiniz.
Tüm bunlar görsel olarak anlaşılmaya çok uygun olduğundan, matematiğin tamamını derinlemesine bilmeden de iyi bir sezgi kazanabilirsiniz. Görselleştirmeleri ve etkileşimli örnekleri bol olan iyi bir sayfa: https://www.jezzamon.com/fourier/index.html
3Blue1Brown videosu da iyi açıklıyor: https://youtu.be/spUNpyF58BY?si=dz0z-s8NftW3Htun
FFT’nin ayrık sürümü olduğu Fourier dönüşümü, bu tek boyutlu zaman alanı sinyalini frekansa karşı genlik ve faz bileşenlerine ayırır.
Frekans temelde ses perdesidir. Saf sinüs dalgası ya da saf ton, eskiden gece geç saatte TV yayını kapanırken duyulan sese benzer; bu durumda değerlerin çoğu 0’dır ve o tonun frekans konumunda tek bir “sivri tepe” oluşur. Sinyal genliği ne kadar büyükse, sivri tepenin büyüklüğü de o kadar büyük olur. Ses perdesi, yani frekans yükselip alçaldıkça bu sivri tepenin konumu yatay eksen boyunca yukarı aşağı hareket eder.
Faz temelde sinyalin zaman ofsetidir. Herhangi bir şekilde geciktirilmiş bir ton farklı bir faz olarak görünür. Ancak bu mutlak değil, göreli bir ölçümdür. Birimi radyan, yani açı olduğundan bir çemberi tam tur dönünce tekrar “sıfırlanır”; bu yüzden sinyalin 1 saniye mi yoksa 2 saniye mi kaydığını anlayamazsınız.
Dolayısıyla tek bir sinyalden, yani zamana karşı genlikten, aslında frekansa karşı genlik ve faz olmak üzere iki bilgi elde edersiniz.
Sanal ya da karmaşık değişkenleri anlıyorsanız, bu iki sinyal aslında karmaşık bir fonksiyon olan FFT çıktısının büyüklüğü ve argümanından ibarettir.
Telemetri çağında, bulut telemetrisine FFT uygulayarak periyodik anomalileri ve yarı kararlı sistemleri olay patladıktan sonra değil önce bulmamak büyük bir fırsat kaçırma gibi geliyor.
Ne yazık ki bu, fark edebileceğim düzeyde ama uygulayacak teknik düzeyde olmadığım bir şey; üstelik takvimim de zaten dolu.
“SLA, servis dağıtımından 23–25 dakika sonra en kolay ihlal ediliyor. Hımm, neden acaba… ah hayır.”
Şaka bir yana, bunun gerçekten para edebileceği alan, trafik döngülerini tahmin edip sunucu instance’larını yukarı/aşağı ölçekleyerek maliyet tasarrufu sağlamaktır.
Bu, kişisel zamanda yapıldığında şirketin asla onaylamayacağı, ama hazır ürün olarak paketlenirse şirketin hemen satın alacağı türden bir iştir.