8 poin oleh GN⁺ 2024-01-28 | 1 komentar | Bagikan ke WhatsApp
  • 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

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

 
GN⁺ 2024-01-28
Komentar Hacker News
  • Saya sedang menulis buku panduan sebagai materi tambahan, tetapi masih diselesaikan dalam beberapa tahap
    Sejauh ini, panduan fine-tuning tampaknya menjadi materi terbaik
    https://ravinkumar.com/GenAiGuidebook/language_models/finetu...
  • Kelihatannya benar-benar keren. Saya penasaran apakah tujuan utamanya adalah meningkatkan pemahaman dan menghilangkan kesan mistis, atau membuat orang bisa membangun sendiri model kecil yang disesuaikan dengan kebutuhan mereka
    • Motivasi utamanya lebih dekat ke tujuan edukasi, yaitu membantu orang memahami bagaimana LLM bekerja dengan membuatnya sendiri
      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
  • Menulis buku teknis secara terbuka pasti menegangkan sampai tingkat yang sulit dibayangkan, jadi saya memberi apresiasi kepada penulisnya
    • Sampai taraf tertentu memang begitu, tetapi di saat yang sama ini juga cukup memotivasi :)
    • Justru risikonya mungkin lebih kecil. Karena Anda bisa mendapatkan manfaat dari menulis buku tanpa benar-benar menyelesaikan bukunya. Idealnya, mungkin bahkan tidak perlu menulis jauh lebih dari bab 1
  • Kalau contoh kode pertamanya adalah import torch, sepertinya itu bukan benar-benar implementasi dari awal :-)
    • Memang begitu, tetapi kalau tidak, penjelasannya akan menjadi bertele-tele dan sulit dibaca. Meski begitu, buku ini menunjukkan cara mengimplementasikan LayerNorm, Softmax, layer Linear, GeLU, dan lain-lain tanpa memakai versi torch yang sudah dipaketkan
    • Berkat diferensiasi otomatis, kita bisa membuat model kompleks seperti Transformer. Selain data yang sangat besar dan sumber daya komputasi yang masif, ini bisa dianggap sebagai salah satu alasan inti yang memungkinkan revolusi AI saat ini
      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
    • Menurut saya, implementasi autograd tidak terlalu relevan dan berada di luar cakupan untuk mempelajari cara kerja Transformer. Saya bahkan tidak bisa membayangkan menulis gradien Transformer secara manual
  • Saya langsung membuka GitHub karena mengira ini materi gratis. Saya menghargai karya penulisnya, tetapi penasaran apakah ada materi gratis yang layak direkomendasikan untuk alur implementasi dari awal
    • Neural Networks: Zero to Hero dari Andrej Karpathy[1]
      [1] https://karpathy.ai/zero-to-hero.html
    • Untuk mesin inferensi GPT-2 yang dibuat dengan NumPy, ada https://jaykmody.com/blog/gpt-from-scratch/, lalu untuk tambahan implementasi KV cache, lihat https://www.dipkumar.dev/becoming-the-unbeatable/posts/gpt-k...
    • Saya akan merekomendasikan https://course.fast.ai/
      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
    • Sejujurnya saya sulit memahami mengapa orang yang bekerja di bidang AI merasa $50 saja terlalu mahal untuk mendapatkan wawasan yang lebih dalam tentang topik ini
      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
    • Saya sudah menambahkan catatan penjelasan ke notebook Jupyter, jadi saya berharap repositori saja juga bisa dibaca secara mandiri
  • Saya penasaran apakah dengan isi buku ini kita bisa mempelajari reinforcement learning
    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
    • Saya menikmati "Grokking Deep Reinforcement Learning"[0]. Tidak ada pembahasan Transformer di dalamnya
      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/
  • Reinforcement learning adalah bidang riset yang sepenuhnya terpisah dari LLM. Memang sering terlihat sebagai bagian dari machine learning, dan buku klasik Tom Mitchell, Machine Learning, juga punya bagian yang bagus tentang Q-learning, tetapi hubungannya tidak banyak dengan pekerjaan machine learning modern
    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
  • Untuk kasus itu, saya akan merekomendasikan buku reinforcement learning khusus. Bagian reinforcement learning dalam LLM sangat spesifik untuk LLM, dan pengetahuan latar yang dibahas juga hanya bagian yang benar-benar relevan
    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
  • Coba OpenAI Spinning Up juga bagus: https://spinningup.openai.com/en/latest/
  • Praktik Q-learning dalam kursus ini membahas persis hal seperti itu
    https://www.ida.liu.se/~TDDC17/info/labs/rl.en.shtml
  • Saya penasaran bagaimana perbandingannya dengan video Karpathy[0]. Saya ingin mulai mempelajari LLM, dan sedang mencari sumber terbaik untuk mendapatkan pemahaman di level itu
    [0] https://www.youtube.com/watch?v=kCc8FmEb1nY
    • Saya belum menonton videonya sampai selesai, tetapi berdasarkan penelusuran sekilas, bukunya punya beberapa perbedaan
      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
    • Sulit dipahami kalau belum mengetahui sebagian besar isinya
      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
  • Saya tidak tertarik pada model bahasa itu sendiri, tetapi ada teknik-teknik yang masuk ke model bahasa yang ingin saya gunakan di tempat lain
    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
    • Mekanisme attention yang diimplementasikan dalam buku ini memang spesifik untuk LLM dalam hal input teks, tetapi pada dasarnya ini adalah mekanisme attention yang sama dengan yang digunakan dalam Vision Transformer
      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...)
  • Arsitektur model itu sendiri tidak terlalu rumit, terutama jika memakai torch. Keseluruhan prosesnya juga cukup lurus, jadi terlihat seperti proyek yang realistis dan layak dicoba