35 puan yazan GN⁺ 2024-05-20 | 1 yorum | WhatsApp'ta paylaş
  • 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

 
2147483647 2024-05-23

Anya çok tatlı.