1 poin oleh GN⁺ 2023-07-25 | 1 komentar | Bagikan ke WhatsApp
  • Attention softmax di dalam Transformer membuat head tidak bisa memilih untuk “tidak melakukan apa-apa”, sehingga dapat menyulitkan kuantisasi dan deployment dengan memori rendah
  • Petunjuk masalahnya adalah weight/activation outlier yang muncul di LLM, dan makalah Qualcomm AI Research menganalisis bahwa lebih dari 97% activation outlier berasal dari posisi spasi dan tanda baca
  • Softmax konvensional memberi bobot 1/k pada setiap item meski semua input sangat negatif, tetapi softmax_1 menambahkan 1 pada penyebut sehingga output attention bisa mendekati 0
  • softmax_1 mempertahankan rasio relatif sambil membatasi jumlahnya antara 0 dan 1, dan berkat turunan positifnya juga menyisakan gradient non-zero
  • Perubahan ini bukan patch yang bisa langsung ditempelkan ke model yang sudah ada, melainkan membutuhkan pelatihan ulang; pada model seperti LLaMA, cara zero prefix token mungkin memungkinkan eksperimen cepat

Outlier yang Menyulitkan Kuantisasi

  • Pada model Transformer muncul weight dan activation yang beberapa orde magnitudo lebih besar daripada nilai lain, dan nilai-nilai ini tampaknya penting bagi perilaku model
  • Outlier semacam ini menyebabkan penurunan performa pada kuantisasi integer scale-and-bias yang umum, sehingga menyulitkan menjalankan model besar di lingkungan dengan RAM terbatas seperti Mac Mini atau Raspberry Pi
  • Mengurangi penggunaan RAM membuka ruang untuk menangani model yang lebih besar atau lebih banyak fitur, baik di cloud maupun edge
  • Quantizable Transformers: Removing Outliers by Helping Attention Heads Do Nothing dari Qualcomm AI Research mengaitkan nilai outlier dengan softmax dalam mekanisme attention
    • Mereka menganalisis bahwa lebih dari 97% activation outlier pada LLM terjadi di posisi whitespace dan punctuation
    • Clipped softmax memiliki masalah zero gradient, sementara gated attention menambahkan jutaan parameter baru

Peran softmax dalam Transformer

  • Embedding input Transformer adalah vektor floating-point yang merepresentasikan kata
    • LLaMA 2 dari Meta menggunakan panjang embedding vector 3.204, dan untuk merepresentasikan satu kata dalam half-precision dibutuhkan lebih dari 6 KB
    • Vocabulary biasanya memiliki 30.000–50.000 item
  • Transformer mengubah vektor input menjadi vektor output berukuran sama, dan vektor output akhir digunakan untuk memprediksi token yang akan muncul setelah token saat ini
  • Residual connection bekerja dengan cara attention menambahkan informasi konteks ke informasi kata semula
    • Misalnya, menambahkan informasi konteks untuk membedakan apakah pupil berarti murid atau pupil mata
  • Pada tahap terakhir, vektor output diubah menjadi vektor sepanjang vocabulary lalu diterapkan softmax agar diperlakukan seperti probabilitas token berikutnya
    • Implementasi nyata menggunakan sampling mechanism alih-alih mempercayai probabilitas output softmax begitu saja
    • Softmax pada tahap output dianggap pilihan yang masuk akal karena berperan memberi gradient ke seluruh vocabulary

Keterbatasan softmax attention internal

  • Rumus inti attention internal adalah sebagai berikut

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

  • Pada decoder-only model, (Q), (K), dan (V) bermula dari urutan input yang sama, tetapi diproyeksikan dengan cara berbeda
  • (QK^T) mencari korelasi antar token embedding vector, lalu softmax diterapkan pada setiap baris untuk digunakan sebagai bobot yang mencampur value vector dalam matrix (V)
  • Multi-head attention menjalankan proses ini secara paralel pada beberapa head di setiap layer
    • Embedding vector dibagi menjadi beberapa segment, dan setiap head menambahkan informasi ke satu segment dari output vector
  • Masalahnya, softmax memaksa setiap attention head untuk selalu membuat anotasi
    • Meski head tidak memiliki informasi untuk ditambahkan, softmax tetap membuat pilihan
    • Semakin terspesialisasi sebuah head, semakin besar kemungkinan ia membutuhkan “pass”, tetapi softmax konvensional tidak menyediakan abstention

