- Llama 3 modelinin gerçekten çalışabilen bir uygulaması üzerinden yapısını doğru şekilde anlamak
Genel Bakış
- Meta tarafından yayımlanan Llama 3 modeli dikkat çekiyor.
- 24K GPU, 15T eğitim verisi, 10M komut verisi, 1.3M GPU saati gibi ezici ölçek ve performans sunuyor.
- Model mimarisi büyük ölçüde değişmedi. Llama 3, GQA kullanıyor ancak bu, Llama 2 70B'de de daha önce uygulanmıştı.
- Model mimarisini sezgisel olarak anlayabilmek için yalnızca NumPy kullanılarak uygulandı.
- Andrej Karpathy'nin Llama 2 mimarisiyle eğittiği stories15M modeli, NumPy sıkıştırılmış formatına dönüştürülerek kullanıldı.
Yapı
- Llama 3 model mimarisi, 42dot LLM ile aynıdır.
- Model parametreleri:
dim: 288
n_layers: 6
n_heads: 6
vocab_size: 32000
max_seq_len: 256
max_new_tokens: 50
RoPE #1
- RoPE embedding'i için
cos ve sin değerleri önceden hesaplanır.
- Bu değerler
Q ve K için kullanılır.
- Hesaplama sonucu
np.outer ile çarpılır ve cos ile sin değerleri elde edilir.
RMSNorm
- RMSNorm, geleneksel Mini Batch veya Layer istatistikleri yerine aktivasyonları Root Mean Square ile normalize eder.
- Tutarlı aktivasyon ölçekleme sağlar.
QKV
- QKV hesaplaması, GPT'deki gibi tek bir ağırlığa
matmul uygulayıp sonra bölme yönteminden farklı olarak, Llama'da Q, K ve V'nin her biri için ayrı ağırlıklara sahiptir.
- Multi-Head Attention için her değer yeniden şekillendirilir.
RoPE #2
- RoPE, hem mutlak hem de göreli konum kodlama özelliklerine sahiptir.
- Yalnızca Q ve K'ye uygulanır; girdi bölünür,
cos ve sin ile çarpılır, ardından sonuçlar toplanıp çıkarılarak yeniden birleştirilir.
KV önbelleği
- GPT tarzı üretim modelleri Masked Attention kullandığı için KV önbelleği mümkündür.
- Önceki sonuçlar her zaman aynı olduğundan K ve V önbelleğe alınır, Q ise yalnızca son değer için hesaplanır.
GQA (Grouped-Query Attention)
- GQA, Llama 2 ile tanıtılan ve bellek tasarrufu ile performans artışı sağlayan bir tekniktir.
- Llama 3'te 8B ve üzerindeki tüm modellere GQA uygulanır.
Scaled Dot-Product Attention
- Her bir attention işlemi Multi-Head Attention ile hesaplanır.
- Sonuçlar
softmax ve matmul ile elde edilir.
Feed Forward
- Llama modelinin Feed Forward katmanı 3 doğrusal katman kullanır ve bias içermez.
swish değeri üretilir, x_V ile çarpılır ve ardından tekrar aşağı ölçeklenir.
SwiGLU
- SwiGLU, çeşitli feed forward katmanlarının özgün bir birleşimi olarak model performansını artırır.
Linear
- Son çıktı, hızı artırmak için yalnızca son logit üzerinde
matmul hesaplanarak üretilir.
Üretim
- Çıkarılan logit'ler kullanılarak token'lar tek tek üretilir.
- Süreç Prefill Phase ve Decode Phase olarak ikiye ayrılır.
- Prefill Phase'te tüm giriş verilir, Decode Phase'te ise yalnızca son token kimliği verilerek sonuç alınır.
Örnek
GitHub
Kaynakça
- Exploring and Building the Llama 3 Architecture
- Rotation Matrix
- Mastering LLM Techniques: Inference Optimization
- arXiv:2305.13245
GN⁺ Görüşü
- Llama 3 modelinin yapısı ve performansı: Llama 3 modeli, mevcut Llama 2 modelinin mimarisini korurken performansı önemli ölçüde artırıyor. Bu, modelin hem ölçeklenebilirliğinin hem de verimliliğinin birlikte gözetilmesinin sonucu.
- NumPy ile uygulanma nedeni: Modelin NumPy kullanılarak uygulanması, yapısının ve çalışma biçiminin daha sezgisel anlaşılmasını sağlıyor. Bu, öğrenenler ve araştırmacılar için büyük fayda sunuyor.
- GQA'nın kullanıma alınması: GQA, aynı anda hem bellek tasarrufu hem de performans artışı sağlayan bir teknik. Llama 3'te tüm modellere uygulanması, model verimliliğini en üst düzeye çıkarıyor.
- KV önbelleğinin önemi: KV önbelleği, GPT tarzı üretim modellerinde önemli bir rol oynar ve modelin hesaplama verimliliğini büyük ölçüde artırabilir.
- Gerçek kullanım örneği: Örnek kod üzerinden model gerçekten çalıştırılabilir; bu da model performansını doğrudan görmek için iyi bir fırsat sunar.
1 yorum
Hacker News'te paylaşılan içerik İngilizceydi, ancak bunu özgün yazar Likejazz'ın Korece olarak hazırladığı bağlantıyla değiştirdim.