12 poin oleh GN⁺ 2024-05-29 | Belum ada komentar. | Bagikan ke WhatsApp
  • 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.

Belum ada komentar.