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)
  • 推荐使用 condauv 隔离环境
  • 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

典型适用场景

  1. 工程师学习 reasoning LLM 工作机制:从 base 到 GRPO 全链路,跑一遍下来对 DeepSeek R1 的报告不会再"似懂非懂"。
  2. 教学 / 培训:高校 ML 课程的 reasoning 模块,比直接读论文更适合上手。
  3. 小型 reasoning 模型定制:用 Qwen3 base + 自己的小数据集 + GRPO 微调,做数学或逻辑垂直领域模型。
  4. 蒸馏到端侧:把 teacher 的 reasoning 行为蒸馏到 0.6B~1.7B,部署到笔记本或手机。
  5. 评测基线搭建:直接复用章节 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.compile Windows、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 显卡与一杯咖啡。