12 puan yazan GN⁺ 2024-05-29 | Henüz yorum yok. | WhatsApp'ta paylaş
  • llm.c kullanarak GPT-2 (124M) modelinin 90 dakikada 20 $ maliyetle nasıl yeniden üretileceği anlatılıyor
  • GPT-2 (124M), OpenAI'nin 2019'da yayımladığı en küçük model
  • Lambda üzerinde 8X A100 80GB SXM düğümü kullanıldığında saatlik yaklaşık 14 $, toplam maliyet yaklaşık 20 $
    • Eğitim tek GPU ile de mümkün, ancak daha uzun sürüyor (4-24 saat)

Sonuç karşılaştırması

  • FineWeb doğrulama veri kümesinde, OpenAI'nin yayımladığı checkpoint'ten daha iyi performans gösteriyor
    • Ancak GPT-2, WebText ile eğitildiği için bu tamamen adil bir karşılaştırma değil
  • HellaSwag doğruluğu da ölçülmüş; GPT-3 Small (124M)'in 33.7 puanına yakın olan 29.9'a ulaşılıyor
    • GPT-2 (124M)'nin 29.4 puanı ise şimdiden aşılmış durumda
    • Ancak burada eğitim 10B token ile yapıldı; GPT-3 ise 300B token ile eğitildi

Minimum ortam kurulumu

  • GPU gerekli (Lambda Labs öneriliyor)
  • Rehber, Linux x86 64bit Ubuntu 22.04 with CUDA 12 temel alınarak hazırlanmış
  • miniconda kurulduktan sonra PyTorch nightly sürümü kuruluyor (isteğe bağlı)
  • Tokenizer için gerekli paketler kuruluyor
  • Hız için cuDNN kuruluyor (isteğe bağlı)
  • Birden fazla GPU kullanımı için MPI kuruluyor (isteğe bağlı)
  • FineWeb 10B token veri kümesi ön işleniyor (~1 saat sürüyor)
  • llm.c derleniyor (karma hassasiyet, cuDNN FlashAttention kullanımı)

Eğitimi çalıştırma

  • Tek GPU kullanımı için örnek komut veriliyor
  • Çoklu GPU (8 adet) kullanımında mpirun ile çalıştırılıyor
  • Başlıca argümanların açıklaması
    • -i, -j : eğitim/doğrulama veri yolu
    • -o : log ve checkpoint kayıt yolu
    • -e : model başlatma (depth 12 GPT-2)
    • -b : mikro batch boyutu (bellek yetersizse düşürülmeli)
    • -t : maksimum sequence uzunluğu
    • -d : toplam batch boyutu (GPT-3 makalesine referansla)
    • -r : Recompute ayarı (bellek tasarrufu)
    • -z : ZeRO-1 (optimizer state sharding)
    • Diğer weight decay, öğrenme oranı, checkpoint aralığı vb. ayarlar

Eğitim süreci

  • 10B eğitim token'ı ve 0.5M batch boyutu temelinde yaklaşık 20K adım bekleniyor
  • A100 40GB PCIe GPU temelinde step başına süre, MFU ve token işleme çıktısı gösteriliyor
  • Eğitimin başında gradient exploding görülüyor ancak clipping ile çözülüyor

Görselleştirme

  • Log dosyasını parse edip eğitim eğrilerini görselleştiren bir Jupyter notebook sağlanıyor

Tokenizer

  • Tamsayı token'ları metne dönüştürmek için gerekli
  • PyTorch betiğiyle üretilebiliyor

Sampling

  • Şu anda inference için optimize edilmiş değil
  • Küçük kod değişiklikleriyle unconditional/conditional sampling mümkün

Kod yapısı

  • Uygulamanın büyük kısmı train_gpt2.cu dosyasında yer alıyor
  • İlk 500 satır MPI, NCCL, cuDNN, cuBLAS vb. kurulumları içeriyor
  • Sonraki 1500 satır Transformer'ın forward/backward kısmı
  • Takip eden 1000 satır GPT-2 model uygulaması
  • Son 1000 satır ise eğitim döngüsü, argüman ayrıştırma vb.

350M model

  • 10B token yeterli değil; 30B token kullanılıyor
  • 8X A100 80GB ile 14 saat sürüyor, maliyet yaklaşık 200 $

SSS

  • Sampling mümkün mü?: Evet, ancak verimsiz.
  • Sohbet mümkün mü?: Şu anda yalnızca ön eğitim mümkün, sohbet ince ayarı desteklenmiyor.
  • Çok düğümlü dağıtık eğitim: Mümkün, ancak henüz test edilmedi.
  • Bit düzeyinde deterministik mi?: Neredeyse deterministik, ancak bazı kernel yamaları gerekiyor.
  • FP8 eğitim mümkün mü?: Şu anda BF16 ile eğitim yapılıyor, FP8 desteği yakında planlanıyor.
  • NVIDIA dışı GPU desteği var mı?: Şu anda yalnızca C/CUDA destekleniyor.

GN⁺ görüşü

  • GPT-2, modern LLM'lerin başlangıç noktası olarak çok önemli bir model. Sonraki GPT-3 ve diğer LLM'ler de GPT-2'den temelde çok farklı değil.
  • Bu proje, GPT-2 seviyesindeki bir modeli herkesin makul bir maliyetle doğrudan eğitip deneyebilmesini sağlıyor. LLM'leri anlamayı derinleştirmede büyük fayda sağlayabilir.
  • Ancak henüz inference için optimize edilmediğinden, gerçek hizmetlerde kullanım açısından sınırlı. Diyalog tabanlı modele fine-tune etmek de desteklenmiyor.
  • Şu anda yalnızca NVIDIA GPU'ları destekliyor; gelecekte AMD, Apple Silicon ve diğer platformlar için destek bekleniyor.
  • Benzer amaçlı açık kaynak projeler arasında Megatron-LM, DeepSpeed ve FairSeq bulunuyor. Her birinin artıları ve eksileri olduğundan, kullanım amacına göre seçmek iyi olabilir.
  • LLM geliştirme ekosisteminin canlanması açısından son derece teşvik edici bir proje. Geleceği daha da merak uyandırıyor.

Henüz yorum yok.

Henüz yorum yok.