1 puan yazan GN⁺ 2023-07-25 | 1 yorum | WhatsApp'ta paylaş
  • Transformer içindeki attention softmax, bir head'in “hiçbir şey yapmamayı” seçmesini engelleyerek kuantizasyonu ve düşük bellekli dağıtımları zorlaştırabilir
  • Sorunun ipucu, LLM'lerde görülen aykırı weight/activation değerleridir; Qualcomm AI Research makalesi, aykırı activation'ların %97'den fazlasının boşluk ve noktalama işareti konumlarından geldiğini analiz ediyor
  • Klasik softmax, tüm girdiler çok negatif olsa bile her terime 1/k ağırlığı verir; ancak softmax_1, paydaya 1 ekleyerek attention çıktısının 0'a yaklaşabilmesini sağlar
  • softmax_1, göreli oranları korurken toplamı 0 ile 1 arasında sınırlar ve pozitif türevleri sayesinde sıfır olmayan gradient bırakır
  • Bu değişiklik, mevcut modellere doğrudan takılan bir yama değil; yeniden eğitim gerektirir, ancak LLaMA gibi modellerde zero prefix token yaklaşımıyla hızlı deneyler mümkün olabilir

Kuantizasyonu zorlaştıran aykırı değerler

  • Transformer modellerinde, diğer değerlerden birkaç basamak daha büyük weight ve activation değerleri ortaya çıkar ve bu değerler modelin çalışması için önemli görünüyor
  • Bu tür aykırı değerler, standart scale-and-bias tamsayı kuantizasyonunda performans düşüşüne yol açarak büyük modellerin Mac Mini veya Raspberry Pi gibi RAM'i kısıtlı ortamlarda çalıştırılmasını zorlaştırıyor
  • RAM kullanımını azaltmak, hem bulut hem de edge ortamlarında daha büyük modelleri ya da daha fazla özelliği çalıştırmak için alan açar
  • Qualcomm AI Research'ün Quantizable Transformers: Removing Outliers by Helping Attention Heads Do Nothing makalesi, aykırı değerleri attention mekanizmasındaki softmax ile ilişkilendiriyor
    • LLM'lerdeki aykırı activation'ların %97'den fazlasının whitespace ve punctuation konumlarında oluştuğunu analiz ediyor
    • clipped softmax, zero gradient sorununa sahip; gated attention ise milyonlarca yeni parametre ekliyor

Transformer içinde softmax'ın rolü

  • Transformer'ın girdi embedding'leri, kelimeleri temsil eden kayan noktalı vektörlerdir
    • Meta'nın LLaMA 2 modeli, uzunluğu 3.204 olan embedding vector'ler kullanır ve half-precision ile bir kelimeyi temsil etmek için 6 KB'den fazla gerekir
    • vocabulary genellikle 30.000~50.000 öğe içerir
  • Transformer, girdi vektörlerini aynı boyutta çıktı vektörlerine dönüştürür ve son çıktı vektörü, mevcut token'dan sonra gelecek token'ı tahmin etmek için kullanılır
  • residual connection, attention'ın özgün kelime bilgisine bağlam bilgisini eklemesi şeklinde çalışır
    • Örneğin pupil sözcüğünün öğrenci mi yoksa göz bebeği mi olduğunu ayırt eden bağlamsal bilgiyi ekler
  • Son aşamada çıktı vektörü, vocabulary uzunluğunda bir vektöre dönüştürülür ve ardından softmax uygulanarak sonraki token olasılıkları gibi ele alınır
    • Gerçek uygulamalarda softmax çıktısındaki olasılıklara doğrudan güvenmek yerine bir sampling mechanism kullanılır
    • Çıkış aşamasındaki softmax, tüm vocabulary'ye gradient vermesi nedeniyle makul bir tercih kabul edilir

İç attention softmax'ının sınırları

  • İç attention'ın temel denklemi şöyledir

