1 poin oleh GN⁺ 2 jam lalu | 1 komentar | Bagikan ke WhatsApp
  • Train Your Own LLM From Scratch adalah workshop praktik untuk menulis sendiri semua bagian dari pipeline pelatihan GPT sambil memahami apa yang dilakukan tiap komponen dan mengapa komponen itu diperlukan
  • Tujuannya adalah menghasilkan teks bergaya Shakespeare dengan model GPT yang dilatih dari nol di laptop, dan agar bisa selesai dalam satu sesi workshop, skalanya diperkecil menjadi model sekitar 10M parameter
  • Sementara nanoGPT bertujuan mereproduksi GPT-2 dengan 124M parameter, proyek ini dirancang dengan hanya menyisakan inti yang penting agar bisa dilatih di laptop dalam kurang dari 1 jam
  • Komponen yang ditulis sendiri mencakup Tokenizer, arsitektur model berbasis Transformer, loop pelatihan, dan generasi teks; pada akhirnya peserta akan menyelesaikan sendiri model.py, train.py, dan generate.py
  • Pengetahuan awal yang dibutuhkan cukup sebatas terbiasa membaca kode Python, tidak perlu pengalaman machine learning, dan memerlukan Python 3.12+
  • Lingkungan eksekusi mendukung laptop atau desktop Mac, Linux, dan Windows; pelatihan akan otomatis menggunakan MPS pada GPU Apple Silicon, CUDA pada GPU NVIDIA, atau CPU
  • Untuk instalasi lokal, alur yang direkomendasikan adalah menjalankan uv sync dengan uv; jika tidak memiliki lingkungan lokal, file dapat diunggah ke Google Colab lalu dijalankan dengan !python train.py
  • Workshop membahas secara berurutan tokenizer berbasis karakter, embedding, self-attention, LayerNorm, blok MLP, fungsi loss, AdamW, gradient clipping, penjadwalan learning rate, serta sampling temperature dan top-k
  • Arsitektur dasarnya mengubah teks masukan menjadi ID token berbasis karakter, melewatkannya melalui embedding token dan embedding posisi, lalu beberapa blok Transformer, sebelum menghasilkan logits untuk probabilitas token berikutnya
  • Konfigurasi model yang disediakan adalah Tiny sekitar 0.5M parameter dengan waktu pelatihan sekitar 5 menit pada M3 Pro, Small sekitar 4M dengan sekitar 20 menit, dan Medium sebagai nilai default sekitar 10M dengan waktu pelatihan sekitar 45 menit
  • Semua konfigurasi menggunakan tokenisasi berbasis karakter dengan vocab_size=65 dan block_size=256, serta disesuaikan untuk dataset kecil sekitar 1MB seperti Shakespeare
  • Tokenisasi BPE memiliki kosakata yang besar seperti 50,257 vocab pada GPT-2, sehingga pada dataset kecil sebagian besar bigram token terlalu jarang untuk mempelajari pola; materi juga membahas peralihan ke BPE untuk dataset yang lebih besar
  • Referensi utama yang diberikan mencakup nanoGPT, build-nanogpt video lecture, Karpathy's microgpt, nanochat, Attention Is All You Need (2017), GPT-2 paper (2019), dan TinyStories paper

