- rasbt/LLMs-from-scratch adalah repositori berisi kode untuk mengembangkan, melakukan pretraining, dan fine-tuning LLM mirip GPT, serta merupakan repositori kode resmi untuk buku Manning Build a Large Language Model (From Scratch)
- Metode pembelajarannya disusun sebagai proses membuat model kecil tetapi berfungsi dari nol untuk tujuan edukasi, mengikuti alur yang mirip dengan pendekatan membuat model fondasi berskala besar di balik ChatGPT
- Isinya menyediakan kode dan notebook per bab, mulai dari pemrosesan data teks, mekanisme attention, implementasi GPT, pretraining dengan data tanpa label, fine-tuning untuk klasifikasi teks, hingga fine-tuning instruction-following
- Kode pada bab-bab utama dirancang agar dapat dijalankan dalam waktu yang wajar di laptop biasa, memanfaatkan GPU secara otomatis jika tersedia, dan diimplementasikan dengan PyTorch tanpa library LLM eksternal
- Lampiran dan materi bonus memperluas cakupan hingga LoRA, KV Cache, MoE, implementasi keluarga Llama/Qwen/Gemma, evaluasi, DPO, dan contoh UI, sehingga proses belajar LLM dapat diperluas secara praktis
Tujuan repositori dan hubungannya dengan buku
- rasbt/LLMs-from-scratch adalah repositori kode untuk mengimplementasikan LLM mirip GPT dari nol
- Disediakan sebagai repositori kode resmi untuk buku Manning Build a Large Language Model (From Scratch)
- Buku ini memiliki struktur untuk memahami cara kerja internal LLM melalui pengodean langkah demi langkah
- Penjelasannya mencakup teks, diagram, dan contoh
- Pembaca mengembangkan dan melatih sendiri model kecil tetapi berfungsi untuk tujuan edukasi
- Repositori ini juga mencakup kode untuk memuat bobot model pretrained yang lebih besar dan melakukan fine-tuning
- Informasi buku:
Instalasi dan penggunaan kode
- Repositori dapat diperoleh dengan mengunduh ZIP atau menggunakan
git clone
git clone --depth 1 https://github.com/rasbt/LLMs-from-scratch.git
- Jika menerima bundel kode dari situs web Manning, pengguna diarahkan untuk memeriksa pembaruan terbaru di repositori resmi GitHub
- Instalasi Python dan paket, serta pengaturan environment kode, dibahas di setup/README.md
- Dokumen pemecahan masalah disediakan sebagai Troubleshooting Guide
Alur pembelajaran per bab
- Buku dan repositori membagi implementasi LLM ke dalam kurikulum bertahap
- Struktur bab utama:
- Ch 1: Memahami LLM, tanpa kode
- Ch 2: Menangani data teks
- Ch 3: Mengimplementasikan mekanisme attention
- Ch 4: Mengimplementasikan model GPT dari nol
- Ch 5: Pretraining dengan data tanpa label
- Ch 6: Fine-tuning untuk klasifikasi teks
- Ch 7: Fine-tuning instruction-following
- Lampiran mencakup pengantar PyTorch, referensi, jawaban latihan, peningkatan training loop, dan fine-tuning hemat parameter berbasis LoRA
Prasyarat dan environment eksekusi
- Prasyarat terpenting adalah dasar-dasar pemrograman Python
- Pengalaman dengan neural network deep learning dapat membuat sebagian konsep terasa lebih familier
- Kode diimplementasikan dari nol dengan PyTorch tanpa library LLM eksternal
- Mahir PyTorch tidak wajib
- Pengetahuan dasar PyTorch akan membantu
- Appendix A menyediakan pengantar singkat PyTorch
- Kode pada bab-bab utama dirancang agar dapat dijalankan dalam waktu yang wajar di laptop biasa
- Tidak diperlukan hardware khusus, dan GPU akan digunakan secara otomatis jika tersedia
Kuliah video dan buku lanjutan
- Manning menyediakan kuliah video pendamping berdurasi 17 jam 15 menit yang mengikuti struktur buku
- Mencerminkan struktur setiap bab dan bagian dalam buku
- Dapat digunakan sebagai alternatif mandiri atau materi pelengkap untuk mengikuti coding
- Buku yang bersifat lanjutan, Build A Reasoning Model (From Scratch), juga diperkenalkan
- Buku ini independen, tetapi dapat dilihat sebagai kelanjutan dari Build A Large Language Model (From Scratch)
- Dimulai dari model pretrained dan mengimplementasikan pendekatan untuk meningkatkan kemampuan penalaran
- Pendekatan yang dicakup: inference-time scaling, reinforcement learning, distillation
- Repositori terkait: rasbt/reasoning-from-scratch
Latihan dan materi bonus
- Setiap bab mencakup beberapa latihan
- Jawaban diringkas di Appendix C, dan notebook kode yang sesuai ada di folder masing-masing bab
- PDF gratis 170 halaman Test Yourself On Build a Large Language Model (From Scratch) dapat diperoleh dari situs web Manning
- Mencakup sekitar 30 kuis per bab beserta jawabannya
-
Topik bonus utama
- Setup:
- Tips pengaturan Python
- Instalasi paket dan library
- Pengaturan environment Docker
- Ch 2:
- Mengimplementasikan tokenizer BPE dari nol
- Membandingkan beberapa implementasi BPE
- Perbedaan antara embedding layer dan linear layer
- Intuisi dataloader dengan angka sederhana
- Ch 3:
- Perbandingan implementasi multi-head attention yang efisien
- Memahami PyTorch buffers
- Ch 4:
- Analisis FLOPs
- KV Cache
- Grouped-Query Attention, Multi-Head Latent Attention, Sliding Window Attention
- Gated DeltaNet, DeepSeek Sparse Attention, Cross-Layer KV Sharing
- Mixture-of-Experts
- Ch 5:
- Cara alternatif memuat bobot
- Pretraining pada dataset Project Gutenberg
- Peningkatan training loop
- Optimasi hiperparameter
- UI untuk berinteraksi dengan LLM pretrained
- Mengonversi GPT menjadi Llama
- Pemuatan bobot model yang hemat memori
- Ekstensi tokenizer Tiktoken BPE
- Tips performa PyTorch untuk pelatihan LLM yang cepat
- Implementasi Llama 3.2, Qwen3, Gemma 3, Olmo 3, Tiny Aya, Qwen3.5, Gemma 4
- Ch 6:
- Eksperimen tambahan untuk fine-tuning layer lain dan model yang lebih besar
- Fine-tuning klasifikasi pada dataset 50k ulasan film IMDb
- UI klasifikasi spam berbasis GPT
- Ch 7:
- Utilitas dataset untuk deteksi near-duplicate dan pembuatan item kalimat pasif
- Evaluasi respons instruksi menggunakan OpenAI API dan Ollama
- Pembuatan dan peningkatan dataset fine-tuning instruksi
- Pembuatan preference dataset dengan Llama 3.1 70B dan Ollama
- Mengimplementasikan alignment LLM dengan DPO
- UI model GPT yang telah di-fine-tuning untuk instruksi
Kontribusi dan sitasi
- Masukan dan pertanyaan diterima melalui Manning Forum atau GitHub Discussions
- Karena ini adalah repositori kode yang berpasangan dengan buku cetak, saat ini kontribusi yang memperluas isi main chapter code tidak dapat diterima
- Pembatasan ini bertujuan agar tidak menciptakan perbedaan antara buku fisik dan kode
- Jika buku atau kode ini berguna untuk penelitian, sitasi dianjurkan
- Sitasi bergaya Chicago dan entri BibTeX disediakan
1 komentar
Komentar Hacker News
Sejauh ini, panduan fine-tuning tampaknya menjadi materi terbaik
https://ravinkumar.com/GenAiGuidebook/language_models/finetu...
LLM adalah topik penting, tetapi ada banyak video dan tulisan yang membahasnya sekilas saja. Menurut saya, mengodekan LLM dari dasar akan membuat banyak konsep menjadi jelas
Secara sekunder, tujuannya juga membantu orang yang membutuhkannya untuk membuat LLM mereka sendiri. Di buku ini seluruh pipeline, termasuk prapelatihan dan fine-tuning, dikodekan, tetapi karena secara finansial prapelatihan LLM dianggap tidak realistis, saya juga akan menunjukkan cara memuat bobot prapelatihan
Dengan menggunakan LLM yang mirip GPT-2, semuanya diimplementasikan dari awal, dan bobot dapat dimuat mulai dari model 124M yang berjalan di notebook hingga model 1558M yang berjalan di GPU kecil. Dalam praktiknya orang mungkin akan memakai framework seperti HF transformers atau axolotl, tetapi saya berharap pendekatan implementasi langsung seperti ini membuat prosesnya terasa tidak terlalu seperti black box
import torch, sepertinya itu bukan benar-benar implementasi dari awal :-)Tidak ada orang yang bekerja di bidang ini yang menghitung turunan model seperti ini secara manual. Berpikir dari sudut pandang differentiable programming adalah asumsi dasar, dan dalam kasus ini cukup layak disebut “dari awal”
Setiap kali melihat komentar seperti ini, saya curiga orang tersebut tidak benar-benar memahami apa yang terjadi di dalamnya atau bagaimana machine learning modern bekerja
[1] https://karpathy.ai/zero-to-hero.html
Jauh lebih mudah diakses untuk developer umum, dan tidak mengasumsikan latar belakang matematika. Ini titik awal yang bagus, sehingga setelahnya materi serupa lain mulai lebih mudah dipahami
Membuat materi edukasi membutuhkan kerja yang luar biasa banyak, dan seberapa pun suksesnya buku ini, jika rasbt menghitung pendapatan dibandingkan waktu yang dicurahkan, tarif per jamnya tidak akan masuk akal
Banyak orang memahami topik ini, tetapi apa yang mereka lakukan dengan pengetahuan itu? Mereka menyimpannya sendiri, pergi ke OpenAI, menjaga pengetahuan itu tetap tertutup, dan menghasilkan uang jauh lebih banyak
Kalau kita ingin hidup di dunia tempat pengetahuan seperti ini terbuka, menurut saya setidaknya kita sebaiknya menahan diri untuk tidak mengeluh secara publik tentang buku seharga kira-kira satu makan malam yang layak
Tujuannya adalah membuat sesuatu belajar mendarat, seperti pendarat bulan. Sederhananya, mulai dari ketinggian 100 kaki, memberi dorongan ke satu arah, lalu terus mencoba sampai kawah yang dibuat semakin kecil
Setelah itu saya ingin mengembangkannya dengan menambahkan variabel seperti gerakan horizontal, memasukkan pendorong horizontal, lalu kemudian menghapus pendorong horizontal dan membuat pendarat bisa berotasi
Saya sama sekali tidak tahu harus mulai dari mana, dan karena buku ini terlihat seperti machine learning “arus utama”, saya penasaran apakah ini akan membantu
Library gymnasium[1] di Python punya environment pendarat bulan, jadi sebaiknya dijadikan referensi. Itu environment yang paling banyak saya fokuskan saat belajar, dan saya pernah menyelesaikannya dengan beberapa cara
Anda juga bisa melihat notebook saya2 yang belum lama ini saya pakai saat mengimplementasikan Soft Actor Critic dengan PyTorch. Itu bukan materi yang bagus untuk mengajar, tetapi mungkin ada sesuatu yang bisa Anda ambil
[0]: https://www.manning.com/books/grokking-deep-reinforcement-le...
[1]: https://gymnasium.farama.org/environments/box2d/
Hal seperti AlphaGo pada akhirnya bisa dilihat lebih sebagai pekerjaan yang menggunakan deep neural network sebagai input untuk teknik reinforcement learning klasik
Reinforcement Learning: An Introduction karya Sutton dan Barto secara luas dianggap sebagai buku pengantar yang definitif untuk topik ini
Ada juga buku machine learning/deep learning umum lain yang menulis bab pengantar reinforcement learning cukup panjang (https://github.com/rasbt/machine-learning-book/tree/main/ch1...). Namun untuk kasus ini, seperti yang dikatakan orang lain, buku khusus reinforcement learning lebih tepat
https://www.ida.liu.se/~TDDC17/info/labs/rl.en.shtml
[0] https://www.youtube.com/watch?v=kCc8FmEb1nY
Alih-alih LLM tingkat karakter, buku ini mengimplementasikan LLM tingkat kata yang sebenarnya, lalu menunjukkan pemuatan bobot prapelatihan setelah prapelatihan, dan melakukan instruction fine-tuning pada LLM tersebut
Buku ini juga mengodekan proses alignment untuk LLM yang sudah di-instruction-fine-tuning, dan menunjukkan fine-tuning untuk tugas klasifikasi. Ada banyak gambar di seluruh buku, dan Bab 3 saja punya 26 gambar :)
Videonya juga terlihat bagus. Karena durasinya 2 jam, sepertinya cocok sebagai materi pelengkap pengantar yang solid. Membaca bukunya mungkin akan memakan waktu sekitar 10 kali lipat dari itu
Saya sendiri menontonnya berkali-kali agar bisa memahami sebagian besarnya dengan baik
Tentu saja harus sangat paham PyTorch, dan juga harus memahami perkalian matriks, backpropagation, dan sebagainya. Bicaranya juga sangat cepat
Misalnya, saya tahu attention digunakan di berbagai model, dan Transformer juga digunakan di luar model bahasa
Saya penasaran apakah dengan membaca buku ini saya bisa memahami attention dan Transformer dengan cukup baik untuk menggunakannya juga di luar model bahasa
Perbedaannya, pada LLM teks diubah menjadi token, lalu token itu diubah menjadi embedding vektor yang masuk ke LLM. Dalam Vision Transformer, alih-alih melihat gambar sebagai token, patch gambar digunakan sebagai token, lalu diubah menjadi embedding vektor
Baik teks maupun vision menggunakan mekanisme attention yang sama, dan dalam kedua kasus menerima embedding vektor sebagai input
(*Bab 3 sudah saya kirim minggu lalu dan akan segera naik ke MEAP. Sementara itu, kodenya bisa dilihat bersama catatan di sini: https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01...)