英文 | 中文
此存储库包含用于开发、预训练和微调类似 GPT 的 LLM 的代码,是本书 构建大型语言模型(从零开始) 的官方代码存储库。
在 构建大型语言模型(从零开始) 中,您将通过从零开始逐步编码大型语言模型 (LLM),从内到外学习和了解大型语言模型 (LLM) 的工作原理。在本书中,我将指导您创建自己的 LLM,并用清晰的文本、图表和示例解释每个阶段。
本书中描述的用于训练和开发您自己的小型但功能齐全的教育模型的方法反映了创建大型基础模型(例如 ChatGPT 背后的模型)所使用的方法。此外,本书还包括用于加载较大预训练模型的权重以进行微调的代码。
- 链接到官方源代码存储库
- 链接到 Manning(出版商网站)上的书籍
- 链接到 Amazon.com 上的书籍页面
- ISBN 9781633437166
要下载此存储库的副本,请单击下载ZIP 按钮或在终端中执行以下命令:
git clone --depth 1 https://github.com/rasbt/LLMs-from-scratch.git
(如果您从 Manning 网站下载了代码包,请考虑访问 GitHub 上的官方代码存储库 https://github.com/rasbt/LLMs-from-scratch 以获取最新更新。)
请注意,此 README.md
文件是 Markdown(.md
)文件。如果您已从 Manning 网站下载此代码包并在本地计算机上查看它,我建议使用 Markdown 编辑器或预览器进行正确查看。如果您尚未安装 Markdown 编辑器,MarkText 是一个不错的免费选择。
您也可以在浏览器中通过 https://github.com/rasbt/LLMs-from-scratch 查看此文件和 GitHub 上的其他文件,浏览器会自动呈现 Markdown。
Tip
如果您正在寻求有关安装 Python 和 Python 包以及设置代码环境的指导,我建议您阅读位于 setup 目录中的 README.zh.md 文件。
章节标题 | 主代码(用于快速访问) | 所有代码 + 补充 |
---|---|---|
设置建议 | - | - |
第 1 章:了解大型语言模型 | 无代码 | ./ch01 |
第 2 章:处理文本数据 | - ch02.ipynb - dataloader.ipynb (摘要) - exercise-solutions.ipynb |
./ch02 |
第 3 章:编写注意力机制 | - ch03.ipynb - multihead-attention.ipynb (摘要) - exercise-solutions.ipynb |
./ch03 |
第 4 章:从零开始实现 GPT 模型 | - ch04.ipynb - gpt.py (摘要) - exercise-solutions.ipynb |
./ch04 |
第 5 章:使用未标记的数据进行预训练 | - ch05.ipynb - gpt_train.py (摘要) - gpt_generate.py (摘要) - exercise-solutions.ipynb |
./ch05 |
第 6 章:文本分类的微调 | - ch06.ipynb - gpt_class_finetune.py - exercise-solutions.ipynb |
./ch06 |
第 7 章:根据指令进行微调 | - ch07.ipynb - gpt_instruction_finetuning.py (摘要) - ollama_evaluate.py (摘要) - exercise-solutions.ipynb |
./ch07 |
附录 A:PyTorch 简介 | - code-part1.ipynb - code-part2.ipynb - DDP-script.py - exercise-solutions.ipynb |
./appendix-A |
附录 B:参考资料和进一步阅读 | 无代码 | - |
附录 C:练习解决方案 | 无代码 | - |
附录 D:为训练过程添加额外的功能和特性 | - appendix-D.ipynb | ./appendix-D |
附录 E:使用 LoRA 进行参数高效微调 | - appendix-E.ipynb | ./appendix-E |
下面的心智模型总结了本书涵盖的内容。
本书主要章节中的代码旨在在合理的时间范围内在传统笔记本电脑上运行,并且不需要专门的硬件。这种方法可确保广大受众能够参与其中。此外,如果 GPU 可用,代码会自动利用它们。(请参阅 setup 文档以获取更多建议。)
几个文件夹包含可选材料,作为对感兴趣的读者的奖励:
- 设置
- 第 2 章:处理文本数据
- 第3:编写注意力机制
- 第 4 章:从零开始实现 GPT 模型
- 第 5 章:使用未标记的数据进行预训练:
- 第 6 章:文本分类的微调
- 第 7 章:根据指令进行微调
我欢迎各种反馈,最好通过 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}
}