2 puan yazan GN⁺ 2024-04-08 | 1 yorum | WhatsApp'ta paylaş
  • Google DeepMind’ın Mixture-of-Depths(MoD) yaklaşımı, transformer dil modellerinin tüm token’lar için aynı FLOPs’u kullanmak yerine, her katmanda yalnızca gerekli token’ların attention ve MLP hesaplamalarına katılmasını sağlar
  • Katman bazlı yönlendirici, her token için skaler ağırlıklar üretir ve önceden belirlenmiş top-k kapasitesi içindeki token’lar bloktan geçerken geri kalanlar residual connection ile atlanır
  • k önceden sabitlendiği için hesaplama grafiği ve tensör boyutları statik kalır; ancak bağlama göre token başına hesaplama dağılımı dinamik olarak değişir
  • Deneylerde MoD, isoFLOP ölçütünde temel transformer’a kıyasla aynı eğitim süresinde daha düşük loss üretebildi veya aynı performansta forward pass başına FLOPs’u azaltarak eğitim ve örnekleme adımlarını hızlandırabildi
  • En iyi ayar, %12,5 kapasiteli blokların birer blok atlayarak uygulanmasıydı; auto-regressive sampling’de ise predictor tabanlı yönlendirme ile top-k’nin nedensel olmayan yapısı azaltıldı

MoD’nin hedeflediği hesaplama israfı

  • Genel transformer dil modelleri, forward pass sırasında tüm token’lar için aynı miktarda hesaplama kullanır
  • MoD, tüm token’ların ve dizilerin tahmin için aynı süre ve çabayı gerektirmediği varsayımından hareketle, toplam hesaplama bütçesini azaltırken gerekli token’lara hesaplama tahsis eder
  • Mevcut koşullu hesaplama (conditional computation) yaklaşımları dinamik hesaplama grafikleri oluşturabildiğinden, güncel donanımın tercih ettiği statik hesaplama grafikleri ile uyumsuz olabilir
  • Kullanıcı eğitimden önce toplam hesaplama bütçesini belirlerse, model bunun içinde token ve katman bazında hesabı nereye harcayacağını öğrenir
    • Hesaplama miktarı, bellek kullanımı ve forward pass başına FLOPs önceden tahmin edilebilir
    • Yönlendirilen token’lar giriş bağlamına göre değişir

Yönlendirme yapısı ve hesaplama azaltma yöntemi

  • MoD, MoE transformer’lar gibi bir yönlendirici kullanır; ancak birden fazla expert arasından seçim yapmak yerine token’ı iki yoldan birine gönderir
    • attention ve MLP içeren standart blok hesaplaması
    • değeri olduğu gibi ileten residual connection
  • residual connection’ın hesaplama maliyeti düşüktür ve blok çıktısı giriş değerinden belirlenir
  • Blok kapasitesi, toplam token sayısı T’den küçük ayarlanırsa, forward pass başına FLOPs temel transformer’dan daha düşük olur
    • Örneğin kapasite T/2’ye düşürülürse, attention’ın query-key matris çarpımı T² yerine (T/2)² olur ve FLOPs yaklaşık %25 seviyesine iner
  • Kapasite 0 yapılırsa çok hızlı olur ama transformer parametrelerinin çoğu kullanılmadığı için performans düşer; kapasite T olduğunda ise temel transformer ile aynı hale gelir
  • Amaç, bu iki uç arasında temel transformer ile aynı ya da daha iyi performans verirken adım hızını artırabilecek noktayı bulmaktır

top-k expert-choice yönlendirme

  • Her katman l için yönlendirici, token embedding’lerinin her biri için skaler ağırlık üretir
  • Kullanıcının belirlediği kapasite C’ye göre, dizideki token’lar arasında top-k içinde yer alanlar attention ve MLP hesaplamalarına katılır
  • Seçilmeyen token’lar blok hesaplamasını atlar ve residual connection üzerinden bir sonraki katmana aktarılır
  • Bu yaklaşım expert-choice routing’e dayanır
    • token-choice routing’de yolu token seçtiği için load balancing sorunları oluşabilir
    • expert-choice routing’de ise her yol top-k token’ı seçtiğinden kapasite tam olarak doldurulur
  • MoD’de yollar fiilen “blok hesaplaması” ve “atlama” olarak ikiye ayrıldığı için, tek bir top-k işlemiyle token’lar iki kümeye ayrılabilir
  • Yönlendirici ağırlıkları blok çıktısına çarpılır; böylece gradient path üzerinde yer alır ve dil modelleme eğitimi sırasında gradient descent’ten etkilenir

