Rumah > Peranti teknologi > AI > DeepSeek-V3 dijelaskan 1: Perhatian laten berbilang kepala

DeepSeek-V3 dijelaskan 1: Perhatian laten berbilang kepala

PHPz
Lepaskan: 2025-02-26 03:00:17
asal
632 orang telah melayarinya

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:

  • Inovasi seni bina utama DeepSeek-V3 termasuk MLA (Bulner potensi perhatian) [3], DeepSeekMoe [4], mengimbangi beban tanpa kerugian tambahan [5], dan latihan ramalan berbilang tag.
  • Proses latihan DeepSeek-V3, termasuk fasa penjajaran pembelajaran pra-latihan, penalaan dan tetulang.

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:

  • Latar Belakang: Kami akan bermula dengan MHA standard dan menjelaskan mengapa cache nilai kunci diperlukan semasa fasa kesimpulan, bagaimana MQA dan GQA cuba mengoptimumkannya, dan bagaimana tali berfungsi, dan lain-lain.
  • Mekanisme Perhatian Potensi (MLA): Pengenalan mendalam kepada MLA, termasuk motivasinya, mengapa ia perlu meremehkan tali dan prestasinya.
  • Rujukan.
latar belakang

untuk lebih memahami MLA dan membuat artikel ini satu-dalam-satu, kami akan mengkaji beberapa konsep yang berkaitan dalam bahagian ini sebelum membincangkan butiran MLA.

mha dalam pengubah decoder

Perhatikan bahawa MLA dibangunkan untuk mempercepatkan kesimpulan generasi teks autoregressive, jadi MHA yang dibincangkan dalam konteks ini adalah untuk pengubah decoder sahaja.

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: DeepSeek-V3 Explained 1: Multi-head Latent Attention

Katakan kita mempunyai DeepSeek-V3 Explained 1: Multi-head Latent Attention n_h kepala perhatian, dan dimensi setiap kepala perhatian dinyatakan sebagai d_h , jadi dimensi yang disambungkan akan ( h_n · d_h ). untuk model dengan lapisan

l

, 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 · d_h ). lebih formal, kita ada (EQ dari [3]):

DeepSeek-V3 Explained 1: Multi-head Latent Attention di mana w^q , w^k dan w^v adalah matriks pemetaan linear:

Selepas pemetaan, pecahkan

q_t DeepSeek-V3 Explained 1: Multi-head Latent Attention, k_t dan v_t ke n_h t untuk mengira produk titik berkadar di mana

w^o

adalah satu lagi matriks unjuran yang digunakan untuk memetakan dimensi terbalik dari (DeepSeek-V3 Explained 1: Multi-head Latent Attention h_n · d_h ) ke 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

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. DeepSeek-V3 Explained 1: Multi-head Latent Attention

Perhatikan bahawa cache KV biasanya hanya digunakan dalam fasa kesimpulan, kerana semasa latihan kita masih perlu memproses keseluruhan urutan input selari.

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.

Walau bagaimanapun, pecutan yang dibawa oleh cache nilai kunci datang pada kos ingatan, kerana cache nilai kunci biasanya berbeza dengan

saiz batch × urutan panjang × saiz tersembunyi × kiraan kepala

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].

Idea asas MQA adalah untuk berkongsi kunci tunggal dan tajuk nilai tunggal di semua tajuk pertanyaan, yang dapat mengurangkan penggunaan memori dengan ketara tetapi juga akan mempengaruhi ketepatan perhatian.

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.

Dalam bab -bab yang kemudian, kita akan melihat bagaimana MLA berjaya mengimbangi kecekapan memori dan ketepatan pemodelan.

tali (embed kedudukan berputar)

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.

Untuk memahami apa yang menjadikannya bergantung kepada kedudukan, pertimbangkan vektor embedding mainan dengan hanya 4 elemen, iaitu (x_1, x_2, x_3, x_4).

Untuk memohon tali, kami mula -mula kumpulan dimensi berterusan menjadi pasangan:

    (x_1, x_2) -& gt;
  • (x_3, x_4) -& gt;
  • maka kami menggunakan matriks putaran untuk memutar setiap pasangan:

