- Menjelaskan cara mereproduksi model GPT-2 (124M) dalam 90 menit dengan biaya $20 menggunakan
llm.c
- GPT-2 (124M) adalah model terkecil yang diumumkan OpenAI pada 2019
- Jika menggunakan node Lambda 8X A100 80GB SXM, biayanya sekitar $14 per jam, total sekitar $20
- Pelatihan juga bisa dilakukan dengan satu GPU, tetapi memakan waktu lebih lama (4-24 jam)
Perbandingan hasil
- Pada dataset validasi FineWeb, performanya lebih baik daripada checkpoint yang dirilis OpenAI
- Namun, GPT-2 dilatih dengan WebText, jadi ini bukan perbandingan yang sepenuhnya adil
- Akurasi HellaSwag juga diukur, dan mencapai 29.9, mendekati GPT-3 Small (124M) yang mencatat 33.7
- Ini sudah melampaui GPT-2 (124M) yang mencatat 29.4
- Namun, di sini model dilatih dengan 10B token, sementara GPT-3 dilatih dengan 300B token
Konfigurasi lingkungan minimum
- Memerlukan GPU (disarankan Lambda Labs)
- Panduan didasarkan pada Linux x86 64bit Ubuntu 22.04 dengan CUDA 12
- Setelah memasang miniconda, instal versi nightly PyTorch (opsional)
- Instal paket yang dibutuhkan untuk tokenizer
- Instal cuDNN untuk kecepatan (opsional)
- Instal MPI jika menggunakan banyak GPU (opsional)
- Pra-pemrosesan dataset FineWeb 10B token (~1 jam)
- Kompilasi llm.c (mixed precision, menggunakan cuDNN FlashAttention)
Menjalankan pelatihan
- Contoh perintah saat menggunakan satu GPU
- Saat menggunakan multi-GPU (8 buah), jalankan dengan mpirun
- Penjelasan argumen utama
- -i, -j : path data pelatihan/validasi
- -o : path penyimpanan log dan checkpoint
- -e : inisialisasi model (GPT-2 depth 12)
- -b : ukuran micro-batch (kurangi jika memori tidak cukup)
- -t : panjang sekuens maksimum
- -d : ukuran batch total (mengacu pada makalah GPT-3)
- -r : pengaturan Recompute (menghemat memori)
- -z : ZeRO-1 (sharding state optimizer)
- Pengaturan lain seperti weight decay, learning rate, periode checkpoint, dll.
Proses pelatihan
- Dengan 10B token pelatihan dan ukuran batch 0.5M, diperkirakan sekitar 20K step
- Berdasarkan GPU A100 40GB PCIe, waktu per step, MFU, dan throughput token akan ditampilkan
- Pada awal pelatihan ada gejala gradient exploding, tetapi diatasi dengan clipping
Visualisasi
- Disediakan notebook Jupyter untuk mem-parse file log dan memvisualisasikan kurva pelatihan
Tokenizer
- Diperlukan untuk mengubah token integer menjadi string
- Bisa dibuat dengan skrip PyTorch
Sampling
- Saat ini belum dioptimalkan untuk inferensi
- Dengan sedikit modifikasi kode, sampling unconditional/conditional dimungkinkan
Struktur kode
- Sebagian besar implementasi ada di file train_gpt2.cu
- 500 baris awal berisi pengaturan MPI, NCCL, cuDNN, cuBLAS, dll.
- 1500 baris berikutnya berisi forward/backward Transformer
- 1000 baris selanjutnya berisi implementasi model GPT-2
- 1000 baris terakhir berisi loop pelatihan, parsing argumen, dll.
Model 350M
- 10B token tidak cukup, sehingga digunakan 30B token
- Dengan 8X A100 80GB, memakan waktu 14 jam dan biaya sekitar $200
FAQ
- Apakah sampling bisa dilakukan?: Bisa, tetapi tidak efisien.
- Apakah bisa digunakan untuk chat?: Saat ini hanya mendukung pra-pelatihan, fine-tuning untuk chat belum didukung.
- Pelatihan terdistribusi multi-node: Bisa, tetapi belum diuji.
- Apakah bit-level deterministic?: Hampir deterministik, tetapi beberapa patch kernel diperlukan.
- Apakah pelatihan FP8 memungkinkan?: Saat ini dilatih dengan BF16, dukungan FP8 akan segera hadir.
- Apakah GPU non-NVIDIA didukung?: Saat ini hanya mendukung C/CUDA.
Pendapat GN⁺
- GPT-2 adalah model yang sangat penting sebagai titik awal LLM modern. Setelah itu, GPT-3 maupun LLM lain pada dasarnya tidak jauh berbeda dari GPT-2.
- Proyek ini memungkinkan siapa pun melatih sendiri model setingkat GPT-2 dengan biaya yang masuk akal. Ini tampaknya akan sangat membantu meningkatkan pemahaman tentang LLM.
- Namun, karena belum dioptimalkan untuk inferensi, pemanfaatannya dalam layanan nyata masih terbatas. Fine-tuning menjadi model percakapan juga belum didukung.
- Saat ini hanya GPU NVIDIA yang didukung, tetapi ke depan diharapkan dukungan untuk berbagai platform seperti AMD atau Apple Silicon.
- Proyek open source dengan tujuan serupa antara lain Megatron-LM, DeepSpeed, dan FairSeq. Masing-masing punya kelebihan dan kekurangan, jadi sebaiknya dipilih sesuai kebutuhan.
- Ini adalah proyek yang sangat menggembirakan dalam konteks menghidupkan ekosistem pengembangan LLM. Perkembangannya sangat layak dinantikan.
Belum ada komentar.