Örneklemede ortaya çıkan nedensellik dışı sorun

  • expert-choice routing’deki top-k işlemi nedensel olmayan (non-causal) bir yapıdadır
    • Bir token’ın top-k içine girip girmeyeceği, sonraki token’ların yönlendirici ağırlıkları bilinmeden belirlenemez
    • auto-regressive sampling’de gelecekteki token bilgisi kullanılamaz
  • Bunu aşmak için iki yöntem denendi
    • Yönlendirici çıktısının sigmoid’inin top-k seçimini tahmin etmesini sağlayan ikili çapraz entropi yardımcı kaybı
    • Yönlendiriciyle aynı girdiyi alan, ancak stop-gradient uygulanan küçük bir yardımcı MLP predictor
  • İlk yöntem, ana dil modelleme objective’ini yaklaşık %0,2~0,3 etkiledi
  • İkinci predictor tabanlı yöntem, dil modelleme objective’ini etkilemedi ve adım hızında da anlamlı bir değişiklik yaratmadı
  • Yardımcı tahmin görevi deneysel olarak hızla %99 doğruluğa ulaştı

Deney sonuçları ve gözlemler

  • İlk deneyler, toplam 6e18 FLOPs bütçesi içinde MoD hiperparametrelerini bulma yaklaşımıyla yürütüldü
  • En iyi MoD ayarı, her iki bloktan birinde yönlendirmenin uygulanması ve top-k değerinin 256 olmasıydı
    • 2048 dizi uzunluğunda 256 token, yani yalnızca %12,5, attention ve MLP’den geçer
    • Kalan 1792 token, yani %87,5, bloğu atlar
  • 220M parametreli MoD varyantı, isoFLOP açısından en iyi baseline’dan biraz daha iyi performans verirken eğitim sırasında adım hızında %60’tan fazla artış sağladı ve aynı donanımda toplam eğitim wall-clock time neredeyse aynı kaldı
  • 6e18, 2e19 ve 1e20 FLOPs için yapılan isoFLOP analizlerinde de MoD’nin FLOP-optimal modellerinin baseline’a göre daha fazla parametreye sahip olma eğiliminde olduğu görüldü
  • Aynı performansı ya da daha düşük loss’u sağlarken forward pass başına daha az FLOPs kullanan MoD varyantları mevcut
  • Adım hızı artışı iki etkenden kaynaklanıyor
    • Bazı token’lar bloğu atladığı için aynı model boyutunda parametre başına FLOPs azalıyor
    • baseline ile aynı performansı veren daha küçük bir MoD varyantı seçilebiliyor
  • Stochastic routing kullanan MoD, temel transformer ve standart MoD’ye göre belirgin biçimde daha düşük performans gösterdi; bu da öğrenilmiş yönlendirmenin önemli olduğunu ortaya koydu
  • auto-regressive değerlendirmede 256.000 dizi ve 500M token içeren held-out data kullanıldı; predictor tabanlı yönlendirmeye geçildiğinde performans kaybı küçüktü
  • MoD, MoE ile birleştirilerek Mixture-of-Depths-and-Experts(MoDE) biçiminde de kurulabiliyor
    • staged MoDE, attention’dan önce token’ın bloğa mı gönderileceğine yoksa atlanacağına mı karar veriyor
    • integrated MoDE ise mevcut MLP expert’leri arasına bir “no-op” expert ekleyerek MoD yönlendirmesini entegre ediyor
  • Yönlendirme analizinde bazı token’ların birçok bloktan sık geçtiği, bazılarının ise mümkün olduğunda sürekli atlandığı gözlendi
  • Sık sık bloktan geçen token’ların, çıktı tahmininde daha yüksek entropy ile ilişkili olduğuna dair ön analiz sonuçları vardı; bu da bunların tahmin edilmesi daha zor token’lar olabileceğine işaret ediyor