Usulan: softmax_1 dan QuietAttention

  • Perubahan yang diusulkan adalah menambahkan 1 pada penyebut softmax

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

  • Softmax konvensional, ketika semua nilai (x) menjadi sangat negatif, membuat setiap item konvergen ke (1/k)

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

  • softmax_1 pada kondisi yang sama membuat setiap item konvergen ke 0

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

  • Berkat perbedaan ini, attention head dapat memilih untuk tidak menambahkan informasi
  • Rumus attention yang diusulkan adalah sebagai berikut

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

Sifat softmax_1 dan kondisi eksperimen

  • softmax_1 sedikit mengecilkan keseluruhan nilai, tetapi karena ada normalization setelah attention, penyusutan itu dapat dikompensasi
  • Rasio relatif vektor output sama dengan softmax konvensional

[ \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 ]

  • Turunannya positif sehingga mempertahankan gradient non-zero, dan jumlahnya berada antara 0 dan 1 sehingga output tidak keluar dari rentang terkendali
  • Masalah ini diperlakukan sebagai masalah matematis, bukan numerical precision, dan tidak dapat diselesaikan hanya dengan extra precision
  • Ide eksperimennya adalah menambahkan zero vector di depan semua input context dan memastikan tidak ada bias yang ditambahkan, termasuk pada positional encoding
    • Jika zero lewat apa adanya, efeknya sama seperti menambahkan 1 pada setiap softmax denominator berikutnya
    • Ini mungkin dapat dilakukan pada model LLaMA yang menggunakan fixed embedding dan special prefix token
  • Ini bukan eksperimen yang dapat langsung diterapkan pada model yang sudah ada, dan model membutuhkan pelatihan ulang
  • Nilai yang ingin diperiksa adalah perubahan pada weight kurtosis dan activation infinity norm

