DeepSeek-V3 Siri Penjelasan Terperinci Artikel: Mekanisme Perhatian Potensi Bulls (MLA)
Artikel ini adalah artikel pertama dalam siri "terperinci mengenai siri DeepSeek-V3".
Siri artikel ini akan merangkumi dua topik utama:
Artikel ini terutamanya memberi tumpuan kepada mekanisme perhatian berpotensi multi-kepala (MLA) , yang pada asalnya dicadangkan dalam pembangunan DeepSeek-V2 dan telah digunakan dalam DeepSeek-V3.
katalog:
mha dalam pengubah decoder
Angka berikut membandingkan tiga seni bina pengubah untuk penyahkodan, di mana (a) menunjukkan pengekod dan penyahkod yang dicadangkan dalam "Perhatian yang anda perlukan" yang asal. Bahagian penyahkod kemudian dipermudahkan oleh [6] untuk mendapatkan model pengubah decoder sahaja yang ditunjukkan dalam (b), yang kemudiannya digunakan oleh banyak model generatif seperti GPT [8].
Hari ini, model bahasa yang besar lebih kerap memilih struktur yang ditunjukkan dalam (c) untuk latihan yang lebih stabil, gunakan normalisasi pada input dan bukannya output, dan menaik taraf Layernorm kepada norma RMS. Ini akan berfungsi sebagai seni bina asas yang kita bincangkan dalam artikel ini.
Dalam konteks ini, pengiraan MHA sebahagian besarnya mengikuti proses dalam [6], seperti yang ditunjukkan dalam gambar di bawah:
Katakan kita mempunyai n_h kepala perhatian, dan dimensi setiap kepala perhatian dinyatakan sebagai d_h , jadi dimensi yang disambungkan akan ( h_n · d_h
, jika kita mewakili input tag t-th dalam lapisan itu sebagai h_t dengan dimensi d , maka Kita perlu menggunakan matriks pemetaan linear untuk memetakan dimensi h_t dari d ke ( h_n · q_t adalah satu lagi matriks unjuran yang digunakan untuk memetakan dimensi terbalik dari ( Seperti namanya, caching nilai utama adalah teknik yang direka untuk mempercepat proses autoregression dengan caching dan menggunakan semula kunci dan nilai sebelumnya, dan bukannya mengira semula mereka dalam setiap langkah penyahkodan.
Walau bagaimanapun, pecutan yang dibawa oleh cache nilai kunci datang pada kos ingatan, kerana cache nilai kunci biasanya berbeza dengan apabila kita mempunyai lebih besar boleh menyebabkan kesesakan memori apabila saiz atau urutan batch lebih panjang. Ini seterusnya membawa kepada dua teknik yang direka untuk menangani batasan ini: perhatian pelbagai pertanyaan dan perhatian kumpulan. Perhatian Multiple-Query (MQA) vs Perhatian Kumpulan Kumpulan (GQA)
Angka berikut menunjukkan perbandingan antara MHA asal, dikumpulkan perhatian pertanyaan (GQA) [10] dan perhatian pelbagai pertanyaan (MQA) [9].
Latar belakang terakhir yang perlu kita sebutkan adalah tali [11], yang secara langsung mengkodekan maklumat kedudukan ke dalam mekanisme perhatian dengan memutar pertanyaan dan vektor utama dalam perhatian multi-kepala menggunakan fungsi sinus. Lebih khusus, tali menggunakan matriks putaran yang bergantung kepada kedudukan untuk pertanyaan setiap tag dan vektor utama dan menggunakan fungsi sinus dan kosinus sebagai asasnya, tetapi menggunakannya dengan cara yang unik untuk melaksanakan berputar.
di mana θ = θ (p) = p ⋅ θ_0, dan θ_0 adalah frekuensi asas
tali digunakan secara meluas dalam model bahasa besar moden kerana kecekapannya dalam pengekodan urutan panjang, tetapi seperti yang dapat kita lihat dari formula di atas, ia mempunyai kepekaan kedudukan untuk kedua -dua q dan k, yang menjadikannya dalam beberapa aspek ini tidak serasi dengan MLA.
Mekanisme Perhatian Potensi Bules Akhirnya, kita boleh terus membincangkan bahagian MLA. Dalam bahagian ini, kita akan mula -mula menghuraikan idea -idea lanjutan MLA dan kemudian menyelam mengapa ia memerlukan pengubahsuaian tali. Akhirnya, kami juga akan memperkenalkan algoritma terperinci dan prestasi MLA mereka. Idea asas MLA adalah untuk memampatkan input perhatian , di mana d_c lebih kecil daripada yang asal ( · d_h ) ke matriks pemampatan d_c (D dalam superskrip di sini mewakili "unjuran pengurangan dimensi ", yang bermaksud pemampatan, dan w^{uk} dan w^{uv} adalah kedua-dua matriks unjuran atas yang memetakan vektor laten yang dikongsi kembali ke ruang dimensi tinggi.
Begitu juga, kita boleh memetakan pertanyaan ke vektor berpotensi rendah dan kemudian memetakannya kembali ke ruang dimensi tinggi yang asal: Seperti yang dinyatakan sebelum ini, tali adalah pilihan umum untuk model generatif latihan untuk mengendalikan urutan panjang. Jika kita memohon dasar MLA di atas secara langsung, ini tidak sesuai dengan tali. untuk melihat ini dengan lebih jelas, pertimbangkan apa yang berlaku apabila kita mengira perhatian menggunakan eqn. Matriks w^q dan w^{uk} akan muncul di tengah, dan kombinasi mereka bersamaan dengan dari d_c Dimensi pemetaan untuk .
Dalam kertas asal [3], penulis menggambarkannya sebagai w^{uk} yang boleh diserap oleh " w^{uk} dalam cache, dengan itu mengurangkan lagi penggunaan memori.
Walau bagaimanapun, ini tidak berlaku apabila kita mempertimbangkan matriks putaran dalam Rajah (4), kerana tali akan menggunakan matriks putaran di sebelah kiri w^{uk} dan matriks putaran ini akhirnya akan Terletak di antara w^q dan w^{uk} ** ", dengan memperkenalkan vektor pertanyaan tambahan serta vektor utama yang dikongsi, dan menggunakan vektor tambahan ini hanya dalam proses tali, di Masa yang sama menyimpan kunci asal secara berasingan dari matriks putaran sedikit sebanyak.
keseluruhan proses MLA dapat diringkaskan seperti berikut (nombor persamaan digunakan semula dari Lampiran C [3]):
eqn.
eqn. eqn. eqn. d_h di mana w^q , w^k dan w^v adalah matriks pemetaan linear:
, k_t dan v_t ke n_h t untuk mengira produk titik berkadar
di mana
h_n ·
d_h d :
Perhatikan bahawa prosedur yang diterangkan di atas dalam persamaan (1) hingga (8) hanya untuk penanda tunggal. Semasa proses penalaran, kita perlu mengulangi proses ini untuk setiap markup yang baru dijana, yang melibatkan banyak pengiraan berulang. Ini membawa kepada teknik yang dipanggil caching nilai utama.
cache nilai kunci
cache kV biasanya dilaksanakan sebagai penampan rolling. Dalam setiap langkah penyahkodan, hanya pertanyaan baru Q dikira, dan K dan V yang disimpan dalam cache akan digunakan semula untuk mengira perhatian menggunakan Q dan digunakan semula K dan V. Pada masa yang sama, K dan V yang baru juga akan ditambah ke cache untuk kegunaan kemudian.
GQA boleh dianggap sebagai kaedah interpolasi antara MHA dan MQA, di mana hanya satu sepasang kunci dan tajuk nilai akan dikongsi dengan hanya satu set tajuk pertanyaan, bukan semua pertanyaan. Tetapi ini masih akan membawa kepada hasil yang lebih buruk daripada MHA. tali (embed kedudukan berputar)
(x_1, x_2) -& gt;
Inilah sebabnya kita panggil matriks putaran ini yang berkaitan dengan kedudukan : Pada setiap kedudukan (atau setiap pasangan), kita akan menggunakan matriks putaran yang berbeza di mana sudut putaran ditentukan oleh kedudukan.
MLA: Pikiran Lanjutan
ke dalam vektor laten rendah dimensi yang dimensi
d_c ### Mengapa anda perlu menyahut tali
tidak boleh diserap oleh w^q ** ************************ ****************************************************** boleh lebih lama diserap oleh w^q ** .
Untuk menyelesaikan konflik ini, penulis mencadangkan apa yang mereka sebut "
Dalam proses ini, anda hanya perlu cache pembolehubah biru dengan kotak. Proses ini dapat dijelaskan dengan lebih jelas menggunakan carta aliran berikut:
Lebih khusus lagi, jadual berikut menunjukkan prestasi MHA, GQA dan MQA pada model 7B, di mana MHA mempunyai prestasi yang jauh lebih baik daripada MQA dan GQA.
[3] juga menganalisis MHA dan MLA, dan hasilnya diringkaskan dalam jadual di bawah, di mana MLA mencapai hasil yang lebih baik secara keseluruhan.
Rujukan
Atas ialah kandungan terperinci DeepSeek-V3 dijelaskan 1: Perhatian laten berbilang kepala. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!