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.