[ \textrm{Attention}(Q, K, V) = \textrm{softmax}\left(\frac{QK^T}{\sqrt{d}}\right)V ]

  • decoder-only model'lerde (Q), (K) ve (V) aynı girdi dizisinden başlar, ancak farklı biçimlerde projection uygulanır
  • (QK^T), token embedding vector'leri arasındaki korelasyonları bulur; her satıra softmax uygulanır ve sonuç, (V) matrix'indeki value vector'leri karıştırmak için ağırlık olarak kullanılır
  • multi-head attention, bu işlemi her layer'da birden çok head üzerinde paralel biçimde yürütür
    • embedding vector birden çok segmente bölünür ve her head, output vector'ün bir segmentine bilgi ekler
  • Sorun, softmax'ın her attention head'ini mutlaka bir annotation üretmeye zorlamasıdır
    • head'in ekleyecek bilgisi olmasa bile softmax bir seçim üretir
    • Bir işte uzmanlaşmış head'lerin “pass” seçeneğine ihtiyaç duyması daha olasıdır, ancak klasik softmax'ta böyle bir abstention yoktur

Öneri: softmax_1 ve QuietAttention

  • Önerilen değişiklik, softmax paydasına 1 eklemek

[ (\textrm{softmax}_1(x))_i = \frac{\exp(x_i)}{1+\sum_j \exp(x_j)} ]

  • Klasik softmax'ta tüm (x) değerleri çok negatif olduğunda bile her terim (1/k)'ye yakınsar

[ \lim_{x_1 \to -\infty} \ldots \lim_{x_k \to -\infty} (\textrm{softmax}(x))_i = \frac{1}{k} \gt 0 ]

  • softmax_1, aynı koşullarda her terimi 0'a yaklaştırır

[ \lim_{x_1 \to -\infty} \ldots \lim_{x_k \to -\infty} (\textrm{softmax}_1(x))_i = 0 ]

  • Bu fark sayesinde attention head, bilgi eklememeyi seçebilir
  • Önerilen attention denklemi şöyledir

[ \textrm{QuietAttention}(Q, K, V) := \textrm{softmax}_1 \left(\frac{QK^T}{\sqrt{d}}\right)V ]

softmax_1'in özellikleri ve deney koşulları

  • softmax_1, toplam değeri biraz düşürür; ancak attention sonrasındaki normalization bu küçülmeyi telafi edebilir
  • Çıktı vektörünün göreli oranları klasik softmax ile aynıdır

[ \frac{(\textrm{softmax}_1(x))_i}{(\textrm{softmax}_1(x))_j} = \frac{(\textrm{softmax}(x))_i}{(\textrm{softmax}(x))_j} = \frac{\exp(x_i)}{\exp(x_j)} \quad \forall \ i, j ]

  • Türevler pozitiftir; bu nedenle sıfır olmayan gradient korunur ve toplam 0 ile 1 arasında kaldığı için çıktı denetimli aralığın dışına çıkmaz
  • Bu sorun, numerical precision değil matematiksel bir sorun olarak ele alınıyor; yalnızca precision artırmak çözüm olmuyor
  • Deney fikri, tüm girdi context'inin başına bir zero vector eklemek ve positional encoding dahil hiçbir bias eklenmediğinden emin olmak
    • zero olduğu gibi aktarılırsa, sonraki her softmax denominator'ına 1 ekleme etkisi üretir
    • fixed embedding ve special prefix token kullanan LLaMA modellerinde bu mümkün olabilir
  • Bu, mevcut modellere doğrudan uygulanacak bir deney değildir; modelin yeniden eğitilmesi gerekir
  • Bakılmak istenen metrikler, weight kurtosis ve activation infinity norm değişimleridir

1 yorum

 
GN⁺ 2023-07-25
Hacker News görüşleri
  • Yazarın önerdiği şey, nihai çıktının softmax’ı değil, attention içindeki softmax paydasına 1 eklemek
    Attention softmax’ı, key/query eşleşmesini olasılık gibi göstererek key-value erişiminin 0/1 lookup yerine sürekli değerli ağırlıklarla yapılmasını sağlıyor
    Paydaya 1 eklenirse ağırlıkların toplamı 1’den küçük olur ve artık gerçek bir olasılık vektörü olmaz; ancak model yüksek ağırlıkları öğrenirse neredeyse bir olasılık vektörü gibi davranır, ayrıca tüm ağırlıkları düşük verip “hiçbir şeyden emin olmamayı” da seçebilir
    Gerçekte iyi olup olmadığını görmek için bu yöntemle bir LLM eğitmek gerekir. Yine de büyük bir fark yaratmayacak gibi görünüyor. Düşük güvenli attention düğümleri zaten softmax öncesi skorları birbirine yakın yaparak neredeyse uniform bir dağılım oluşturabilir; bu da birçok vektörün ortalaması olacağı için istatistiksel olarak 0’a yaklaşma ihtimalini artırır
    Ayrıca Transformer’da, V matrisi ve attention sonrası feed-forward katmanı gibi, opt-out davranışını uygulayabilecek öğrenilmiş ağırlıklar zaten bolca var. Yine de yazının akademik olmayan tonu ve temel fikri kurcalama tavrı hoş; tamamen ikna olmuş değilim ama böyle yazıları daha çok okumak isterim

    • Benim anladığım kadarıyla yazar, bu değişiklikle büyük değerlerin ortadan kalktığını ve Transformer çıktısının daha az bit ile kodlanabildiğini, dolayısıyla ağın bellek gereksiniminin azaldığını söylüyor
      Büyük modelleri çalıştırırken bellek darboğaz olduğu için, doğruysa bu oldukça önemli olur
    • Yazarın önerdiği kavramsal modeli daha çok beğendim
      Aslında bu fonksiyona ghostmax adını vermek istemiş olması gibi, x’e 0 değerli bir öğe daha eklenmiş gibi düşünülebilir ve exp(0)=1 olduğundan, V matrisinde de sonucu zayıflatan bir 0 vektörü varmış gibi görülebilir
      “Ağırlıkların toplamı 1’den küçük, yani bazen hiçbir şey seçmiyor” demektense, seçenek kümesi her değerlendirildiğinde hiçbir şey yapmama seçeneğinin de zorunlu olarak birlikte değerlendirildiğini söylemek daha iyi
      Bu, “elinde sadece çekiç varsa her şey çivi gibi görünür” ile “elinde sadece çekiç olsa bile çiviyi çakar, çivi olmayanı ise görmezden gelir” arasındaki fark gibi
      Örneğin bir konuşma-metin sistemi önce insanın dili seçmesini isteyip, sonra o dildeki sesi verince oldukça iyi bir transkripsiyon üretiyor ama 1. adımda dil seçimi yanlışsa saçma çıktı veriyor; bu rahatsız edici. Bir İngilizce transkripsiyon sistemi, Fransızca ses geldiğinde önce “bu İngilizce değil” diyebilse insana daha yakın olurdu
    • İyi olup olmadığını doğrulamak için aynı modelden iki tane büyük bir veri kümesi üzerinde eğitmek yeterli
      Birinde attention modülünün softmax paydasına +1 eklenir, diğerinde eklenmez. Performansın benzer olduğu gösterilmeli ve +1 kullanılan modelde taşmanın azalıp daha verimli quantize edilebildiği de gösterilmeli
    • “Güven düşükse softmax öncesi skorları birbirine yakın yapmak yeterlidir” fikrine katılmak zor
      Sinir ağlarının identity function’ı iyi modelleyememesi ve bu yüzden residual connection gerekmesi gibi, düşük entropili dönüşümleri örtük olarak öğrenmede de oldukça zayıf olduklarını düşünüyorum
      İfade gücünü artırmasa bile, gradyan inişiyle bulunması zor olan iğne-delik tipi bir dönüşümü modelin içine gömmenin etkisi olabilir. Gerçekte ne kadar faydalı olduğu ise belirsiz
    • Bu teknik yıllardır biliniyor ve PyTorch içinde de var
      Yaygın kullanılmamasının nedeni, insanların bunu denemiş olması ve pratikte pek iyi çalışmaması olabilir. Orijinal yazının buna “8 yıldan uzun süredir gözden kaçan bir bug” demesi clickbait’e yakın
  • Gözden kaçırdığım bir şey olabilir ama yorumların bunu neden bu kadar büyük mesele yaptığını pek anlayamıyorum. Bu numarayı gerçekten birkaç kez gördüm
    Örneğin eski bir Google deposunda da şu kod var: https://github.com/google/flaxformer/blob/ee62754ebe5a5eeb11...

    • Evet. Bunu birkaç yıl önce eski modellerimizden birinde de kullanmıştık. Ayrıntıları tam hatırlamıyorum ama pek etkisi yoktu gibi
      Kararlılığa hiç yardımcı olacağını sanmıyorum. Ölçeği büyütürken softmax kararlılığı için Q/K layernorm gibi numaralar daha iyi: https://arxiv.org/pdf/2302.05442.pdf
    • Popüler modeller hâlâ bu hatayı yapıyorsa yine de dikkat çekmeye değer
      Farkındalık yaratmak için blog yazısı ya da makale yazmak kesinlikle değerli olabilir. İyi fikirlerin birbirinden bağımsız olarak birden fazla kez keşfedilmesi de yaygın bir durum
    • Asıl mesele, insanların bunu quantization, yani int8 / GGML / GPTQ yöntemlerinde deneyip denemediği
      Daha büyük paydanın dağılımı düzleştirmesinin daha iyi quantization davranışına yol açıp açmadığını, +1 eklenen ve eklenmeyen durumu doğrudan karşılaştırmadan bilemeyiz. Orijinal yazı bu faydanın büyük olabileceğini düşünüyor
    • Gerekçelendirme biraz şüpheli
      Teknik olarak softmax, verilen formülle değil exp(x_i-max(x)) şeklinde uygulanır ve paydada toplanan da bu değerlerdir. Gözden kaçırdığım bir şey olabilir
      Ayrıca residual connection, ağın identity function’ı öğrenememesi nedeniyle kullanılır ama 0’ı öğrenebilir. Dolayısıyla f(x): x+g(x) için g:x ~> 0, yani yaklaşık 0 olması yeterlidir
      f(x): x+g(x) aynı zamanda gradyanın akmasını da kolaylaştırır
  • “Keşfedilen” bu numara, PyTorch multi-head attention standart uygulamasının bir parçası ve adı add_zero_attention
    Logit’lere 0 eklediği için e^0=1 olur ve paydada 1 oluşur: https://pytorch.org/docs/stable/generated/torch.nn.Multihead...

    • Dokümantasyon oldukça zayıf. Sadece “belirtilirse dim=1’de key ve value dizilerine yeni bir 0 batch’i ekler” gibi bir şey yazıyor
      Anlamını çok kısa da olsa açıklamıyor. Az önce yazdığım ikinci cümle eklense bile çok daha faydalı olurdu
    • Varsayılanı false olan bir seçenek. Bu durumda insanlar bunu zaten denedi ve genelde yardımcı olmuyor mu demek?
    • İyi yakalamışsın. Keşke orijinal yazının yazarı da görse
    • https://en.wikipedia.org/wiki/Multiple_discovery
  • Yapay zeka ya da bu algoritma hakkında değil ama, bazen küçük bir hataya ne kadar hata deseniz de bunun bir hata olduğuna kimseyi ikna edemiyorsunuz
    2011'de kendi projemde reddit sıralama algoritmasını kopyalamaya çalışırken kaynak koda baktım ve negatif toplam oylu gönderiler için tamamen anlamsız davranıyordu
    Basit bir formülde terimler yer değiştirmiş gibiydi ve pozitif/negatif işaret yanlış uygulanmıştı. Bunun üzerine blogda yazdım ve reddit'te paylaştım; reddit çalışanları dahil birçok kişi tamamen yanlış olduğumu ve algoritmanın amaçlandığı gibi çalıştığını söyledi
    Daha önce de aynı noktayı fark edip dile getirenler olduğu ama onların da yanıldıklarının söylendiği belirtilmişti
    Sonunda blog yazısını, “benden daha zeki insanlar reddit algoritmasında hata olmadığını söyledi; sadece benim varyasyonum bana daha mantıklı geliyor” şeklinde düzelttim
    Ama sonra 3 yıl sonra, 2014'te reddit kaynak koduna benim ve benden önce başkalarının sürekli önerdiği düzeltmenin aynısı commit edildi: https://github.com/reddit-archive/reddit/commit/50d35de04b92...
    Açık kaynak, çok sayıda gözün hataları bulabilmesini sağlar ama bazen bir hatayı bulduğunuzda buna kimseyi ikna edemezsiniz. Tabii reddit 2017'de kodu kapattı
    Sonunda kendi uygulamama başta kopyalamak istediğim sıralama özelliğini de, oy özelliğini de eklemedim

    • 2008 civarında Yahoo'da stajyerken şirket içi OAuth 1.0 URL oluşturma aracını yaparken benzer bir şey yaşadım
      Sorgu parametrelerine çok sayıda değer encode etmek gerekiyordu ve belirli parametrelerin fiilen iki kez encode edilmesi gerekiyordu; benim aracım da bunu böyle yapıyordu. Ama implementasyon mühendisi aracımın yanlış olduğunu iddia etti, stajyer olmamı öne sürdü ve hatta OAuth spesifikasyonunu açıp kendi implementasyonunun doğru, benimse yanlış okuduğumu gösterecek şekilde zorlayarak yorumladı
      Sonunda Eran Hammer-Lahav çağrılıp doğrulatılınca haklı olduğum ortaya çıktı ve mühendis ancak o zaman bunun zaten doğru olduğunu kabul etti. Günler süren kişisel saldırılar içinse hiçbir kabul ya da özür gelmedi
      Buradan, daha kıdemli olmanın her zaman haklı olmak anlamına gelmediği gibi önemli bir ders çıkardım; şimdi çoğu zaman daha kıdemli tarafta olan benim ama bunu her gün hatırlamaya çalışıyorum
    • FAANG'de çalışıyorum ve bunun ne kadar sık yaşandığını görünce gerçekten şaşırdım
      Sadece “kod tabanının her yerine log koyup adım adım akıl yürüten kişi” olsanız bile uzun ve etkili bir kariyer kurabilirsiniz. Bunu çok temel düzeyde yaptığımda bile uzun süredir duran sorunlara şaşırtıcı düzeltmeler çıktığını sık sık gördüm
      Tabii beraberinde bolca politik eğlence de geliyor. İnsanların ilk tepkisi inkâr oluyor, sonrasıysa daha da kötü. “Aa, bunu düzeltmek yeterli” diye bakan yalnızca 1-2 kişi oluyor; bir başkası ise “eşzamanlılık/bellek yönetimi/vesaire konusunda yeterince kaygı gösterilmemiş” demeyi süsleyip patronun patronunun patronunu bile CC'ye koyarak e-posta atıyor
      Böyle durumlarda sessizce beklemek, karşılık vermemek ve şikâyet etmemek daha iyi. Hiçbir şey olmuyorsa ve liderlik sormuyorken ekip arkadaşları sorgulamaya başlıyorsa başka bir takıma geçme planı yapmak daha iyidir
    • Koda az önce baktım; bariz biçimde yanlış. Gerçekten çok sinir bozucu olmuştur
    • Son birkaç ayı düşününce reddit çalışanlarıyla etkileşimlerin o şekilde gelişmesine şaşırmadım
  • Aykırı özellikler ve quantization hakkında ilginç bir tartışma var: https://timdettmers.com/2022/08/17/llm-int8-and-emergent-fea...
    Aykırı değerler, değerleri budamak için kullanılıyor ve Transformer'lar yaklaşık 6,7 milyar parametre civarında aykırı özellikleri ele alış biçiminde bir “faz geçişi” yaşıyor gibi görünüyor. Bu da ablasyon çalışmalarını karmaşıklaştırabilir
    Tim Dettmers ile konuşulacak çok şey var gibi görünüyor

  • Yazar gerçek sorunu işaret ediyor ve basit bir çözüm öneriyor. Benim tuhaflık tespit ölçütlerimin hepsini geçiyor.
    “Neden kimse bunu düşünmedi?” sorusuna dair, yazarın makine öğrenimi dışındaki çalışmalarda softmax fonksiyonuna çok aşina olması ve bu sorunu inceleyen kişilerin meseleyi “softmax ile ilgili bir şey”e kadar daraltsalar bile softmax’ın kendisini yeterince derinlemesine anlamamış olabilecekleri açıklaması kulağa makul geliyor.
    Yine de asıl yazının yazarı bu yorumu görürse, “aykırı değer geri besleme döngüsünü %99,44 olasılıkla çözeceği” iddiasını biraz daha açması iyi olur. Şu anda aykırı değerlerin softmax ile nasıl ilişkili olabileceğine dair tek açıklama o cümle.

    • Meğerse biri bunu zaten düşünmüş. Daha doğrusu Google düşünmüş ve bu fikir en azından Kasım 2021’den beri flaxformer içinde varmış.
      https://github.com/google/flaxformer/blame/ee62754ebe5a5eeb1...
      Yorumda şöyle yazıyor: “0 gibi ek bir sanal logit içeren softmax fonksiyonu. Daha önce eğitilmiş bazı modellerle uyumluluk için. Bu, paydaya 1 eklemekle aynıdır. Attention bağlamında, hiçbir şeye bakmamayı sağlar.”
      Bu yazıdakiyle tamamen aynı değiştirilmiş softmax’ı üretiyor. Neden kamusal olarak görmezden gelindiğini zaman gösterecek. Etkisi zayıf kalmış olabilir, basitçe gözden kaçmış olabilir ya da Google bunu öne çıkarmamış olabilir.
    • En önemli doğrulama eksik: sonuçlar.
      Gerçekte denenmemiş, sadece işe yarayacağı düşünülmüş. Softmax’ta böylesine basit bir değişikliğin doğrulanması uzun sürmezdi; yayımlamadan önce denenmemiş olması oldukça utanç verici.
    • “Neden kimse bunu düşünmedi? Çünkü yazar makine öğreniminin dışında softmax’ı derinlemesine biliyordu” açıklaması şüpheli.
      Softmax, makine öğrenimi topluluğu içinde çok iyi anlaşılmış durumda. Son derece yaygın bir numara ve bu tür özellikler de iyi biliniyor. Kimsenin bunu düşünmemiş olması pek olası görünmüyor.
      Yine de mevcut softmax geleneği tesadüfen seçilmiş olabilir ve yazar da onun dezavantajını gerçekten doğru tespit etmiş olabilir.
    • Sorunun etkisi ince olabilir.
      Teşhis doğru olsa bile, tam hassasiyetli LLM’ler anlamsız token’lara büyük attention ağırlıkları vererek ve böylece zararsız attention çıktıları üreterek bu sorundan kaçınabilir.
      Bu sorun yalnızca ağırlıklar quantize edildiğinde önemli olabilir ve son dönemde en ileri LLM geliştirme çalışmalarının hedefi mutlaka quantization performansı değil.
    • “%99,44 emin” ifadesini, softmax’ın iyi kalibre edilmemiş olasılıkları üzerine bir şaka olarak okudum.
      Softmax sanki %99,9 emin ya da %0,1 emin olmayı iyi beceriyor ama aradaki seviyelerde pek iyi değil gibi.
  • HN’de akademiden şikâyet etmek moda biliyorum ama bu blog yazısı iyi bir argümantasyon yapmıyor.
    Temel fikri toplam uzunluğun dörtte birinde, hatta muhtemelen sekizde birinden azında bile aktarabilirdi; ama bunu gayriresmî ifadeler ve akademik yayımlara yönelik üstü ince örtülmüş yakınmalarla sarmış.
    Sonuç olarak burada da tartışma yazının sonucu ya da fikri hakkında değil, akademik yayıncılık vs blog, resmî yazım vs gayriresmî yazım hakkında 200 yoruma dönüyor.
    HN ana sayfasına blog yazısı çıkarmak istiyorsanız iyi bir üslup olabilir. Ama insanların fikrin artılarını ve eksilerini inceleyip tartışmasını istiyorsanız pek değil.

    • Sonunda bizi dikkat ekonomisine götüren temel neden de bu zaten.
      İnsanların her şeye ayırabileceği dikkat sınırlı, ama dikkat çekme kapasitesi ve ihtiyacı sınırsız. Michael Goldhaber’in söylediği de buydu.
      Bu da bilgi patlamasının tohumunu atıyor. Yumurta haşlama hakkında 6 milyar video ya da bisiklet barınağı tarzı 200 yorum gibi şeyler.
      Bunu engellemek için Google, Facebook, HN gibi yerlerde yorumları, bağlantıları ve haber akışlarını sıralıyoruz; ama sıralanan havuzun büyük kısmı saçmalık olduğundan, sadece üstüne başka bir saçmalık katmanı daha eklenmiş oluyor.
      Goldhaber’in 30-40 yıl önce dikkat hakkında söylediklerini yansıtan bilgi sistemlerini hâlâ tasarlayabilmiş değiliz.
    • “HN ana sayfasına çıkıyor” diye küçümsüyorsunuz ama bunu “gayriresmî olarak gözlenen bir şeyi tartışıyor” diye yeniden ifade ederseniz, o küçümseme gücünü kaybediyor.
      Amaç hem bilgi vermek hem de eğlendirmek olabilir. Birçok insan ana noktanın etrafındaki gevşek tartışmayı seviyor ve yazar da akademik makalelerin klinik ve resmî tonuna bunu tercih ediyor olabilir.
    • Bu arada biri, PyTorch’un Multihead Attention API’sinde bu soruna yönelik seçmeli bir geçici çözüm bulunduğunu işaret etti.
      Yine de biraz sinir bozucu biçimde, bunu görmek için konudan sapmış 200 şikâyet yorumunu geçmek gerekti.
  • Benzer bir deney yaptım ve benim kurulumumda fayda etmedi.
    Hata benzeri bir şey olmadığından emin değilim ama mevcut konuma attention vermek bu sorunu bir ölçüde çözüyor gibi görünüyor. Konuşmaması gereken yerde, sadece mevcut konumun değerini çıkış olarak veriyor gibi.
    Tam olarak, softmax paydasına 1 eklemek yerine QK’nin önüne öğrenilmiş bir parametre olan bir attention sink ekledim ve sonra softmax’tan sonra bunu kaldırdım; böylece V ile çarpılırken toplam 1 olmuyordu.
    Mevcut konuma bakan ve bakmayan varyantları, ayrıca sink’i öğrenilmiş bir parametre yerine her konum için bir feedforward ağ ile üreten varyantı da denedim. Benim kurulumumda ikisi de büyük fark yaratmadı ama işin içinde başka tuhaf unsurlar da çoktu, dolayısıyla yeniden denemeye değer olabilir.

    • Fayda etmedi derken neyi ölçtüğünü merak ediyorum.
      Bu yazının bağlamında hem görev performansı hem de aykırı değer ağırlıklarının sayısı ve büyüklüğü önemli görünüyor.
    • O bunu sivrilen aykırı değerleri düzeltiyor diye tanıtıyor. Senin varyantlarında zaten böyle aykırı değerler var mıydı?
  • Sonuç görünmüyor. Teoriyi destekleyen sayılar olsaydı çok daha güçlü ve ikna edici olurdu.
    Küçük bir veriyle mevcut bir dil modelini ince ayar yapıp çalışıp çalışmadığını kontrol etmek o kadar da zor değil.
    Yine de daha iyi bir attention formülü olabileceği konusunda benzer düşünüyorum. 2020 tarihli şu makale https://arxiv.org/abs/2005.09561 benim eğittiğim bir Transformer modelinde çok faydalı olmuştu. Genel amaçlı bir dil modeli değildi; özel bir çok kipli grafik problemiydi.
    Bu makale normalize edilmiş attention öneriyor; yanlış hatırlamıyorsam quantization sorunlarına da yardımcı olabilir.

  • Bu yöntem, dummy token yaygınlaşmadan önce sık kullanılıyordu. Bu fikri ilk kez XLNet makalesinde görmüştüm
    PyTorch'ta bunun 2019/2020'den beri olduğunu biliyorum; muhtemelen daha eski referansları da biri bulabilir
    Asıl yazının abartılı tavrına şaşırdım. Özellikle de Transformer araştırmacılarının çoğunun anladığı bir konu söz konusuysa daha da öyle. Yanıtlarda “araştırma böyle yapılmalı” yaklaşımının çok olmasına da şaşırdım. Bu, daha çok araştırmanın neden böyle işlemediğini gösteren bir örnek ve hakem değerlendirmesi birçok açıdan iyidir; bunlardan biri de kişinin kendini rezil etme ihtimalini azaltmasıdır

    • O kibirli değil. İnsanlar gayriresmî, doğrudan ve kendini küçümseyen tonu seviyor; bu da kibirliliğin tam tersidir
      Muğlak öz küçümsemeyi gerçek bir iddia gibi okuyor gibiler
      Bunun neden önemli görülüp paylaşıldığını özetlemek gerekirse, bu, kısıtlı donanımda ChatGPT'nin soluk bir taklidini çalıştırmaya uğraşırken ancak önem kazanan epey niş bir mesele. Dolayısıyla büyük araştırma ekiplerinin bunu önemli görmemiş olması gayet mümkün. Sonuçta onlar 3090'da LLM çalıştırmaya uğraşmıyor
    • “Kibirli” değerlendirmesi tuhaf
      Yazı konuşma diliyle, kendini küçümseyen ve mizahi bir tonda yazılmış. Artıları eksileri nedir bilmiyorum ama akıl yürütmeyi baştan sona takip edebildim. Kibirle alakası yok
      “Kişinin kendini rezil etme ihtimalini azaltır” sözü, yanlışsa ya da ilk keşif değilse bunun utanç verici olduğu varsayımını içeriyor. Asıl kibirli olan bu değil mi?