- Tek bir tensör ve matris çarpımıyla Llama3 baştan sona uygulanıyor.
- Meta'nın sağladığı Llama3 model dosyasından tensörler doğrudan yükleniyor.
LLaMA-3 modelinin sıfırdan uygulanmasına kısa bir özet
Tokenizer kurulumu
- Tiktoken kütüphanesi kullanılarak tokenizer kuruluyor.
- Özel token'lar tanımlanıp tokenizer'a ekleniyor.
Model dosyasını okuma
- Model dosyası (
consolidated.00.pth) PyTorch kullanılarak yükleniyor.
- Model yapılandırması
params.json dosyasından okunuyor.
- Boyut sayısı (
dim), katman sayısı (n_layers), head sayısı (n_heads) gibi bilgiler dahil.
Metni token'lara dönüştürme
- Prompt metni tokenizer kullanılarak token dizisine dönüştürülüyor.
- Her token karşılık gelen embedding'e dönüştürülüyor.
- Embedding'ler RMS normalizasyonu kullanılarak normalize ediliyor.
Attention uygulaması
- Sorgu (
wq), anahtar (wk), değer (wv) ve çıktı (wo) matrisleri modelden yükleniyor.
- Her token için sorgu, anahtar ve değer vektörleri hesaplanıyor.
- Konum bilgisi eklemek için RoPE (Rotary Positional Embedding) kullanılıyor.
- Sorgu ve anahtarların iç çarpımı hesaplanarak attention skorları elde ediliyor.
- Gelecekteki token'lara ait attention skorları maskeleniyor.
- Softmax fonksiyonu uygulanarak attention dağılımı hesaplanıyor.
- Attention dağılımı ile değer vektörleri çarpılarak attention sonucu hesaplanıyor.
Multi-head attention
- Tüm attention head'leri için attention hesaplaması yapılıyor.
- Her head'in sonucu birleştirilerek (concatenate) nihai attention çıktısı oluşturuluyor.
Feed-forward network
- SwiGLU (Swish Gated Linear Unit) aktivasyon fonksiyonunu kullanan bir feed-forward network uygulanıyor.
- Attention sonucu ile feed-forward network çıktısı toplanarak nihai embedding oluşturuluyor.
Tüm katmanlar boyunca yineleme
- Tüm transformer katmanlarında attention ve feed-forward network hesaplamaları tekrarlanıyor.
- Nihai embedding RMS normalizasyonundan geçiriliyor.
Token tahmini
- Nihai embedding çıktı matrisiyle çarpılarak logits hesaplanıyor.
- Logits içindeki en yüksek değere sahip token bir sonraki token olarak tahmin ediliyor.
- Tahmin edilen token decode edilerek çıktı veriliyor.
GN⁺ görüşü
- Bu yazı, Llama3 modelinin iç yapısını ve çalışma biçimini anlamak için çok faydalı. Özellikle sıfırdan uygulama süreci sayesinde modelin her bileşeninin nasıl etkileştiği net biçimde görülebiliyor.
- Başlangıç seviyesindeki yazılım mühendisleri için biraz karmaşık olabilir. Ancak adım adım iyi açıklandığı için yavaş ilerleyerek anlaşılabilir.
- RoPE (Rotary Positional Embedding) gibi ileri düzey kavramların model performansını nasıl iyileştirdiği öğrenilebilir. Bu, başka NLP modellerini uygularken veya iyileştirirken de işe yarayabilir.
- Bu yazı sayesinde derin öğrenme modellerinin iç yapısı ve çalışma mantığı daha derinlemesine anlaşılabilir. Bu da modeli optimize etme veya hata ayıklama süreçlerinde büyük fayda sağlayabilir.
1 yorum
Anya çok tatlı.