1 yorum

 
GN⁺ 2024-04-08
Hacker News yorumları
  • Daha karmaşık yönlendirme kesinlikle daha yaygın hale gelecek gibi görünüyor
    Özellikle bir gün uzman kümesinden tekrar tekrar geçiren özyinelemeli yönlendirmeye gidileceğini düşünüyorum. Gelecekte 'düşünce zinciri (chain-of-thought)' modelin içinde özyinelemeli olarak gerçekleşecek gibi

    • Bu tür varsayımsal nesnelere Recursive Neural Networks denebilir
    • Burada tarif edilen şey Universal Transformers çizgisindeki çalışmalara biraz benziyor. Girdi gömmesini tek bir transformer bloğundan birkaç kez geçirip, ayrı bir modülün gömmenin yeterince “olgunlaşıp olgunlaşmadığına” karar vererek onu çıkarması şeklinde
      “Uzman” fikrine daha yakın olan ise geçen yılki Sparse Universal Transformers makalesi; Universal Transformer ile seyrek uzman karışımını birleştiriyor ve gating mekanizması hangi transformer bloğunun hangi sırayla kullanılacağına karar veriyor
      Uzmanlık alanım değil ama doğru şekilde eğitmenin zor olduğunu ve normal transformer’a benzer sonuçlar almak için çıkarım sırasında toplamda daha fazla hesaplama gerektiğini anladım. Yine de ilginç bir yön; token başına hesaplama adımı sayısının üst sınırı olması klasik transformer mimarisinin büyük dezavantajlarından biri bence
    • Bunun henüz olmamasının nedeni, eğitim sırasında kaç kez özyineleme yapılacağına karar verecek bir yöntem olmaması bence
      Rastgele bir sayı seçmek ya da birden fazla özyineleme derinliği denemek çıktıyı “bulanıklaştırıyor”. Yani hangi katmanın çıktısının nihai sonuç için önemli bilgiyi vermesi gerektiği, yoksa bir sonraki özyineleme turu için en iyi girdiyi mi vermesi gerektiği belirsizleşiyor
    • Attention temelde yönlendirmedir; bu diğer yönlendirme biçimleri modele daha kaba seçenekler vererek öğrenmeyi potansiyel olarak kolaylaştırabilir
    • Eğilim kesinlikle dinamik yönlendirmenin artması yönünde, ama MoE/MoD/MoDE’nin daha derin akıl yürütmeyi mümkün kılmasından ziyade, ağırlıklar içindeki örtüşmeyi azaltarak ek olguları barındırmaya yaradığına daha yakın görüyorum
      Daha derin akıl yürütme, katman düzeyi dinamizmden çok token düzeyi dinamizmden gelecek gibi. Örneğin modelin attığı gerekçe token’larını üreten yakın tarihli Quiet-STaR makalesi var: https://arxiv.org/abs/2403.09629
  • 2024’ün en önemli makalesi olabilir
    Tüm token’lar için aynı miktarda hesaplama kullanmak zorunda olmayan modeller istediğimiz fikri eskiden beri vardı ama bunun için ikna edici bir mekanizmayı ilk kez görüyorum

    Equipped with these new methods, we can sample autoregressively by choosing to route tokens to or around a block based on the router’s output, which does not depend on any information from future tokens. We provide empirical evidence that this is a relatively easy auxiliary task that quickly achieves 99% accuracy.
    Bu biraz şaşırtıcı değil mi?

    • Sparse Universal Transformer daha eski ve zaten yönlendirme tabanlı erken sonlandırma yapıyordu
    • En önemlisi mi? Her token’ın tüm bağlam penceresine ihtiyaç duymaması obvious optimization olmalı
  • Basit giriş versiyonu:
    Konuşmayı anlayıp işleyebilen akıllı bir asistan olduğunu hayal etmek yeterli. Normalde bu asistan, her kelimenin toplam anlam açısından ne kadar önemli olduğuna bakmadan tüm kelimelere aynı dikkati verir
    Şimdi asistana “beyin kaynaklarını” daha akıllıca kullanmayı öğretmenin bir yolunu bulduğumuzu düşünelim. Tüm kelimelere aynı dikkati vermek yerine, anlamı kavramak için en önemli kelimelere daha fazla odaklanır ve bu odağı bağlama göre anında ayarlar
    Asistanın aşırı yüklenmemesi için belirli bir anda kullanılabilecek toplam “beyin kaynağına” da bir sınır koyarız. Ona bir bütçe verip “aynı anda yalnızca belirli sayıda kelimeye kaynak ayırabilirsin” demek gibi. Böylece asistan hangi kelimelerin en önemli olduğuna karar vermek zorunda kalır
    Bu sınır olsa bile asistan kaynak kullanımını esnek biçimde ayarlar. Bazı kelimelere daha fazla, bazılarına daha az kaynak ayırarak duruma göre öncelik verir
    Bu şekilde eğitildiğinde asistan, akıllıca dikkat ederken verimli de çalışır. Tüm kelimelere eşit dikkat veren bir asistan kadar iyi anlar, ama toplam beyin kaynağını daha az kullandığı için yanıtlar ve yeni bilgileri işleme çok daha hızlı olur

    • ELI5 olduğunu biliyorum ama anlattığın şey zaten attention’ın yaptığı şey değil mi? Önceki dizide bağlamsal olarak önemli kelimelere özellikle odaklandığı için
  • Kendi anladıklarıma dayanarak burada biraz özetledim:
    https://lifeinthesingularity.com/p/googles-breakthroughs-in-...

    • Yazı iyi. New Scientist tarzını hatırlatıyor. “İlerledikçe açıklayıp kısa tutan” bir hissi var; bu alan hakkında fikir edinmek için iyi
  • Uzman karışımına çok benziyor. Sadece token’ları birden fazla uzmana yönlendirmek yerine, “dinamik olarak atlanabilen tek bir uzmana yerleştirme” gibi

    • İkisini karıştırmak oldukça güzel olabilir. Performansı korurken MoE hesaplama miktarını daha da azaltabilir
  • “This is more computationally efficient than performing a full content-based lookup across an entire memory buffer for each step in the future, and could be one step towards drastically increasing the context-length available for making a prediction.”
    Bu, 10 milyon token’lık bağlam penceresini mümkün kılan yöntem mi? Yoksa gelecekte daha uzun bağlam pencerelerinden mi bahsediyor?

  • Birkaç RASP algoritmasını anlayıp uygulamaya çalıştıktan sonra vardığım sonuç, belirli fonksiyonların çalışması için belli sayıda transformer katmanına ihtiyaç duyduğuydu
    Bu mantığı izleyince, transformer’ın öğrendiği fonksiyonların birden fazla head’e yayılabileceği ortaya çıkıyor. Bu tür fonksiyonları tekrarlamak, problemi anlamak ve çözmek açısından çok değerli olabilir; fakat mevcut çıkarım yöntemi ardışık head kümelerini tekrar tekrar çalıştıramıyor. Bu makale gerçekten umut verici bir yön gibi görünüyor
    [1] https://arxiv.org/pdf/2106.06981.pdf
    [2] https://www.youtube.com/watch?v=t5LjgczaS80

  • LLM’lerin çok hızlı gelişmesinin tek dezavantajı, makalelerin kimsenin, en azından Google dışındaki kimsenin, iyileştirmeleri öğrenip test edebileceği hızdan daha hızlı çıkması olabilir
    Ben derin öğrenmeye başladığımda ReLU ve dropout revaçtaydı; tüketici sınıfı bir 1080’de bir iki satır kod değiştirip birkaç saat içinde iyileşme olup olmadığını test edebiliyordum. Şimdi Mistral gibi bir yerin denemesini birkaç hafta beklemek gerekecek gibi

    • GPU yoksulları arasına hoş geldin
      Ben kuantizasyon yaklaşımlarına odaklanıp eski, önceki nesil GPU’larla test yapıyorum
  • hu-po, yapay zeka makalelerini derinlemesine canlı yayınlarda inceliyor
    Şiddetle tavsiye ederim; burada tartışılan mixture-of-depths makalesini ele alıyor: https://www.youtube.com/watch?v=Teru_qIdB8Y