- Memahami struktur secara akurat melalui implementasi model Llama 3 yang benar-benar dapat dijalankan
Ikhtisar
- Model Llama 3 yang dirilis oleh Meta sedang menjadi sorotan.
- Model ini menonjol dengan skala dan performa yang sangat besar, seperti 24K GPU, 15T data pelatihan, 10M data instruksi, dan 1.3M jam GPU.
- Struktur model secara umum tidak banyak berubah. Llama 3 menggunakan GQA, tetapi ini sudah pernah diimplementasikan pada Llama 2 70B.
- Implementasi dibuat hanya dengan menggunakan NumPy agar struktur model dapat dipahami secara intuitif.
- Model stories15M yang dilatih Andrej Karpathy dengan arsitektur Llama 2 dikonversi ke format kompresi NumPy lalu digunakan.
Struktur
- Struktur model Llama 3 sama dengan 42dot LLM.
- Parameter model:
dim: 288
n_layers: 6
n_heads: 6
vocab_size: 32000
max_seq_len: 256
max_new_tokens: 50
RoPE #1
- cos dan sin dihitung terlebih dahulu untuk embedding RoPE.
- Nilai-nilai ini digunakan pada
Q dan K.
- Hasil perhitungannya dikalikan dengan
np.outer, lalu cos dan sin dihitung.
RMSNorm
- RMSNorm menormalisasi nilai aktivasi dengan Root Mean Square alih-alih menggunakan statistik Mini Batch atau Layer tradisional.
- Ini memberikan penskalaan aktivasi yang konsisten.
QKV
- Perhitungan QKV berbeda dari GPT, yang membagi hasil setelah melakukan matmul dengan satu bobot; Llama memiliki bobot terpisah untuk masing-masing QKV.
- Setiap nilai dibentuk ulang untuk Multi-Head Attention.
RoPE #2
- RoPE memiliki karakteristik positional encoding absolut dan relatif sekaligus.
- Hanya diterapkan pada Q dan K; input dibagi, dikalikan dengan cos dan sin, lalu hasilnya dijumlahkan dan dikurangkan untuk dibentuk kembali.
KV cache
- Model generatif bergaya GPT menggunakan Masked Attention sehingga KV cache dapat digunakan.
- Karena hasil sebelumnya selalu sama, K dan V di-cache, sementara Q hanya dihitung untuk nilai terakhir.
GQA(Grouped-Query Attention)
- GQA adalah teknik yang diperkenalkan di Llama 2 untuk menghemat memori dan meningkatkan performa.
- Di Llama 3, GQA diterapkan pada semua model berukuran 8B ke atas.
Scaled Dot-Product Attention
- Tiap attention dihitung dengan Multi-Head Attention.
- Hasil diperoleh melalui softmax dan matmul.
Feed Forward
- Feed Forward pada model Llama menggunakan 3 lapisan linear tanpa bias.
- Nilai swish dibuat, dikalikan dengan
x_V, lalu diskalakan turun kembali.
SwiGLU
- SwiGLU meningkatkan performa model melalui kombinasi unik dari beberapa lapisan feed-forward.
Linear
- Output akhir menghitung hanya logit terakhir dengan matmul untuk meningkatkan kecepatan.
Generasi
- Token dihasilkan satu per satu menggunakan logit yang diekstrak.
- Prosesnya dibagi menjadi Prefill Phase dan Decode Phase.
- Pada Prefill Phase, seluruh input diberikan, sedangkan pada Decode Phase, hanya ID token terakhir yang diberikan untuk memperoleh hasil.
Contoh
GitHub
Referensi
- Exploring and Building the Llama 3 Architecture
- Rotation Matrix
- Mastering LLM Techniques: Inference Optimization
- arXiv:2305.13245
Opini GN⁺
- Struktur dan performa model Llama 3: Model Llama 3 mempertahankan struktur model Llama 2 yang sudah ada sambil meningkatkan performa secara signifikan. Ini adalah hasil dari pertimbangan terhadap skalabilitas dan efisiensi model secara bersamaan.
- Alasan diimplementasikan dengan NumPy: Dengan mengimplementasikan model menggunakan NumPy, struktur dan cara kerjanya dapat dipahami dengan lebih intuitif. Ini sangat membantu bagi pelajar maupun peneliti.
- Penerapan GQA: GQA adalah teknik yang sekaligus memberikan penghematan memori dan peningkatan performa, dan dengan diterapkan pada semua model di Llama 3, efisiensi model dimaksimalkan.
- Pentingnya KV cache: KV cache memainkan peran penting pada model generatif bergaya GPT, dan melalui ini efisiensi komputasi model dapat ditingkatkan secara signifikan.
- Kasus penggunaan nyata: Melalui kode contoh, model dapat dijalankan secara langsung, yang menjadi kesempatan baik untuk memeriksa performanya sendiri.
1 komentar
Yang diposting di Hacker News berbahasa Inggris, tetapi sudah diubah ke tautan yang ditulis dalam bahasa Korea oleh penulis aslinya, Likejazz.