《大模型与智能体》配套仓库 LLM-Beginner 评测:六个任务从手写 Transformer 到编程智能体
《大模型与智能体》电子书与 6 个编程任务:Transformer、mini-GPT、SFT/DPO、RAG、工具调用与编程智能体。
秒懂
- 它是什么?
- LLM-Beginner 是邱锡鹏《大模型与智能体》一书的编程练习仓库,用六个循序渐进的任务覆盖 Transformer、mini-GPT、SFT/DPO、RAG、工具调用与编程智能体。它的价值在于每步都要求手写实现并用自检脚本验证,但学习者需要自己承担模型下载与显存调优的成本。
- 适合谁用?
- 这套仓库适合有 Python 和深度学习基础、想通过手写代码理解大模型与智能体原理的学习者,尤其适合高校课程或自学路线。不适合只想快速调用现成 API 或缺乏耐心调参的工程师。
- 能商用吗?
- 可以。MIT 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
- 还在维护吗?
- 在维护。仓库最近一次提交在 10 天前。
- 用什么语言写的?
- 主要是 Python(依据 GitHub 的语言统计)。
以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。
开源项目深度解析
它解决什么问题,为谁准备
大模型相关的开源教程很多,但多数只讲原理或只给现成代码。LLM-Beginner 想填的坑是:让学习者从零手写关键组件,再用自检脚本确认写对了。它由复旦大学 NLP 实验室的 NLP-Beginner 重构而来,作者是邱锡鹏,配套《大模型与智能体》电子书。仓库面向有 Python 与深度学习基础的人,不需要先读完书,书与练习可独立使用。六个任务覆盖从注意力机制到编程智能体的完整链条,每个任务都要求你在 src/ 目录下按指定接口实现代码,而不是直接跑通一个现成模型。适合自学者,也适合作为课程的实验材料。
六个任务的递进逻辑与隐藏成本
任务顺序不是随意排列。任务一要求手写 scaled dot-product attention、multi-head attention 和完整的 Transformer encoder block,用 ChnSentiCorp 做中文情感分类,并分别用 padding mask 和 causal mask 跑分类与 toy 语言模型。任务二在此基础上从零搭 decoder-only 模型,加入 BPE tokenizer、RoPE 和 KV cache,数据分三档:49KB 的唐诗 quick-start、100MB 的 TinyStories、1GB 以上的 SkyPile。任务三引入 LoRA、SFT 和 DPO,需要下载 Qwen2.5-0.5B。任务四构建 RAG 流程,任务五实现 ReAct 循环,任务六做一个能改代码、跑测试并迭代的编程智能体。每个任务建议用时从 2 周到 6 周不等,任务六最长。注意:任务三的显存需求取决于模型、精度和序列长度,README 没有给出具体数字,只建议先用小规模配置跑通。这意味着你需要在实践中自行摸索资源边界。
自检机制:eval/run.py 与 _eval_harness.py 的契约
这套仓库最独特的机制是统一的评估壳。六个任务共享根目录下的 _eval_harness.py,每个任务的 eval/run.py 会按 README 中列出的类与函数签名导入你写在 src/ 里的实现。自检结果有三种状态:通过、跳过、失败。跳过表示前置条件未就绪,比如模型或数据没下载,不是代码错误。失败则带 error 或具体指标。结果写入 eval/result.json,始终 UTF-8。这个设计有两个含义。第一,你必须严格遵守接口签名,否则脚本无法导入。第二,自检是下限检查,只验证关键契约,比如 attention 数值正确性、召回率、任务成功率,不替代你自行做的对比实验。需要注意的是,eval/run.py 必须在仓库内运行,因为它依赖根目录的 _eval_harness.py。把单个任务目录拷出去会导致 import 失败。这个约束限制了你在其他项目里复用任务代码的便利性。
运行环境与数据下载的真实门槛
环境要求明确:Python 3.10 以上,推荐 3.11 或 3.12。每个任务有独立的 requirements.txt,可以共用一个环境,也可以分开建 venv。安装命令是 pip install -r task-1-transformer/requirements.txt,以任务一为例。数据下载统一用 python data/download.py,但不同任务参数不同。任务二支持 --dataset poetry|tinystories|skypile,默认 poetry。任务四支持 --skip-models,只下 PDF 并校验。任务六支持 --with-swebench,额外下载 SWE-bench Lite 抽样。国内用户需要先设置 HF_ENDPOINT=https://hf-mirror.com,完全无法访问 Hugging Face 时,多数数据可改用 ModelScope,download.py 末尾有提示。这看起来方便,但实际门槛在于模型文件较大,任务三的 Qwen2.5-0.5B 和任务四的 BGE 模型都需要稳定网络。README 承认 Hugging Face 访问不稳,所以镜像和 ModelScope 是必需品,不是可选项。
被低估的 tutor_prompt.md:把大模型变成代码审查员
每个任务的 eval/ 目录下都有一份 tutor_prompt.md,README 建议把它连同你的 src/ 代码一起贴给 Claude、Qwen 或 DeepSeek,让大模型按任务检查项做代码审查。这个设计很务实。自检脚本只能验证数值正确性和接口契约,无法评判代码风格、可读性或实现思路是否合理。而 tutor_prompt.md 提供了一种低成本的获得反馈的方式,尤其适合没有助教的自学者。不过它也有局限:审查质量取决于你选的模型和你的提问方式,而且大模型可能给出似是而非的建议。你应该把它当作辅助工具,而不是权威评判。另外,tutor_prompt.md 的存在说明作者意识到自检的盲区,但并没有提供人工批改的标准答案,最终判断仍落在学习者自己身上。
它不适合哪些场景,以及替代方案的分野
如果你想要一个开箱即用的智能体框架,或者只想微调一个模型来完成任务,LLM-Beginner 是错误工具。它强制你手写 BPE、RoPE、KV cache,这些在 tiktoken、Hugging Face Transformers 里都是现成的。自检脚本也只会告诉你契约是否满足,不会帮你调参。同类替代有 Andrej Karpathy 的 nanoGPT,任务二明确引用了它,但 nanoGPT 只覆盖预训练与生成,不涉及 SFT、DPO、RAG 或工具调用。另一个方向是直接学习 Hugging Face 的 Transformers 库和 PEFT,用现成 API 做 LoRA 微调,但那样你学的是调用方式而不是内部原理。LLM-Beginner 的核心主张是先手写再对照框架,这个路线在任务二体现得最明显:它扩展了 nanoGPT,加入 BPE、RoPE、KV cache,而这些正是生产级模型的关键组件。如果你认同这个路线,它有价值;如果你只想快速出结果,它反而拖慢你。
维护状态与许可证的实际含义
仓库使用 MIT 许可证,这意味着你可以自由使用、修改和分发代码,甚至用于商业项目,只要保留版权声明。这比很多教学仓库的 GPL 或 CC BY-NC 更宽松。项目当前未归档,最近一次推送是 2026 年 9 月,且发布了一个 book-pdf 的 release,包含 PDF 全书。这说明作者仍在维护,书稿处于出版筹备阶段,内容会随修订更新。但维护成本在于:书与练习的版本可能不同步,README 中提到的 NNDL2 和实践书 v2 是外部参考,你需要自行获取。另外,各任务的 requirements.txt 可能随时间更新,如果你隔几个月再开始,依赖版本可能变化。升级成本不高,因为每个任务独立,你可以只更新需要的任务目录。总体而言,MIT 许可证和活跃的发布节奏降低了采用风险,但书稿未正式出版意味着内容可能有变动,你依赖的章节可能被重写。
编辑结论
这套仓库适合有 Python 和深度学习基础、想通过手写代码理解大模型与智能体原理的学习者,尤其适合高校课程或自学路线。不适合只想快速调用现成 API 或缺乏耐心调参的工程师。采用前先确认三件事:你的 GPU 显存能否跑任务三的 Qwen2.5-0.5B 微调,能否稳定访问 Hugging Face 或 ModelScope 下载数据,以及是否愿意为每个任务投入 2 到 6 周。自检脚本只验证下限,真正的能力提升来自你额外做的对比实验。若你接受先手写再对照框架的教学路线,这套仓库是目前少见的系统化中文资源。
社区笔记