20 poin oleh GN⁺ 2024-05-17 | 1 komentar | Bagikan ke WhatsApp
  • 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

  • Dapat dijalankan seperti berikut:
    $ python llama3.py "I have a dream"  
    

GitHub

Referensi

  1. Exploring and Building the Llama 3 Architecture
  2. Rotation Matrix
  3. Mastering LLM Techniques: Inference Optimization
  4. 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

 
xguru 2024-05-17

Yang diposting di Hacker News berbahasa Inggris, tetapi sudah diubah ke tautan yang ditulis dalam bahasa Korea oleh penulis aslinya, Likejazz.