di mana θ = θ (p) = p ⋅ θ_0, dan θ_0 adalah frekuensi asas

. Dalam contoh mainan 4D kami, ini bermakna (x_1, x_2) akan berputar θ_0, manakala (x_3, x_4) akan berputar 2 ⋅ θ_0.

DeepSeek-V3 Explained 1: Multi-head Latent Attention 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.

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.

MLA: Pikiran Lanjutan

Idea asas MLA adalah untuk memampatkan input perhatian

h_t

ke dalam vektor laten rendah dimensi yang dimensi

d_c

, di mana d_c lebih kecil daripada yang asal ( h_n · d_h ). Kemudian, apabila kita perlu mengira perhatian, kita dapat memetakan vektor laten ini kembali ke ruang dimensi tinggi untuk memulihkan kunci dan nilai. Oleh itu, hanya vektor yang berpotensi perlu disimpan, dengan itu mengurangkan penggunaan memori dengan ketara. Proses ini dapat diterangkan secara formal dengan persamaan berikut, di mana c^{kv} _t adalah vektor laten, dan w^{dkv} h_t dipetakan dari (

h_n

· 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:

DeepSeek-V3 Explained 1: Multi-head Latent Attention ### Mengapa anda perlu menyahut tali

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 "" ke w^q

, oleh itu, Kami tidak perlu menyimpan

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} transposed.

Seperti yang dijelaskan dalam bahagian latar belakang, matriks putaran ini bergantung kepada kedudukan, yang bermaksud bahawa matriks putaran untuk setiap kedudukan adalah berbeza. Oleh itu,

w^{uk} ** tidak boleh diserap oleh w^q ** ************************ ****************************************************** boleh lebih lama diserap oleh w^q ** . Untuk menyelesaikan konflik ini, penulis mencadangkan apa yang mereka sebut "

decoupled tali

", 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]):

di mana

eqn. eqn.

eqn.

eqn. DeepSeek-V3 Explained 1: Multi-head Latent Attention

    Dalam proses ini, anda hanya perlu cache pembolehubah biru dengan kotak. Proses ini dapat dijelaskan dengan lebih jelas menggunakan carta aliran berikut:
  • ### Prestasi MLA
  • Jadual berikut membandingkan bilangan elemen yang diperlukan untuk cache KV (setiap tag) dan keupayaan pemodelan antara MHA, GQA, MQA dan MLA, yang menunjukkan bahawa MLA sememangnya dapat mencapai lebih baik antara kecekapan memori dan kemampuan pemodelan yang baik. Menariknya, keupayaan pemodelan MLA bahkan melampaui MHA asal.
  • DeepSeek-V3 Explained 1: Multi-head Latent Attention 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.

    Penulis

    DeepSeek-V3 Explained 1: Multi-head Latent Attention [3] juga menganalisis MHA dan MLA, dan hasilnya diringkaskan dalam jadual di bawah, di mana MLA mencapai hasil yang lebih baik secara keseluruhan.

    DeepSeek-V3 Explained 1: Multi-head Latent Attention Rujukan

    • [1] DeepSeek
    • [2] Laporan Teknikal DeepSeek-V3
    • [3] DeepSeek-V2: Model Bahasa Pakar Hibrid yang Berkesan, Kos
    • [4] DeepSeekMoe: Ke arah Pengkhususan Pakar Akhir dalam Model Bahasa Pakar Hibrid
    • [5] Strategi pengimbangan beban kerugian yang tidak disokong untuk model pakar hibrid
    • [6] Perhatian adalah semua yang anda perlukan
    • [7] menjana wikipedia dengan meringkaskan urutan panjang
    • [8] meningkatkan pemahaman bahasa melalui pra-latihan generatif
    • [9] Penyahkodan Pengubah Cepat: Kepala menulis cukup
    • [10] GQA: Latihan model pengubah multi-kuars yang umum dari pusat pemeriksaan berbilang kepala
    • [11] Roformer: Pengubah yang dipertingkatkan dengan kedudukan berputar embed

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan