rasbt/LLMs-from-scratch · 上手攻略
- 仓库:rasbt/LLMs-from-scratch
- 链接:https://github.com/rasbt/LLMs-from-scratch
- 分类:ai
- 作者:Jay
- 更新:2026-07-10
这是什么
rasbt/LLMs-from-scratch 是 Sebastian Raschka 的著作《Build a Large Language Model (From Scratch)》(Manning 出版,ISBN 9781633437166)的官方配套代码库。该仓库从零实现了一个类 GPT 的 LLM,涵盖数据预处理、注意力机制、模型架构、预训练、精调(SFT)、RLHF 类指令微调(DPO)等完整流程。代码以 Jupyter Notebook 为主,配以独立的 .py 摘要脚本,读者可以一步步跟随章节目录从底层理解 LLM 工作原理。Stars 98k+,是 AI 学习领域最受欢迎的仓库之一。
解决什么问题
大多数 LLM 教程依赖 transformers 等高层库,隐藏了大量细节。这个仓库让你真正从零理解 LLM:数据怎么分词、注意力机制怎么写、GPT 架构每一步的实现、预训练循环怎么跑、微调怎么做。你不是在调用 API,而是在亲手实现一个能跑的小型 ChatGPT。
快速安装
环境要求
- Python ≥ 3.10(推荐 3.11+)
- PyTorch ≥ 2.2.2
- 推荐有 NVIDIA GPU(CUDA)以加速训练;macOS Apple Silicon 用户可利用 MPS 后端(注:代码默认未自动选 MPS,需手动指定)
- 推荐 16GB+ RAM
克隆仓库
git clone --depth 1 https://github.com/rasbt/LLMs-from-scratch.git
cd LLMs-from-scratch
安装依赖
pip install -r requirements.txt
Colab 用户(在笔记本顶层单元格运行):
bash !pip install uv && uv pip install --system -r https://raw.githubusercontent.com/rasbt/LLMs-from-scratch/refs/heads/main/requirements.txt
可选:安装 bonus 额外包
uv pip install --group bonus
核心用法
章节导览
| 章节 | 内容 | 关键文件 |
|---|---|---|
| Ch 2 | 文本数据处理(分词、数据加载) | ch02/01_main-chapter-code/ch02.ipynb |
| Ch 3 | 注意力机制实现 | ch03/01_main-chapter-code/ch03.ipynb |
| Ch 4 | GPT 模型完整实现 | ch04/01_main-chapter-code/ch04.ipynb |
| Ch 5 | 预训练(自回归语言建模) | ch05/01_main-chapter-code/ch05.ipynb |
| Ch 6 | 文本分类微调(SFT) | ch06/01_main-chapter-code/ch06.ipynb |
| Ch 7 | 指令微调(与 Ollama 集成) | ch07/01_main-chapter-code/ch07.ipynb |
| App D | 训练技巧(Bells & Whistles) | appendix-D/ |
| App E | LoRA 高效微调 | appendix-E/ |
快速跑一个预训练脚本
# 在 ch05 目录
cd ch05/01_main-chapter-code
python gpt_train.py
生成文本
python gpt_generate.py
精调为分类器
cd ch06/01_main-chapter-code
python gpt_class_finetune.py
指令微调 + Ollama 本地评估
cd ch07/01_main-chapter-code
# 需要先安装 Ollama:https://ollama.com
python ollama_evaluate.py
Apple Silicon MPS 支持(需手动开启)
⚠️ 代码默认回退到 CPU,troubleshooting.md 指出 MPS 支持为有意省略。如需在 M 系列 Mac 上用 MPS,需要在设备判断处手动加入
mps分支。参考:PyTorch MPS 文档
典型适用场景
- 系统学习 LLM 原理:通过完整章节笔记和代码,理解从 Tokenizer 到 Attention 到预训练的每一步
- 教学或写书:Sebastian Raschka 本人出书配套,可作为课程材料
- 快速原型实验:在小型数据集上验证新想法(如修改位置编码、注意力变体)
- 准备面试/考试:覆盖了大多数 LLM 核心面试题的底层原理
- 低成本微调实验:Appendix E 包含 LoRA 微调,可在小显存下跑
坑与注意
- Notebook 图片加载失败:章节 notebook 依赖外部图床(
sebastianraschka.com),网络问题会导致图片不显示。解决方法:直接在该域名下确认图片可访问,或检查本地网络/VPN 配置。 - 修改代码与更新冲突:主章节 notebook 与书籍同步,修改前建议 fork;作者推荐复制一份实验:
ch02.ipynb→ch02_experiments.ipynb - MPS 后端未默认启用:Apple Silicon Mac 用户需手动在代码中加入 MPS 设备判断,否则默认跑 CPU
- Colab 端侧安装要单独执行:
requirements.txt中 tensorflow 依赖较大(如无需 ch05-07 的 TF 代码,可只装 torch 加速) - GPU 显存:预训练(Ch5)和精调(Ch6-7)需要 GPU;没有独显可减少 batch size 或用小数据集
与同类对比
| 仓库 | 定位 | 优势 | 不足 |
|---|---|---|---|
| rasbt/LLMs-from-scratch | 从零实现 GPT 类 | 讲解最系统、与书籍配套、代码最透明 | 需要 PyTorch 基础,不含预训练权重 |
| karpathy/llama2.c | 极简 LLM 推理 | 代码极少(< 500行)、可读性强 | 不含训练代码,专注推理 |
| huggingface/transformers | 生产级 LLM 库 | 功能完整、工业级 | 抽象层多,不适合学习底层原理 |
| OpenChat/s进步 | 微调实践 | 专注 RLHF/DPO 微调 | 需要大显存,不讲原理 |
如果你想真正理解 LLM 内部机制,这是最好的选择;如果只想快速跑推理,karpathy 的仓库更轻量。
一句话推荐
想从零搞清楚 GPT 是怎么工作的?这是目前最系统、最被社区认可的学习路径——Sebastian Raschka 亲自带你一行一行实现。