模型 / 数据集
datawhalechina/llms-from-scratch-cn avatar
datawhalechina/llms-from-scratch-cn

llms-from-scratch-cn 评测:用 Jupyter Notebook 从零搭 GLM4、Llama3 与 RWKV6

仅需Python基础,从0构建大语言模型;从0逐步构建GLM4\Llama3\RWKV6, 深入理解大模型原理

4,364 个 Star597 个 ForkJupyter NotebookNOASSERTION
GitHub

秒懂

它是什么?
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 实现的第二份资料,但不应作为唯一来源,因为其维护节奏与许可状态都未完全明朗。

官方来源

  1. datawhalechina/llms-from-scratch-cn on GitHub
  2. Issues
  3. README
社区笔记

社区笔记