- rasbt/LLMs-from-scratch là kho mã chứa code để xây dựng, tiền huấn luyện, tinh chỉnh một LLM tương tự GPT, đồng thời là kho mã chính thức cho cuốn sách Manning Build a Large Language Model (From Scratch)
- Cách học được tổ chức như một quá trình tạo ra một mô hình nhỏ nhưng hoạt động được từ đầu nhằm mục đích giáo dục, theo luồng tiếp cận tương tự cách xây dựng các mô hình nền tảng quy mô lớn đứng sau ChatGPT
- Nội dung cung cấp mã và notebook theo từng chương, từ xử lý dữ liệu văn bản, cơ chế attention, triển khai GPT, tiền huấn luyện với dữ liệu không gán nhãn, tinh chỉnh cho phân loại văn bản, đến tinh chỉnh theo chỉ dẫn
- Mã của các chương chính được thiết kế để chạy trong thời gian hợp lý trên laptop thông thường, tự động tận dụng GPU khi có thể, và được triển khai bằng PyTorch mà không cần thư viện LLM bên ngoài
- Phụ lục và tài liệu bonus mở rộng sang LoRA, KV Cache, MoE, triển khai họ Llama/Qwen/Gemma, đánh giá, DPO và cả ví dụ UI, giúp mở rộng quá trình học LLM theo hướng thực hành
Mục đích của kho mã và mối liên hệ với cuốn sách
- rasbt/LLMs-from-scratch là kho mã để triển khai một LLM tương tự GPT từ con số 0
- Đây là kho mã chính thức của cuốn sách Manning Build a Large Language Model (From Scratch)
- Cuốn sách được xây dựng để giúp hiểu cách LLM hoạt động bên trong thông qua việc viết code từng bước
- Phần giải thích bao gồm văn bản, sơ đồ và ví dụ
- Người học sẽ trực tiếp phát triển và huấn luyện một mô hình nhỏ nhưng hoạt động được, phục vụ mục đích giáo dục
- Kho mã cũng bao gồm code để nạp trọng số mô hình tiền huấn luyện lớn hơn rồi tinh chỉnh
- Thông tin sách:
Cài đặt và sử dụng mã nguồn
- Có thể tải kho mã qua ZIP hoặc bằng
git clone
git clone --depth 1 https://github.com/rasbt/LLMs-from-scratch.git
- Nếu nhận gói code từ website Manning, tài liệu hướng dẫn khuyên kiểm tra các bản cập nhật mới nhất trên kho chính thức GitHub
- Việc cài đặt Python, package và cấu hình môi trường chạy code được trình bày tại setup/README.md
- Tài liệu xử lý sự cố được cung cấp tại Troubleshooting Guide
Lộ trình học theo từng chương
- Cuốn sách và kho mã chia việc triển khai LLM thành một giáo trình từng bước
- Cấu trúc các chương chính:
- Ch 1: Hiểu về LLM, không có code
- Ch 2: Xử lý dữ liệu văn bản
- Ch 3: Triển khai cơ chế attention
- Ch 4: Triển khai mô hình GPT từ con số 0
- Ch 5: Tiền huấn luyện với dữ liệu không gán nhãn
- Ch 6: Tinh chỉnh cho phân loại văn bản
- Ch 7: Tinh chỉnh theo chỉ dẫn
- Phụ lục bao gồm giới thiệu về PyTorch, tài liệu tham khảo, lời giải bài tập, cải thiện vòng lặp huấn luyện và tinh chỉnh hiệu quả tham số dựa trên LoRA
Kiến thức nền và môi trường chạy
- Kiến thức nền quan trọng nhất là cơ bản về lập trình Python
- Nếu có kinh nghiệm với mạng nơ-ron deep learning, một số khái niệm sẽ quen thuộc hơn
- Mã được triển khai hoàn toàn từ đầu bằng PyTorch mà không dùng thư viện LLM bên ngoài
- Không bắt buộc phải thành thạo PyTorch
- Kiến thức cơ bản về PyTorch sẽ hữu ích
- Appendix A cung cấp phần giới thiệu ngắn gọn về PyTorch
- Mã của các chương chính được thiết kế để chạy trong thời gian hợp lý trên laptop thông thường
- Không cần phần cứng chuyên dụng; nếu có GPU thì sẽ tự động sử dụng
Video khóa học và cuốn sách tiếp theo
- Manning cũng có khóa video đi kèm dài 17 giờ 15 phút đi theo cấu trúc của cuốn sách
- Phản ánh cấu trúc chương và mục của sách
- Có thể dùng như một lựa chọn độc lập hoặc tài liệu bổ sung để vừa học vừa code theo
- Bài viết cũng giới thiệu cuốn sách tiếp theo Build A Reasoning Model (From Scratch)
- Đây là một cuốn sách độc lập nhưng có thể xem là phần tiếp nối của Build A Large Language Model (From Scratch)
- Bắt đầu từ mô hình tiền huấn luyện và triển khai các cách tiếp cận nhằm cải thiện năng lực suy luận
- Các hướng tiếp cận gồm: inference-time scaling, reinforcement learning, distillation
- Kho mã liên quan: rasbt/reasoning-from-scratch
Bài tập và tài liệu bonus
- Mỗi chương đều có nhiều bài tập
- Lời giải được tóm tắt trong Appendix C, còn notebook code tương ứng nằm trong thư mục của từng chương
- Có thể tải miễn phí bản PDF 170 trang Test Yourself On Build a Large Language Model (From Scratch) từ website Manning
- Bao gồm khoảng 30 câu hỏi trắc nghiệm theo từng chương cùng đáp án
-
Các chủ đề bonus chính
- Setup:
- Mẹo thiết lập Python
- Cài đặt package và thư viện
- Cấu hình môi trường Docker
- Ch 2:
- Triển khai tokenizer BPE từ đầu
- So sánh nhiều cách triển khai BPE
- Sự khác biệt giữa embedding layer và linear layer
- Trực giác về dataloader bằng các con số đơn giản
- Ch 3:
- So sánh các cách triển khai multi-head attention hiệu quả
- Hiểu về PyTorch buffers
- Ch 4:
- Phân tích 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:
- Các cách nạp trọng số thay thế
- Tiền huấn luyện trên bộ dữ liệu Project Gutenberg
- Cải thiện vòng lặp huấn luyện
- Tối ưu siêu tham số
- UI để tương tác với LLM tiền huấn luyện
- Chuyển GPT sang Llama
- Nạp trọng số mô hình theo cách tiết kiệm bộ nhớ
- Mở rộng tokenizer BPE của Tiktoken
- Mẹo hiệu năng PyTorch để huấn luyện LLM nhanh hơn
- Triển khai Llama 3.2, Qwen3, Gemma 3, Olmo 3, Tiny Aya, Qwen3.5, Gemma 4
- Ch 6:
- Thử nghiệm bổ sung với việc tinh chỉnh các layer khác và các mô hình lớn hơn
- Tinh chỉnh phân loại trên bộ dữ liệu 50k đánh giá phim IMDb
- UI cho bộ phân loại spam dựa trên GPT
- Ch 7:
- Tiện ích dataset để phát hiện gần trùng lặp và tạo mục ở thể bị động
- Đánh giá phản hồi chỉ dẫn bằng OpenAI API và Ollama
- Tạo và cải thiện dataset tinh chỉnh theo chỉ dẫn
- Tạo preference dataset bằng Llama 3.1 70B và Ollama
- Triển khai căn chỉnh LLM bằng DPO
- UI cho mô hình GPT đã tinh chỉnh theo chỉ dẫn
Đóng góp và trích dẫn
- Có thể gửi phản hồi và câu hỏi qua Manning Forum hoặc GitHub Discussions
- Vì đây là kho mã đi kèm với sách in, hiện tại dự án không thể nhận các đóng góp mở rộng nội dung của main chapter code
- Mục tiêu của giới hạn này là tránh tạo ra khác biệt giữa sách giấy và mã nguồn
- Nếu cuốn sách hoặc mã nguồn hữu ích cho nghiên cứu, tác giả khuyến nghị trích dẫn
- Có cung cấp trích dẫn theo chuẩn Chicago và mục BibTeX
1 bình luận
Ý kiến trên Hacker News
Cho đến nay, hướng dẫn fine-tuning có vẻ là tài liệu tốt nhất
https://ravinkumar.com/GenAiGuidebook/language_models/finetu...
LLM là một chủ đề quan trọng, nhưng có nhiều video và bài viết chỉ lướt qua. Tôi nghĩ việc code một LLM từ nền tảng sẽ làm rõ rất nhiều khái niệm
Mục tiêu phụ cũng là giúp những ai cần có thể tạo LLM của riêng mình. Trong sách, tôi code toàn bộ pipeline, bao gồm pretraining và fine-tuning, nhưng vì xét về tài chính thì pretrain một LLM là không thực tế, nên tôi cũng sẽ trình bày cách tải trọng số đã pretrain
Tôi dùng một LLM tương tự GPT-2 để triển khai mọi thứ từ đầu, và cho phép tải trọng số từ mô hình 124M chạy được trên laptop đến mô hình 1558M chạy trên GPU nhỏ. Trong thực tế có lẽ người ta sẽ dùng các framework như HF transformers hoặc axolotl, nhưng tôi hy vọng cách tự triển khai này sẽ khiến quy trình bớt giống một hộp đen hơn
import torch, thì có vẻ không hoàn toàn là triển khai từ đầu nhỉ :-)Không ai làm trong lĩnh vực này lại tính đạo hàm của các mô hình như vậy bằng tay. Tư duy theo góc nhìn lập trình khả vi là tiền đề cơ bản, và trong trường hợp này có thể xem là đủ “từ đầu”
Mỗi lần thấy những bình luận như vậy, tôi lại nghi ngờ rằng người viết không thật sự hiểu bên trong đang diễn ra điều gì, hoặc machine learning hiện đại vận hành ra sao
[1] https://karpathy.ai/zero-to-hero.html
Dễ tiếp cận hơn nhiều với lập trình viên nói chung và không giả định nền tảng toán học. Đây là điểm khởi đầu tốt, sau đó các tài liệu tương tự khác sẽ bắt đầu dễ hiểu hơn
Việc tạo tài liệu giáo dục tốn một lượng công sức vô lý, và dù cuốn sách này có thành công đến đâu, nếu rasbt tính thu nhập theo thời gian bỏ ra thì mức theo giờ cũng sẽ chẳng hợp lý
Có nhiều người hiểu chủ đề này, nhưng họ đã làm gì với kiến thức đó? Họ giữ cho riêng mình, vào OpenAI và kiếm nhiều tiền hơn rất nhiều bằng cách giữ kiến thức không công khai
Nếu muốn sống trong một thế giới nơi kiến thức như vậy được mở ra, tôi nghĩ ít nhất cũng nên tránh công khai phàn nàn về một cuốn sách có giá tương đương một bữa tối ổn
Mục tiêu là khiến một thứ gì đó học cách hạ cánh, giống như tàu đổ bộ Mặt Trăng. Đơn giản là bắt đầu ở độ cao 100 feet, tạo lực đẩy theo một hướng và cứ thử tiếp cho đến khi tạo ra ít miệng hố hơn
Sau đó tôi muốn mở rộng bằng cách thêm các biến như di chuyển ngang, thêm động cơ đẩy ngang, rồi sau đó loại bỏ động cơ đẩy ngang và cho phép tàu đổ bộ xoay
Tôi hoàn toàn không biết nên bắt đầu từ đâu, và vì cuốn sách này trông giống machine learning “chính thống” nên tôi thắc mắc liệu nó có giúp ích không
Thư viện gymnasium[1] của Python có môi trường tàu đổ bộ Mặt Trăng, bạn nên tham khảo. Đó là môi trường tôi tập trung nhiều nhất khi học, và tôi đã giải nó theo vài cách
Bạn cũng có thể xem notebook của tôi2 viết khi triển khai Soft Actor Critic bằng PyTorch cách đây không lâu. Nó không phải tài liệu tốt để giảng dạy, nhưng có thể bạn vẫn rút ra được gì đó
[0]: https://www.manning.com/books/grokking-deep-reinforcement-le...
[1]: https://gymnasium.farama.org/environments/box2d/
Ngay cả những thứ như AlphaGo rốt cuộc cũng có thể xem gần hơn là việc dùng mạng nơ-ron sâu làm đầu vào cho các kỹ thuật học tăng cường cổ điển
Reinforcement Learning: An Introduction của Sutton và Barto được xem rộng rãi là sách nhập môn chuẩn mực về chủ đề này
Có những sách machine learning/deep learning tổng quát khác viết khá dài chương nhập môn về học tăng cường (https://github.com/rasbt/machine-learning-book/tree/main/ch1...). Dù vậy, trong trường hợp này, như những người khác đã nói, một cuốn sách chuyên về học tăng cường sẽ phù hợp hơn
https://www.ida.liu.se/~TDDC17/info/labs/rl.en.shtml
[0] https://www.youtube.com/watch?v=kCc8FmEb1nY
Thay vì LLM ở mức ký tự, sách triển khai một LLM ở mức từ thực tế, cho thấy cách tải trọng số tiền huấn luyện sau khi tiền huấn luyện, rồi fine-tune theo chỉ dẫn LLM đó
Ngoài ra, sách còn code quá trình căn chỉnh của LLM đã được fine-tune theo chỉ dẫn, và cũng trình bày fine-tune cho tác vụ phân loại. Toàn bộ sách có nhiều hình minh họa, chỉ riêng chương 3 đã có 26 hình :)
Video cũng có vẻ rất hay. Vì dài 2 tiếng nên có lẽ là tài liệu bổ trợ nhập môn vững chắc. Đọc sách có lẽ sẽ tốn khoảng gấp 10 lần thời gian đó
Tôi cũng đã xem nhiều lần để hiểu tốt phần lớn nội dung
Tất nhiên bạn cũng phải rất rành PyTorch, và cũng cần biết nhân ma trận, lan truyền ngược v.v. Người nói cũng nói rất nhanh
Ví dụ, tôi biết attention được dùng trong nhiều loại mô hình, và Transformer cũng được dùng ở những nơi khác ngoài mô hình ngôn ngữ
Tôi tò mò liệu đọc cuốn sách này có giúp hiểu attention và Transformer đủ tốt để có thể dùng chúng cả bên ngoài mô hình ngôn ngữ hay không
Khác biệt là trong LLM, văn bản được chuyển thành token, rồi các token đó được biến thành vector embedding đưa vào LLM. Trong Vision Transformer, thay vì xem ảnh là token, người ta dùng các patch ảnh làm token và biến chúng thành vector embedding
Dù là văn bản hay thị giác, đó vẫn là cùng một cơ chế attention, và trong cả hai trường hợp đều nhận vector embedding làm đầu vào
(*Chương 3 tôi đã nộp từ tuần trước và sẽ sớm lên MEAP. Trong lúc đó, bạn có thể xem code kèm ghi chú tại đây: https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01...)