llms-from-scratch-cn 评测:用 Jupyter Notebook 从零搭 GLM4、Llama3 与 RWKV6
仅需Python基础,从0构建大语言模型;从0逐步构建GLM4\Llama3\RWKV6, 深入理解大模型原理
秒懂
- 它是什么?
- Datawhale 的 llms-from-scratch-cn 是一套以 Jupyter Notebook 为主的中文 LLM 从零实现教程,覆盖 GPT 系列基础与 GLM、Llama、RWKV 架构讨论。它适合想读代码而非只看论文的学习者,但仓库状态和许可信息需要先确认。
- 适合谁用?
- 建议具备 Python 和 PyTorch 基础、想通过逐行读代码来理解 Transformer 与线性注意力机制的学习者采用此仓库,它比直接读英文原版多了中文讲解和针对 GLM、RWKV 的扩展章节。不建议把这里当作生产级模型训练框架,也不建议零基础者从第一章直接跳到 RWKV 部分,跳跃会丢失前置的注意力机制铺垫。
- 能商用吗?
- 请先确认。这个仓库使用的许可证不在我们自动归类的范围内,商用前请阅读仓库里的 LICENSE 文件。
- 还在维护吗?
- 在维护。仓库最近一次提交在 174 天前。
- 用什么语言写的?
- 主要是 Jupyter Notebook(依据 GitHub 的语言统计)。
以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。
开源项目深度解析
这门课解决的是“读得懂论文但写不出代码”的问题
很多 LLM 教程停在架构图和高层描述,读者看完仍不知道 tokenizer 输出怎么变成张量,也不知道多头注意力里的维度为什么要那样拆。llms-from-scratch-cn 的目标很直接:只要求 Python 基础,带着你从零写出能跑的模型代码。仓库分成两条线,一条基于 rasbt 的英文教程做翻译和代码整理,覆盖 GPT 类模型的完整流程,从文本数据处理、注意力机制编写,到 GPT 模型实现和预训练。另一条是 Model_Architecture_Discussions 目录,讨论 ChatGLM、Llama、RWKV 等具体架构。适合的人群是已经会用 PyTorch 写简单网络、但对大模型内部细节缺乏实感的开发者或研究生。它不适合想快速部署模型做应用的人,那类需求应该去找微调或推理框架。
两条学习路径的分工:Codes 快跑,Translated_Book 细读
仓库在基础知识部分明确区分了两套 notebook。Codes 路径下的文件更简洁,目的是让学习者快速看到主流程,比如 ch02.ipynb 处理文本数据,ch03.ipynb 写注意力机制,ch04.ipynb 实现 GPT 模型,ch05.ipynb 做预训练。Translated_Book 路径则提供更详细的推导和补充说明。这种双轨设计有实际价值:第一遍用 Codes 建立整体印象,第二遍用 Translated_Book 填补推导细节。每个章节还附带 exercise-solutions.ipynb,说明作者预期学习者动手改代码。从目录看,第 1 章没有代码,第 2 到第 5 章以及附录 A、附录 D 都有完整实现。注意第 6 章到第 8 章标注为“即将发布”,涉及文本分类微调和人类反馈微调,这部分内容目前缺失。
架构讨论区的真实形态:加载权重、逐行拆解、多版本 RWKV
Model_Architecture_Discussions 目录不是泛泛的架构比较,而是针对具体模型给出 notebook。ChatGLM3 的 notebook 名为“加载模型权重”,说明重点在如何把预训练权重映射到自建模型结构上。Llama3 的文件是 llama3-from-scratch.ipynb,从命名看是完整的从零实现。RWKV 部分覆盖 V2 到 V5 多个版本,每个版本单独一个 guide notebook。这种按版本拆开的做法对理解 RWKV 的演化很有帮助,因为 V2 到 V5 的注意力机制改动很大,混在一起讲容易混乱。但要注意,仓库描述里提到 RWKV6,而目录表格列出的最高版本是 V5,表格内容在 README 中被截断,无法确认 RWKV6 的 notebook 是否已经存在。如果你专门冲着 RWKV6 来,需要先到仓库目录里核实。
运行环境与上手路径:从附录 A 的 PyTorch 入门开始
仓库没有提供统一的 requirements.txt 或环境配置说明,README 中也没有给出安装命令。上手方式是从 Codes 目录打开对应章节的 notebook,在 Jupyter 环境中逐格运行。附录 A 提供了 PyTorch 简介,包含 code-part1.ipynb 和 code-part2.ipynb,还附带一个 DDP-script.py,说明涉及分布式数据并行的示例。附录 D 为训练过程添加额外功能。实际运行前需要自己准备 PyTorch 环境,notebook 中应该会 import 相关库。由于没有明确的版本锁定,建议使用较新的稳定版 PyTorch。对初学者来说,最稳妥的路径是先跑附录 A 的两个 notebook 确认环境无误,再进入第 2 章。直接打开 ch05 的 train.py 可能会因为缺少前置定义而报错,因为这些文件依赖前面章节构建的组件。
翻译项目的通病:上游更新与本地维护的时差
这个仓库明确标注基于 rasbt/LLMs-from-scratch,属于翻译加扩展项目。这类项目面临一个结构性问题:上游英文仓库持续更新,新增章节或修改代码,而翻译版本需要人工同步。从 README 看,第 6 到第 8 章仍标记“即将发布”,但上游 rasbt 的教程早已完成这些章节,说明翻译进度落后于上游。另一个风险是代码与英文原版可能存在细微差异,如果学习者在排查问题时对照英文原版,可能会遇到变量名或函数签名不一致的情况。仓库的 last push 日期是 2026 年 3 月,说明近期有活动,但无法从现有材料判断各章节的完成度是否一致。建议在使用某个章节前,先打开 notebook 确认代码完整可运行,而不是假设所有文件都处于同一完成水平。
许可状态需要先查清楚:徽章与 LICENSE 文件不一致
仓库的 LICENSE 字段显示为 NOASSERTION,但 README 顶部的徽章写着 Code License: Apache 2.0,并链接到仓库内的 LICENSE.txt。这是一个需要警惕的信号。NOASSERTION 通常意味着 GitHub 无法自动识别许可证类型,可能因为 LICENSE.txt 的内容格式不标准,或者文件缺失。徽章可能由作者手动添加,也可能由自动化工具生成,不能替代实际文件。在复制代码或在此基础上二次开发前,务必打开 LICENSE.txt 确认具体条款。另外,仓库包含翻译内容,英文原版 rasbt/LLMs-from-scratch 使用什么许可证也需要一并确认,翻译作品可能涉及原作者的版权。这个问题不解决,就不适合作为商业项目的基础代码库。
与英文原版的取舍:中文讲解换来了什么,又失去了什么
直接使用 rasbt 的英文原版,得到的是持续维护、章节完整、社区讨论活跃的教程。选择这个中文仓库,换来的是母语讲解和针对 GLM、RWKV 的额外内容,英文原版并不覆盖这些中文社区常用的模型。代价是翻译滞后和内容不完整。对于英文阅读有困难的学习者,这个仓库是更现实的选择。对于能流畅阅读英文技术文档的人,建议以英文原版为主线,把这个仓库当作补充参考,尤其是 Model_Architecture_Discussions 里 RWKV 多版本拆解和 ChatGLM3 权重加载的部分,这些是原版没有的。两个仓库的代码风格可能都源于同一套基础,但扩展部分是完全不同的方向,这决定了它们不是简单的替代关系,而是互补关系。
编辑结论
建议具备 Python 和 PyTorch 基础、想通过逐行读代码来理解 Transformer 与线性注意力机制的学习者采用此仓库,它比直接读英文原版多了中文讲解和针对 GLM、RWKV 的扩展章节。不建议把这里当作生产级模型训练框架,也不建议零基础者从第一章直接跳到 RWKV 部分,跳跃会丢失前置的注意力机制铺垫。使用前先核实两件事:仓库 LICENSE 文件标注为 NOASSERTION,虽然 README 徽章写 Apache 2.0,但代码许可以实际文件为准;其次,第 6 到第 8 章标注“即将发布”,若你的学习计划依赖微调内容,需确认这些章节是否已补全。最终判断:这是一份结构清晰、以代码为先的教学材料,适合作为系统学习 LLM 实现的第二份资料,但不应作为唯一来源,因为其维护节奏与许可状态都未完全明朗。
社区笔记