rasbt/reasoning-from-scratch · 上手攻略
- 仓库:rasbt/reasoning-from-scratch
- 链接:https://github.com/rasbt/reasoning-from-scratch
- 分类:engineering(LLM 推理训练 / PyTorch from-scratch 教程)
- 作者:spark
- 更新:2026-07-16
是什么
rasbt/reasoning-from-scratch 是 Sebastian Raschka(Build a Large Language Model (From Scratch) 的作者)出版的第二本 Manning 图书 Build a Reasoning Model (From Scratch) 的官方配套代码仓库。整本书/仓库的目标是:从一个已经预训练好的开源基础模型(Qwen3)出发,一步步在 PyTorch 中手把手加上"推理能力"——推理时缩放(CoT、self-consistency、best-of-N)、基于 GRPO 的强化学习、模型蒸馏。读者既能看到 DeepSeek R1 / GPT-5 Thinking 风格的方法在小尺度上的简化复现,又能直接加载开源权重推理。4.7k+ Star、Apache-2.0、Jupyter Notebook 为主,2026-07 仍在更新。
它的姊妹仓库 rasbt/LLMs-from-scratch 讲的是"从零预训练一个 LLM",而本仓库讲的是"在已有 LLM 上加入推理能力"——两本配合读相当于覆盖了"基座→推理模型"全链路。
解决什么问题
当下 reasoning LLM 的论文(DeepSeek R1、OpenAI o1/o3、Claude thinking)几乎都把"推理"包装得很神秘。读者通常知道"强化学习 + 长 CoT",但具体怎么:
- 在已训好的 base LLM 上激发链式思考
- 评估推理质量(MATH-500 等 benchmark 怎么 parse、verifier 怎么写)
- 推理时缩放(inference-time scaling):CoT prompting、self-consistency、best-of-N、self-refinement
- 训练时强化学习:GRPO 怎么实现、batch 模式、改进变体(DeepSeek-V3.2、Olmo3、GDPO 风格)
- 蒸馏:把大 reasoning teacher 的输出蒸馏到小模型,让小模型也有推理能力
本仓库把这五件事拆成 8 章 + 7 附录的 Jupyter 笔记,全部用 Qwen3 base 在消费级硬件(章节 2~4 在 CPU 都能跑,第 5~6 章建议 GPU)跑通,是目前少有的"端到端可执行 + 出书解释"的中阶教材。
快速安装
系统要求
- Python ≥ 3.10(建议 3.11)
- 推荐使用
conda或uv隔离环境 - GPU 可选;前 4 章 CPU 也能跑,第 5~6 章需要至少 16GB 显存(推荐 24GB,如 RTX 4090 / A5000)
安装命令
git clone --depth 1 https://github.com/rasbt/reasoning-from-scratch.git
cd reasoning-from-scratch
# 推荐用 uv(速度更快)
uv venv
source .venv/bin/activate
# 或 conda
# conda create -n raschka-reasoning python=3.11 -y
# conda activate raschka-reasoning
# 安装依赖(仓库提供 pyproject 或 requirements;按章节可能需要额外包)
pip install -U torch torchvision torchaudio
pip install -U jupyter ipykernel transformers datasets accelerate \
trl math_verify matplotlib pandas
python -m ipykernel install --user --name=raschka-reasoning
章节 6、7 用到 GRPO,建议显存 ≥ 24GB 或使用云端 GPU(如 Lambda Labs、RunPod、Vast.ai)。仓库
ch02/02_setup-tips/提供了云 GPU 推荐清单。
核心用法
仓库目录结构(章节级)
ch01 了解推理模型(无代码)
ch02 用预训练 LLM 生成文本 → ch02_main.ipynb
ch03 评估推理模型 → ch03_main.ipynb (MATH-500)
ch04 推理时缩放(CoT / self-consistency)→ ch04_main.ipynb
ch05 推理时自优化(best-of-N / self-refinement)→ ch05_main.ipynb
ch06 用强化学习训练推理模型(GRPO) → ch06_main.ipynb
ch07 改进 GRPO(含 DeepSeek-V3.2 / Olmo3 / GDPO 变体)→ ch07_main.ipynb
ch08 蒸馏推理模型(小模型 + teacher) → ch08_main.ipynb
chC Qwen3 LLM 源码导读
chD 使用更大的 LLM
chE 批处理与吞吐优化
chF LLM 评测方法(MMLU / leaderboards / LLM-as-judge)
chG 聊天界面(Gradio)
最小可运行:加载 Qwen3 + 简单生成(章节 2)
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "Qwen/Qwen3-0.6B-Base" # 或 Qwen3-1.7B-Base / 4B-Base
tok = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, device_map="auto")
prompt = "If 3x + 7 = 22, what is x?"
inputs = tok(prompt, return_tensors="pt").to(model.device)
out = model.generate(**inputs, max_new_tokens=256, do_sample=False)
print(tok.decode(out[0], skip_special_tokens=True))
注意:仓库默认用 base 模型(不是 instruct),目的是让你看到"没经过 SFT/RL 时模型在 reasoning 上有多弱",再叠加 GRPO 看到提升。
章节 3:评估推理模型(MATH-500)
# 用仓库自带的 verifier 脚本
jupyter nbconvert --to notebook --execute ch03/01_main-chapter-code/ch03_main.ipynb
# 高级 parser(LaTeX hybrid):见 ch03/03_advanced-parser
章节 6:GRPO 训练(GPU)
# ch06/02_rlvr_grpo_scripts_intro 里有 batched GRPO 实现
# 数据格式:prompt + 可验证 reward(典型是 math 答案匹配)
# 奖励函数可调用仓库提供的 math_verify 工具
章节 7:下载作者已训好的 GRPO checkpoint
# ch07/04_download_trainining_checkpoints.ipynb
# 一键下载并推理,无需自训
章节 8:蒸馏
ch08/02_generate_distillation_data用 Ollama 或 OpenRouter 跑 teacher 生成数据ch08/04_train_with_distillation提供单样本与 batch 训练脚本ch08/06_use_via_huggingface把蒸馏后的模型挂回transformers
典型适用场景
- 工程师学习 reasoning LLM 工作机制:从 base 到 GRPO 全链路,跑一遍下来对 DeepSeek R1 的报告不会再"似懂非懂"。
- 教学 / 培训:高校 ML 课程的 reasoning 模块,比直接读论文更适合上手。
- 小型 reasoning 模型定制:用 Qwen3 base + 自己的小数据集 + GRPO 微调,做数学或逻辑垂直领域模型。
- 蒸馏到端侧:把 teacher 的 reasoning 行为蒸馏到 0.6B~1.7B,部署到笔记本或手机。
- 评测基线搭建:直接复用章节 3、附录 F 的 MMLU / MATH-500 / LLM-as-judge 模板。
坑与注意
- 基模型选择:默认 Qwen3 base,非 instruct。先确认自己到底想跑 base 还是 instruct,README 与 ch02 强调得很清楚。
- GRPO 显存:batch + rollout + reference model + value head 同时在显存,单卡 24GB 起步;建议开启
gradient_checkpointing。 - Reward 设计:仓库示例是数学答案匹配(math_verify),自换任务时务必确认 reward 不会"被 hack"。
- 章节 5~6 必须用 GPU:CPU 跑会很慢甚至 OOM;云上选 PyTorch 2.x + Flash Attention 2 的镜像。
- troubleshooting.md:遇到常见报错(如
torch.compileWindows、tokenizers版本)先翻这个文档。 - 不接受改主章节代码:作者明确说不接受修改主章代码的 PR(要保持与纸质书一致),但欢迎 issue / discussion 反馈。
- Manning 图书关联:仓库与纸质书强绑定,部分细节(章节插图、练习答案解析)以书为准,仓库给的是可执行代码。
与同类对比
| 资源 | 形态 | 重点 |
|---|---|---|
| reasoning-from-scratch(本仓库) | 书 + Jupyter 全章节 | 端到端 base → GRPO → 蒸馏,PyTorch 手写 |
| DeepSeek R1 官方 repo | 论文 + 推理代码 | 大规模生产级推理模型复现 |
| HuggingFace TRL GRPO | 代码库 | GRPO 工程实现,无系统讲解 |
| nanoGRPO / mini-R1 | 博客 + 片段 | 极简复现,但讲解碎片 |
| Karpathy LLM101n | 视频 + 课 | 预训练向,不专攻 reasoning |
| 《Hands-On Large Language Models》 | 书 | 应用为主,不深入训练 |
本仓库的不可替代之处在于"出书级别的体系化讲解 + 完整可跑 notebook + 直接给 checkpoint"。想从零理解 reasoning LLM 训练流水线,它是当下最省力的路径之一。
一句话推荐结论
想要"既跑得动又讲得清"的 reasoning LLM 入门到进阶教程,本仓库几乎是 2026 年的最优解;跑第 6 章前请备好 24G 显卡与一杯咖啡。