从零手撸GPT:中文翻译版《LLMs-from-scratch》开源了
AIAI Summary (BLUF)
这是一个对GitHub上《LLMs-from-scratch》项目的中文翻译,包含详细的Markdown笔记和Jupyter代码注释。项目旨在帮助中文学习者从零开始构建大语言模型,涵盖Transformer、GPT等核心技术的实现。所有资源免费开源,提供完整的代码和教材链接。
核心洞察
这篇文章实际上是在介绍一个中文社区发起的翻译项目——把Sebastian Raschka那本《Build A Large Language Model (From Scratch)》的代码和笔记全部汉化。有意思的地方在于,国内做LLM教程的大多是训练推理流程的拆解,真正从零手撸GPT每一步、还附带完整Jupyter代码的资源其实不多。这个项目把七章内容和附录都翻完了,代码注释也加得很细,对想搞懂底层原理的中文读者来说,算是省了不少力气。
核心结论
- 该项目完整翻译了Sebastian Raschka所著《Build A Large Language Model (From Scratch)》的全部7章内容及附录A-E,并为每章对应的Jupyter代码添加了详细中文注释。
- 汉化版仓库地址为
https://github.com/MLNLP-World/LLMs-from-scratch-CN.git,原版官方仓库地址为https://github.com/rasbt/LLMs-from-scratch.git。 - 翻译团队由GoatCsu担任主要翻译者,yongheng、WPENGxs、chunlin等人依次担任各章节校对者,项目当前版本为v0.1.0。
- 项目覆盖了从零实现GPT模型、文本数据预处理、注意力机制编码、无标注数据预训练、文本分类微调以及指令遵循微调等完整流程。
《从零构建大模型》
项目动机 / 课程简介 / 课程资源 / 原书Readme / 贡献者
项目动机
原项目地址: 《LLMs-from-scratch》
这个项目把GitHub上的《LLMs-from-scratch》做了中文翻译,包括详细的markdown笔记和对应的jupyter代码。翻译过程中尽量保持原意准确,也对语序和表达做了调整,读起来不会觉得是机器翻译的。需要说清楚的是,原作者才是这个项目的主力,汉化版只是辅助学习的资料,不会改原文内容。
能力有限,翻译里肯定有不到位的地方,欢迎提意见,也请大家多包涵。希望这个翻译能帮到更多中文学习者,给国内社区的LLM学习贡献一点力量。
项目特色:
- 所有jupyter代码都加了详细中文注释,上手快。
- 附带了大量补充材料,可以往深了学。
项目用的徽章来自互联网,如果有版权问题请联系我们删除,谢谢。
课程简介
说到大语言模型,很多人觉得这是独立于传统机器学习的东西。其实LLMs就是机器学习的一个分支。深度学习普及之前,机器学习在语音识别、自然语言处理、计算机视觉这些领域能做的事很有限,因为解决真实世界的复杂问题需要太多领域知识。这几年深度学习爆发式增长,彻底改变了局面,LLMs也成了推动AI革命的关键力量。
原项目地址: 《LLMs-from-scratch》 https://github.com/rasbt/LLMs-from-scratch.git
这个项目不光讲LLMs的基础构建,比如Transformer结构、序列建模这些,还深入挖了GPT、BERT这类深度学习模型的底层实现。每一部分都配有完整的代码实现和学习资料,带着你从零开始把LLMs搭出来,彻底搞懂核心技术。
课程资源
- 英文原版地址: 原版地址
- 教材网址: 原版教材
- 汉化地址: https://github.com/MLNLP-World/LLMs-from-scratch-CN.git
这门课还有配套的代码实现。每章都有对应的jupyter记事本,给出了模型的完整python代码。所有资源网上都能免费拿到。
原书Readme
从零构建大模型
这个仓库包含开发、预训练和微调一个类似GPT的LLM的全部代码,来自《从零构建大模型》这本书。书籍链接: 从零构建大模型
在《从零构建大模型》这本书里,你会一步步了解大语言模型从里到外是怎么工作的,亲手写代码,逐渐搭出一个LLM。书里用了清晰的文字、图表和示例,带你走完构建自己LLM的每个阶段。
书中讲的训练和开发自己小型可用模型的方法,是为教学目的设计的,和ChatGPT背后那些大规模基础模型的做法类似。另外,书里还包含了加载更大预训练模型权重来做微调的代码。
要下载仓库副本,点 下载ZIP 按钮,或者终端里跑:
git clone --depth 1 https://github.com/rasbt/LLMs-from-scratch.git
要下载汉化版本,点 下载ZIP 按钮,或者终端里跑:
git clone --depth 1 https://github.com/MLNLP-World/LLMs-from-scratch-CN.git
(如果你是从Manning网站下载的代码包,请去官方仓库 https://github.com/rasbt/LLMs-from-scratch 获取最新更新,或者汉化版 https://github.com/MLNLP-World/LLMs-from-scratch-CN.git)
目录
注意,这是一个Markdown文件。如果你是从Manning网站下载的代码包在本地看,建议用Markdown编辑器或者预览器打开。还没装Markdown编辑器的话,MarkText 是个不错的免费选择。
也可以用浏览器访问GitHub上的 原版仓库 或者 汉化版,浏览器会自动渲染Markdown。
| 章节标题 | 主要代码(快速访问) | 所有代码及补充内容 | 翻译者 | 校对者 |
|---|---|---|---|---|
| 安装建议 | - | - | GoatCsu | yongheng |
| 第1章:理解大型语言模型 | 无代码 | - | GoatCsu | yongheng |
| 第2章:处理文本数据 | - ch02.ipynb - dataloader.ipynb(总结) - exercise-solutions.ipynb | ch02 | GoatCsu | yongheng |
| 第3章:编码注意力机制 | - ch03.ipynb - multihead-attention.ipynb(总结) - exercise-solutions.ipynb | ch03 | GoatCsu | yongheng |
| 第4章:从零开始实现 GPT 模型 | - ch04.ipynb - gpt.py(总结) - exercise-solutions.ipynb | ch04 | GoatCsu | yongheng |
| 第5章:在无标注数据上进行预训练 | - ch05.ipynb - gpt_train.py(总结) - gpt_generate.py(总结) - exercise-solutions.ipynb | ch05 | GoatCsu | WPENGxs |
| 第6章:进行文本分类的微调 | - ch06.ipynb - gpt_class_finetune.py - exercise-solutions.ipynb | ch06 | GoatCsu | WPENGxs |
| 第7章:进行遵循指令的微调 | - ch07.ipynb - gpt_instruction_finetuning.py(总结) - ollama_evaluate.py(总结) - exercise-solutions.ipynb | ch07 | GoatCsu | WPENGxs |
| 附录 A:PyTorch 简介 | - code-part1.ipynb - code-part2.ipynb - DDP-script.py - exercise-solutions.ipynb | appendix-A | GoatCsu | chunlin |
| 附录 B:参考文献与进一步阅读 | 无代码 | - | ||
| 附录 C:习题解答 | 无代码 | - | ||
| 附录 D:在训练循环中加入附加功能 | - appendix-D.ipynb | appendix-D | GoatCsu | chunlin |
| 附录 E:使用 LoRA 进行参数高效微调 | - appendix-E.ipynb | appendix-E | GoatCsu | chunlin |
这是本书内容的总结性思维导图。
额外材料
| 章节 | 附加资料 | 翻译者 | 校对者 |
|---|---|---|---|
| 设置 | - Python 设置提示 - 安装本书使用的 Python 包和库 - Docker 环境设置指南 | GoatCsu | yongheng |
| 第2章:处理文本数据 | - 从零开始实现BPE分词器 - 比较不同BPE实现 - 理解嵌入层和线性层的区别 - 用简单数字理解数据加载器 | GoatCsu | yongheng |
| 第3章:编码注意力机制 | - 比较高效的多头注意力实现 - 理解 PyTorch 缓冲区 | GoatCsu | yongheng |
| 第4章:从零开始实现 GPT 模型 | - FLOPS 性能分析 | GoatCsu | WPENGxs |
| 第5章:在未标注数据上进行预训练 | - 用Transformers从Hugging Face加载权重 - 在古腾堡数据集上预训练GPT - 为训练循环加附加功能 - 优化预训练超参数 - 构建与预训练LLM交互的UI - 将GPT转换为Llama - 从零搭建Llama 3.2 - 内存高效加载权重 - 扩展Tiktoken BPE分词器 | GoatCsu | WPENGxs |
| 第6章:用于分类的微调 | - 微调不同层和使用更大模型的实验 - 在IMDB数据集上微调不同模型 - 构建与垃圾邮件分类器交互的UI | GoatCsu | chunlin |
| 第7章:微调以跟随指令 | - 查找近重复项和创建被动语态条目的工具 - 使用OpenAI API和Ollama评估指令响应 - 为指令微调生成数据集 - 改进指令微调数据集 - 用Llama 3.1 70B和Ollama生成偏好数据集 - 用于LLM对齐的DPO - 构建与指令微调GPT模型交互的UI | GoatCsu | chunlin |
硬件要求
本书主要章节的代码设计成能在普通笔记本上跑,不会耗时太久,不需要专门硬件。这样确保大多数人能跟上。如果有GPU,代码会自动用它。(更多建议看 setup 文档。)
问题、反馈和贡献
各种反馈都欢迎,最好通过 Manning 论坛 或者 GitHub 讨论区 分享。有问题或者想讨论想法,随时发帖。
这个仓库的代码和印刷书是对应的,所以目前不接受扩展主要章节目录内容的贡献。保持一致性,大家体验才好。
引用
如果你觉得这本书或者代码对研究有帮助,可以引用。
引用:
Raschka, Sebastian. Build A Large Language Model (From Scratch). Manning, 2024. ISBN: 978-1633437166.
BibTeX 条目:
@book{build-llms-from-scratch-book,
author = {Sebastian Raschka},
title = {Build A Large Language Model (From Scratch)},
publisher = {Manning},
year = {2024},
isbn = {978-1633437166},
url = {https://www.manning.com/books/build-a-large-language-model-from-scratch},
github = {https://github.com/rasbt/LLMs-from-scratch}
}
贡献者
常见问题(FAQ)
什么是《LLMs-from-scratch》中文翻译项目?
这是一个将Sebastian Raschka的《Build A Large Language Model (From Scratch)》原版代码和笔记进行完整汉化的开源项目,包含详细中文注释和Jupyter代码,旨在帮助中文学习者从零构建大语言模型。
这个翻译项目包含哪些内容?和原版有什么区别?
项目包含七章内容及附录的Markdown笔记和Jupyter代码,所有代码添加了详细中文注释。翻译保持原意准确,调整语序,读起来自然。原版是英文,此版本为中文辅助学习资料,不修改原文内容。
如何获取这个中文翻译项目的代码和教材?
可直接访问GitHub仓库 https://github.com/MLNLP-World/LLMs-from-scratch-CN.git 下载ZIP或使用git clone命令。教材网址也在该仓库中,所有资源免费开源。
版权与免责声明:本文仅用于信息分享与交流,不构成任何形式的法律、投资、医疗或其他专业建议,也不构成对任何结果的承诺或保证。
文中提及的商标、品牌、Logo、产品名称及相关图片/素材,其权利归各自合法权利人所有。本站内容可能基于公开资料整理,亦可能使用 AI 辅助生成或润色;我们尽力确保准确与合规,但不保证完整性、时效性与适用性,请读者自行甄别并以官方信息为准。
若本文内容或素材涉嫌侵权、隐私不当或存在错误,请相关权利人/当事人联系本站,我们将及时核实并采取删除、修正或下架等处理措施。也请勿在评论或联系信息中提交身份证号、手机号、住址等个人敏感信息。