1 komentar

 
GN⁺ 2023-07-25
Pendapat Hacker News
  • Yang diusulkan penulis bukan menambahkan sesuatu pada softmax keluaran akhir, melainkan menambahkan 1 ke penyebut softmax di dalam attention
    Softmax pada attention membuat pencocokan key/query terlihat seperti probabilitas, sehingga lookup key-value dilakukan dengan bobot bernilai kontinu alih-alih pencarian 0/1
    Jika 1 ditambahkan ke penyebut, jumlah bobot menjadi kurang dari 1 sehingga itu bukan lagi vektor probabilitas yang sebenarnya, tetapi jika model mempelajari bobot tinggi maka perilakunya tetap hampir seperti vektor probabilitas, dan model juga bisa memilih untuk “tidak yakin pada apa pun” dengan menghasilkan semua bobot rendah
    Apakah ini benar-benar bagus hanya bisa diketahui dengan melatih LLM memakai cara ini. Namun tampaknya perbedaannya tidak akan besar. Node attention dengan keyakinan rendah sudah bisa membuat skor pra-softmax menjadi mirip satu sama lain sehingga menghasilkan distribusi yang hampir seragam, dan itu kemungkinan besar akan menjadi rata-rata beberapa vektor yang secara statistik mendekati 0
    Selain itu, Transformer sudah memiliki banyak bobot terlatih yang dapat mengimplementasikan opt-out, seperti matriks V dan lapisan feedforward setelah attention. Meski begitu, saya suka nada tulisan yang tidak terlalu akademis dan sikapnya yang mau mengutak-atik ide dasar; saya belum sepenuhnya yakin, tetapi saya ingin membaca lebih banyak tulisan seperti ini

    • Menurut pemahaman saya, penulis tampaknya mengatakan bahwa perubahan ini membuat nilai-nilai besar menghilang, sehingga keluaran Transformer bisa dikodekan dengan bit yang lebih sedikit dan kebutuhan memori jaringan berkurang
      Pada inferensi model besar, memori adalah bottleneck, jadi kalau benar ini cukup signifikan
    • Saya lebih menyukai model konseptual yang diajukan penulis
      Seperti bagian yang menyebut awalnya fungsi ini ingin dinamai ghostmax, anggap saja ada satu entri tambahan bernilai 0 pada x dan karena exp(0)=1, ada juga vektor 0 pada matriks V yang melemahkan hasil
      Daripada menganggapnya sebagai “jumlah bobot kurang dari 1 sehingga kadang tidak memilih apa pun”, lebih baik melihatnya sebagai pemaksaan untuk selalu ikut mempertimbangkan opsi tidak melakukan apa pun setiap kali himpunan pilihan dipertimbangkan
      Ini seperti perbedaan antara “kalau yang ada hanya palu, semuanya terlihat seperti paku” dan “meski yang ada hanya palu, kita tetap memukul paku dan mengabaikan yang bukan paku”
      Misalnya, pada sistem suara-ke-teks, jika manusia lebih dulu menentukan bahasanya lalu memberi audio dalam bahasa itu, sistem bisa menghasilkan transkripsi yang lumayan baik, tetapi kalau pemilihan bahasa pada tahap pertama salah maka hasilnya jadi ngawur. Jika ini adalah transcriber bahasa Inggris, saat menerima audio bahasa Prancis seharusnya ia lebih dulu mengatakan “ini bukan bahasa Inggris” agar lebih mirip cara manusia
    • Untuk mengecek apakah ini bagus, cukup latih dua model yang sama pada dataset besar
      Satu dengan +1 pada penyebut softmax modul attention, satu lagi tanpa itu. Harus ditunjukkan bahwa performanya serupa, dan bahwa pada model +1 ledakan nilainya berkurang sehingga bisa dikuantisasi dengan lebih efektif
    • Saya sulit setuju dengan argumen “kalau keyakinannya rendah, cukup buat skor pra-softmax menjadi mirip”
      Seperti halnya jaringan saraf tidak pandai memodelkan fungsi identitas sehingga perlu residual connection, saya rasa jaringan juga cukup lemah dalam secara implisit mempelajari transformasi entropi rendah
      Walaupun tidak menambah daya ekspresif, ini bisa jadi seperti membenamkan transformasi mirip mencari jarum dalam tumpukan jerami yang sulit dicapai dengan gradient descent ke dalam model. Saya tidak tahu seberapa bergunanya ini dalam praktik
    • Teknik ini sudah dikenal sejak beberapa tahun lalu dan bahkan ada di PyTorch
      Alasan teknik ini tidak dipakai luas adalah karena orang-orang sudah mencobanya dan dalam praktiknya ternyata tidak bekerja terlalu baik. Menyebutnya sebagai “bug yang terabaikan selama lebih dari 8 tahun” di tulisan asli terasa lebih seperti clickbait
  • Mungkin saya melewatkan sesuatu, tetapi saya tidak paham kenapa komentar-komentar ini menganggapnya sebagai hal besar. Saya sudah beberapa kali melihat trik ini
    Misalnya, ada kode seperti ini juga di repositori Google yang lama: https://github.com/google/flaxformer/blob/ee62754ebe5a5eeb11...

    • Betul. Kami juga memakainya pada model lama kami beberapa tahun lalu. Saya tidak ingat persis detailnya, tetapi sepertinya efeknya tidak besar
      Saya rasa ini sama sekali tidak akan membantu stabilitas. Untuk stabilitas softmax saat skala diperbesar, trik seperti Q/K layernorm lebih baik: https://arxiv.org/pdf/2302.05442.pdf
    • Jika model-model populer masih melakukan kesalahan ini, tetap layak diperhatikan
      Menulis blog post atau paper untuk meningkatkan kesadaran juga cukup bernilai. Ide bagus yang ditemukan secara independen beberapa kali juga hal yang umum
    • Intinya adalah apakah orang sudah mencoba ini untuk kuantisasi, yaitu pendekatan int8 / GGML / GPTQ
      Apakah distribusi yang lebih rata karena penyebut yang lebih besar benar-benar menghasilkan perilaku kuantisasi yang lebih baik hanya bisa diketahui dengan membandingkan langsung kasus dengan +1 dan tanpa +1. Tulisan asli beranggapan manfaat ini bisa besar
    • Argumennya agak meragukan
      Secara teknis, softmax diimplementasikan bukan persis seperti rumus yang ditampilkan, melainkan sebagai exp(x_i-max(x)), lalu nilai-nilai itu dijumlahkan di penyebut. Mungkin saya melewatkan sesuatu
      Selain itu, residual connection dipakai karena jaringan tidak bisa mempelajari fungsi identitas dengan baik, tetapi 0 bisa dipelajari. Jadi pada f(x): x+g(x), cukup jika g:x ~> 0, yaitu menjadi hampir 0
      f(x): x+g(x) juga mempermudah aliran gradien
  • Trik yang “ditemukan” ini adalah bagian dari implementasi standar PyTorch multi-head attention, dengan nama add_zero_attention
    Ia menambahkan 0 pada logit sehingga e^0=1 dan muncul angka 1 di penyebut: https://pytorch.org/docs/stable/generated/torch.nn.Multihead...

    • Dokumentasinya kurang bagus. Hanya tertulis semacam “jika ditentukan, tambahkan batch baru berisi 0 ke sequence key dan value pada dim=1”
      Tidak ada penjelasan singkat tentang maknanya. Kalau kalimat kedua yang barusan saya tulis ditambahkan saja, itu akan jauh lebih berguna
    • Ini opsi dengan nilai default false. Berarti orang-orang memang sudah mencobanya dan biasanya tidak terlalu membantu?
    • Tangkapan yang bagus. Semoga penulis tulisan asli melihatnya
    • https://en.wikipedia.org/wiki/Multiple_discovery
  • Ini bukan soal AI atau algoritma ini, tetapi ada kalanya kesalahan kecil tidak bisa diyakinkan sebagai kesalahan meski sudah dijelaskan berkali-kali
    Pada 2011, ketika saya mencoba menyalin algoritma peringkat reddit untuk proyek saya, saya melihat kode sumbernya dan perilakunya sama sekali tidak masuk akal untuk posting dengan total suara negatif
    Saya menilai ada suku yang tertukar dalam rumus sederhana itu dan tanda positif/negatif diterapkan dengan keliru. Jadi saya menulisnya di blog dan mempostingnya ke reddit, tetapi banyak orang termasuk karyawan reddit mengatakan saya sepenuhnya salah dan algoritma itu bekerja sesuai yang dimaksudkan
    Ada juga yang mengatakan bahwa sebelumnya ada orang lain yang menyadari dan menunjuk hal yang sama, tetapi semuanya diberi tahu bahwa mereka salah
    Pada akhirnya saya merevisi tulisan blog itu menjadi “orang-orang yang lebih pintar daripada saya mengatakan tidak ada bug pada algoritma reddit, hanya saja modifikasi saya terasa lebih masuk akal bagi saya”
    Namun tiga tahun kemudian, pada 2014, tepat perbaikan yang saya dan orang-orang sebelum saya terus usulkan di-commit ke kode sumber reddit: https://github.com/reddit-archive/reddit/commit/50d35de04b92...
    Open source memungkinkan banyak mata menemukan bug, tetapi terkadang meski bug sudah ditemukan, tidak ada seorang pun yang bisa diyakinkan. Tentu saja reddit menutup kodenya pada 2017
    Pada akhirnya saya tidak memasukkan fitur peringkat yang tadinya ingin saya salin, maupun fitur voting, ke dalam aplikasi saya

    • Saya mengalami hal serupa sekitar 2008 saat magang di Yahoo dan membuat alat internal untuk menghasilkan OAuth 1.0 URL
      Saya harus meng-encode banyak nilai ke parameter kueri, dan parameter tertentu pada praktiknya harus di-encode dua kali, jadi alat saya juga melakukannya begitu. Namun engineer implementasinya bersikeras alat saya salah, menyinggung status saya sebagai intern, bahkan membawa spesifikasi OAuth lalu memaksakan tafsir bahwa implementasinya benar dan saya salah membacanya
      Pada akhirnya baru dipastikan bahwa saya benar setelah Eran Hammer-Lahav dipanggil untuk mengeceknya, dan barulah engineer itu mengakui bahwa tentu saja memang begitu yang benar. Tidak ada pengakuan atau permintaan maaf sama sekali atas serangan pribadi selama beberapa hari itu
      Saya mendapat pelajaran penting bahwa yang lebih senior tidak selalu benar, dan sekarang biasanya justru saya yang berada di posisi lebih senior, tetapi saya berusaha mengingat hal itu setiap hari
    • Saya bekerja di FAANG, dan saya benar-benar terkejut mengetahui betapa seringnya hal seperti ini terjadi
      Menjadi “orang yang menaruh log di seluruh codebase lalu menalar pelan-pelan” saja sudah cukup untuk membangun karier yang panjang dan berpengaruh. Bahkan pada tingkat yang sangat sederhana pun, saya sering melihat perbaikan mengejutkan untuk masalah lama
      Hanya saja ada banyak drama politik yang menyertainya. Reaksi pertama orang biasanya penolakan, lalu sesudah itu malah memburuk. Hanya satu-dua orang yang melihatnya sebagai “oh, ya sudah kita perbaiki saja”, sementara ada juga yang mengirim email dengan menyalin atasan dari atasannya atasan, sambil membungkus kalimat seperti “kurang mempertimbangkan konkurensi/manajemen memori/dan lain-lain” dengan kata-kata yang lebih halus
      Dalam situasi seperti itu, lebih baik diam dan menunggu, tidak melawan atau mengeluh. Jika tidak terjadi apa-apa dan kepemimpinan pun tidak bertanya, tetapi rekan kerja mulai bertanya, lebih baik mulai merencanakan pindah ke tim lain
    • Saya baru saja melihat kodenya dan itu memang jelas sekali salah. Pasti sangat membuat frustrasi
    • Mengingat beberapa bulan terakhir, saya tidak heran interaksi dengan karyawan reddit berjalan seperti itu
  • Ada diskusi menarik tentang fitur outlier dan kuantisasi: https://timdettmers.com/2022/08/17/llm-int8-and-emergent-fea...
    Nilai outlier digunakan untuk memangkas nilai, dan Transformer tampaknya mengalami “transisi fase” dalam cara menangani fitur outlier di sekitar 6,7 miliar parameter. Ini bisa membuat studi ablasi menjadi lebih rumit
    Sepertinya akan ada banyak hal untuk dibicarakan dengan Tim Dettmers

  • Penulis mengangkat masalah yang nyata dan menawarkan solusi sederhana. Semua lolos kriteria “orang nyeleneh” versiku.
    Untuk pertanyaan “kenapa tidak ada yang memikirkan ini?”, penjelasan bahwa penulis sangat familier dengan fungsi softmax dari pekerjaan di luar machine learning, sementara orang-orang yang menyelidiki masalah ini mungkin sudah mempersempitnya menjadi “sesuatu yang terkait softmax” tetapi tidak cukup memahami softmax itu sendiri secara mendalam, terdengar masuk akal.
    Namun, jika penulis postingan asli melihat komentar ini, akan bagus kalau ia menjelaskan lebih lanjut klaim bahwa ini “akan menyelesaikan loop umpan balik outlier dengan probabilitas 99,44%”. Saat ini, satu-satunya penjelasan tentang bagaimana outlier bisa terkait dengan softmax hanyalah kalimat itu

    • Ternyata seseorang memang sudah memikirkannya. Tepatnya Google, dan ide ini setidaknya sudah ada di flaxformer sejak November 2021.
      https://github.com/google/flaxformer/blame/ee62754ebe5a5eeb1...
      Komentarnya berbunyi, “Fungsi softmax dengan logit virtual tambahan seperti 0. Untuk kompatibilitas dengan beberapa model yang telah dilatih sebelumnya. Ini setara dengan menambahkan 1 ke penyebut. Dalam konteks attention, ini memungkinkan untuk tidak melihat apa pun.”
      Ini membuat softmax termodifikasi yang persis sama dengan di tulisan tersebut. Waktu yang akan menjawab kenapa ini diabaikan di ruang publik. Bisa jadi efeknya kecil, bisa juga sekadar tenggelam, atau Google memang tidak mendorongnya
    • Verifikasi yang paling penting tidak ada. Yaitu hasil.
      Ini bukan sesuatu yang benar-benar dicoba, hanya sesuatu yang diperkirakan akan berhasil. Perubahan sesederhana ini pada softmax seharusnya tidak butuh waktu lama untuk divalidasi, jadi cukup memalukan kalau belum dicoba sebelum dipublikasikan
    • Penjelasan “kenapa tidak ada yang memikirkannya? Karena penulis sangat mendalami softmax dari luar machine learning” terasa meragukan.
      Softmax sangat dipahami dengan baik di komunitas machine learning. Ini trik yang sangat umum, dan sifat-sifat seperti ini juga sudah dikenal luas. Kemungkinan bahwa tidak ada yang memikirkannya tampak rendah.
      Meski begitu, bisa saja konvensi softmax saat ini dipilih secara kebetulan, dan penulis memang berhasil menunjukkan kekurangannya dengan tepat
    • Mungkin juga karena efek masalahnya halus.
      Bahkan jika diagnosisnya benar, LLM presisi penuh bisa menghindari masalah ini dengan memberi bobot attention besar pada token yang tidak bermakna, sehingga menghasilkan keluaran attention yang tidak berbahaya.
      Masalah ini mungkin hanya penting saat bobot dikuantisasi, dan tujuan pengembangan LLM mutakhir belakangan ini belum tentu performa kuantisasi
    • Aku membaca “kepastian 99,44%” sebagai lelucon tentang probabilitas yang tidak terkalibrasi dengan baik dari softmax.
      Maksudnya semacam softmax pandai menghasilkan keyakinan 99,9% atau 0,1%, tetapi kurang bagus di bagian tengah
  • Aku tahu mengeluh soal dunia akademik sedang ngetren di HN, tapi tulisan blog ini tidak menyusun argumen yang baik.
    Pokok utamanya bisa disampaikan dalam seperempat dari panjang sekarang, mungkin bahkan kurang dari seperdelapan, tetapi malah dibungkus dengan ungkapan santai dan keluhan tersamar tipis tentang publikasi akademik.
    Akibatnya, diskusi di sini juga menjadi 200 komentar tentang publikasi akademik vs blog, tulisan formal vs tulisan informal, bukannya tentang hasil atau idenya.
    Mungkin ini gaya yang bagus kalau tujuanmu ingin menaikkan sebuah postingan blog ke halaman depan HN. Tapi kalau ingin orang meninjau dan mendiskusikan kelebihan serta kekurangan idenya, ini kurang cocok

    • Pada akhirnya, di situlah alasan mendasar kita sampai pada ekonomi perhatian.
      Perhatian yang dimiliki orang untuk dicurahkan ke segala hal itu terbatas, tetapi kemampuan dan kebutuhan untuk menarik perhatian tidak terbatas. Ini yang dibicarakan Michael Goldhaber.
      Dari sinilah ledakan informasi bermula. Enam miliar video tentang cara merebus telur, atau 200 komentar model gudang sepeda.
      Untuk mencegah itu, tempat seperti Google, Facebook, dan HN memberi peringkat pada komentar, tautan, dan newsfeed, tetapi karena sebagian besar kumpulan yang diperingkat memang omong kosong, hasilnya hanya menjadi lapisan omong kosong yang lain.
      Kita masih belum berhasil merancang sistem informasi yang mencerminkan apa yang Goldhaber katakan tentang perhatian 30–40 tahun lalu
    • Kamu mengejek frasa “naik ke halaman depan HN”, tetapi kalau diubah menjadi “membahas sesuatu yang diamati secara informal”, nada merendahkannya jadi hilang.
      Bisa saja tujuannya adalah memberi informasi sekaligus menghibur. Banyak orang menikmati diskusi longgar di sekitar pokok bahasan, dan penulis mungkin juga lebih menyukai itu daripada nada makalah akademik yang klinis dan formal
    • Sebagai catatan, seseorang menunjukkan bahwa ada jalan memutar opsional untuk masalah ini di API Multihead Attention milik PyTorch.
      Tetap saja, sedikit menjengkelkan karena untuk menemukannya kamu harus melewati 200 komentar keluhan yang melenceng dari topik
  • Aku pernah mencoba eksperimen serupa, dan di pengaturanku itu tidak membantu.
    Aku tidak bisa memastikan tidak ada bug atau semacamnya, tetapi attention ke posisi saat ini tampaknya menyelesaikan masalah ini sampai taraf tertentu. Saat tidak ada hal yang perlu dikatakan, model cukup mengeluarkan nilai posisi saat ini.
    Tepatnya, alih-alih menambahkan 1 ke penyebut softmax, aku menempelkan attention sink yang merupakan parameter terlatih sebelum QK, lalu membuangnya setelah softmax sehingga jumlahnya tidak harus menjadi 1 saat dikalikan dengan V.
    Aku juga mencoba varian yang melihat posisi saat ini dan yang tidak, serta varian yang menghasilkan sink dengan jaringan feedforward per posisi alih-alih parameter terlatih. Dalam pengaturanku, tidak ada yang membuat perbedaan besar, tetapi ada banyak faktor aneh lain yang bercampur, jadi mungkin masih layak dicoba lagi

    • Kalau dibilang tidak membantu, aku penasaran apa yang diukur.
      Dalam konteks tulisan ini, performa tugas dan jumlah serta besarnya bobot outlier tampaknya sama-sama penting
    • Dia mempromosikan ini sebagai perbaikan untuk outlier yang melonjak. Apakah varianmu sejak awal memang punya outlier seperti itu?
  • Hasilnya tidak terlihat. Angka-angka yang melengkapi teorinya akan membuatnya jauh lebih kuat dan meyakinkan.
    Tidak terlalu sulit untuk melakukan fine-tuning pada model bahasa yang sudah ada dengan data kecil untuk memeriksa apakah ini benar-benar bekerja.
    Namun, aku juga punya pemikiran serupa bahwa mungkin ada rumus attention yang lebih baik. Makalah 2020 https://arxiv.org/abs/2005.09561 sangat membantu pada salah satu model Transformer yang kulatih. Itu bukan model bahasa umum, melainkan masalah graf multimodal yang khusus.
    Makalah itu mengusulkan normalized attention, dan kalau aku tidak salah, itu mungkin juga bisa membantu masalah kuantisasi

  • Cara ini cukup sering dipakai sebelum token dummy menjadi umum. Saya pertama kali melihat ide ini lewat makalah XLNet
    Setahu saya, ini sudah ada di PyTorch sejak 2019/2020, dan mungkin ada orang yang bisa menemukan referensi yang lebih lama
    Saya terkejut dengan sikap berlebihan di tulisan aslinya. Terutama jika itu menyangkut hal yang dipahami oleh sebagian besar peneliti Transformer. Saya juga heran melihat banyak tanggapan yang mengambil posisi “penelitian harus dilakukan seperti ini”. Ini lebih dekat ke contoh mengapa penelitian tidak berjalan seperti itu, dan peer review itu baik dalam banyak hal, salah satunya karena mengurangi kejadian yang membuat kita malu sendiri

  • Dia bukan arogan. Orang-orang menyukai nada yang informal, blak-blakan, dan merendahkan diri, dan itu justru kebalikan dari arogansi
    Sepertinya orang membaca self-deprecation yang samar sebagai klaim sungguhan
    Singkatnya, alasan ini dibagikan karena ini adalah masalah yang cukup niche dan hanya penting saat mencoba menjalankan tiruan samar ChatGPT di perangkat keras yang terbatas. Jadi sangat mungkin tim riset besar tidak menganggapnya penting. Mereka tidak sedang mencoba menjalankan LLM di 3090

  • Penilaian bahwa ini “arogan” terasa aneh
    Tulisannya bernada percakapan, merendahkan diri, dan humoris. Saya tidak yakin soal plus minusnya, tetapi alur penalarannya bisa saya ikuti sepenuhnya. Jauh dari kesan arogan
    Ungkapan “mengurangi kejadian yang membuat kita malu sendiri” menyiratkan bahwa kalau salah atau bukan penemuan pertama, itu memalukan. Bukankah itu yang justru arogan?