1 komentar

 
GN⁺ 2 jam lalu
Opini Hacker News
  • Jika materi ini menarik, sangat direkomendasikan juga kelas CS336 dari Stanford. Kelas itu membahas kurikulum yang sama dengan jauh lebih mendalam, dan juga memperkenalkan intuisi teoretis seperti scaling laws serta sudut pandang sistem seperti optimisasi kernel/profiling
    Tentu saja, tugasnya harus dikerjakan sendiri: https://cs336.stanford.edu/

    • Tidak tahu bisa menonton kuliahnya di mana. Saya tidak melihat opsi kuliah
  • Sedikit promosi, ada seri notebook Jupyter yang menjelaskan cara kerja machine learning dari nol
    https://github.com/nickyreinert/DeepLearning-with-PyTorch-fr...
    Dan tentu saja juga membahas cara membangun LLM dari nol
    https://github.com/nickyreinert/basic-llm-with-pytorch/blob/...

  • Kebetulan saya baru mulai dengan repositori/buku/kursus Sebastian Raschka, Build a Large Language Model (From Scratch). Mungkin ini termasuk masalah yang menyenangkan: harus memilih materi belajar yang akan dipakai
    [0] https://github.com/rasbt/LLMs-from-scratch
    [1] https://www.manning.com/books/build-a-large-language-model-f...
    [2] https://magazine.sebastianraschka.com/p/coding-llms-from-the...

    • Saya sangat menikmati buku itu. Cocok untuk orang yang ingin memahami struktur internal yang sebenarnya dan melihat contoh kerja dari setiap perhitungan
  • Saya sudah melakukannya sejak hari saya lahir. Awalnya sulit, tapi makin lama makin membaik

    • Sebenarnya saya lebih banyak melatih model fisika, dan LLM hanya ditempelkan di atasnya
  • Saya pernah mencobanya dengan ULMFiT saat fast.ai masih relatif baru. Mungkin saat itu BERT adalah state of the art terbaru, dan strukturnya memungkinkan pelatihan model dasar lalu spesialisasi dengan head
    Model dasarnya memakai seluruh Wikipedia, lalu ditambah beberapa GB tweet yang dikumpulkan lewat firehose. Saya bisa memakai lab dengan 20 komputer untuk pengembangan game, sepertinya kira-kira setara GTX 2080. Satu kali pelatihan pada Wikipedia yang sudah ditokenisasi memakan waktu sekitar setengah hari, jadi saya menjalankan konfigurasi berbeda di tiap komputer untuk hyperparameter tuning dan keesokan harinya memakai hasil terbaik sebagai titik awal. Selalu menyenangkan datang ke kantor pagi-pagi untuk melihat hasilnya
    Engineering-nya mengerikan dan serba dadakan, tapi saya belajar banyak. Hasilnya lumayan, saya melakukan klasifikasi tweet, tetapi saya jadi punya gambaran tentang betapa banyak tenaga GPU dan tantangan engineering yang dibutuhkan kalau ingin mengerjakannya dengan serius. Saya belum sepenuhnya memahami potensi generatifnya, tetapi saya sempat tertawa cukup lama melihat tweet yang saya buat hanya karena penasaran

  • Ini terlihat seperti hampir menyalin persis video Andrej Karpathy ini(https://youtu.be/kCc8FmEb1nY) ke bentuk tulisan, atau saya salah lihat?

    • Halaman itu menjelaskan hubungannya dengan nanoGPT
      Katanya kurang lebih, “nanoGPT bertujuan mereproduksi GPT-2 (124 juta parameter) dan mencakup banyak hal. Proyek ini menyisakan inti utamanya saja, lalu mengecilkannya menjadi model sekitar 10 juta parameter yang bisa dilatih di laptop dalam waktu 1 jam…”
    • Ya, Anda memang salah lihat
  • Sebagai tambahan konteks, dia adalah salah satu developer MLX dan peneliti machine learning yang mumpuni

    • Penasaran sumbernya dari mana. Sepertinya itu tidak benar
  • Tertulis, “workshop praktik menulis sendiri setiap bagian dari pipeline pelatihan GPT sambil memahami apa yang dilakukan tiap komponen dan mengapa itu diperlukan”, tetapi karena ada dependensi torch, tampaknya tensor dan backpropagation tidak diimplementasikan sendiri melainkan diambil begitu saja. Tetap saja, apakah ini bisa dibilang dibuat “dari nol”?
    Saya pernah mencoba hal serupa dengan Rust dan juga bantuan AI, tetapi membatasi diri agar tanpa dependensi dan hanya memakai standard library. Akibatnya saya harus mengimplementasikan jauh lebih banyak hal seperti desain tensor, konsep kernel, optimizer gradient descent sederhana, parser JSON buatan sendiri, abstraksi paralelisme data CPU mirip rayon, dan sebagainya. Cukup menyenangkan saat semuanya tersambung dan akhirnya berjalan. Sangat lambat, tetapi memang berfungsi

  • Saya tidak yakin memakai PyTorch masih bisa disebut “dari nol”. Bukan berarti saya mendorong ke ekstrem seperti harus menghindari sampai standard library, tetapi begitu Anda mengambil library yang memang sangat pas untuk tujuan itu, rasanya sudah tidak seperti “dari nol” lagi

    • Ada benarnya, tetapi bagi kebanyakan orang di bidang machine learning, PyTorch pada praktiknya adalah standard library
  • Mungkin lebih tepat disebut “melatih LM dari nol”. Saya ragu ada mesin yang cukup untuk membuat model sebesar yang layak disebut “Large”

    • Kalau punya kartu kredit dengan limit biasa, Anda bisa menyewa sumber daya yang cukup dari penyedia neocloud seperti HuggingFace atau Mistral Forge
      Bukan berarti itu layak dilakukan, tetapi untuk belajar Anda tidak perlu membeli GPU sendiri
    • Bahkan dengan satu 3090 saja, Anda bisa melatih model 1,6 miliar parameter dari awal sampai akhir. Itu model yang cukup besar
    • Saya juga punya setengah terabyte RAM! Memang DDR4, tapi tetap saja RAM
      Ada juga 48 core prosesor! Memang tidak mendukung AVX512, tapi tetap bisa berhitung
      Seharusnya cukup untuk melatih LLM. Atau setidaknya keluarga kami mungkin bisa… anak saya mungkin harus mewarisi proyek itu dan melanjutkannya
      Serius, menurut saya Anda entah melewatkan inti pembahasannya, terlalu mengada-ada mencari celah, atau memang salah. Ini soal mempelajari konsepnya, dan sisanya sebagian besar hanya hal sekunder
      Kalau dilihat dari sisi bahwa ini terlalu mengada-ada atau salah, apa sebenarnya baseline terdokumentasi untuk menyebut language model sebagai “large”? GPT-2 dulu dan sekarang tetap disebut large language model, dan jumlah parameternya 1,5 miliar. Sekarang GPU konsumen yang bisa melatih ukuran seperti itu bisa didapat dengan harga sekitar 400 dolar