第四阶段:深度学习与神经网络
从零开始构建大型语言模型的完整教程,通过PyTorch逐步实现GPT架构,包含预训练、微调和部署的全流程实践
LLMs-from-scratch 课程详细介绍
项目概述
LLMs-from-scratch 是一个由 Sebastian Raschka 创建的综合性学习资源,旨在教授如何从零开始构建大型语言模型(LLM)。这个项目是《Build a Large Language Model (From Scratch)》一书的官方代码仓库。
核心特点
📚 学习目标
- 从内到外理解大型语言模型的工作原理
- 通过编码逐步构建自己的LLM
- 学习类似ChatGPT背后的基础模型的训练和开发方法
- 掌握加载和微调预训练模型权重的技术
🎯 教学方法
- 从零开始编码: 使用PyTorch从头实现,不依赖外部LLM库
- 循序渐进: 每个阶段都有清晰的文本、图表和示例说明
- 实用性强: 创建小型但功能完整的教育模型
- 配套资源丰富: 包含17小时15分钟的视频课程
课程结构
章节内容
第1章: 理解大型语言模型 (Understanding large language models)
- LLM基础概念介绍
- 模型架构概述
第2章: 处理文本数据 (Working with text data)
- 主要代码:
ch02.ipynb,dataloader.ipynb - 文本预处理和数据加载
- 练习解答:
exercise-solutions.ipynb
第3章: 编码注意力机制 (Coding attention mechanisms)
- 主要代码:
ch03.ipynb,multihead-attention.ipynb - 实现自注意力机制
- 多头注意力机制详解
第4章: 从零实现GPT模型 (Implementing a GPT model from scratch)
- 主要代码:
ch04.ipynb,gpt.py - 完整的GPT架构实现
- 模型组件详细讲解
第5章: 在无标签数据上预训练 (Pretraining on unlabeled data)
- 主要代码:
ch05.ipynb,gpt_train.py,gpt_generate.py - 预训练流程
- 文本生成实现
第6章: 分类任务微调 (Finetuning for classification)
- 主要代码:
ch06.ipynb,gpt_class_finetune.py - 针对特定分类任务调整模型
- 微调技术和策略
第7章: 指令跟随微调 (Finetuning to follow instructions)
- 主要代码:
ch07.ipynb,gpt_instruction_finetuning.py - 指令微调方法
- 模型评估:
ollama_evaluate.py
附录内容
附录A: PyTorch简介
- 代码:
code-part1.ipynb,code-part2.ipynb - 分布式数据并行训练:
DDP-script.py - PyTorch基础快速入门
附录B-E
- 附录B: 参考资料和进一步阅读
- 附录C: 练习答案汇总
- 附录D: 添加额外功能
- 附录E: 参数高效微调
奖励内容(Bonus Materials)
第5章额外资源
- 替代权重加载方法: 不同的模型权重加载技术
- Project Gutenberg数据集预训练: 在大型文本语料库上训练
- 训练循环优化: 添加各种改进功能
- 学习率调度器: 优化训练过程
- 超参数调优: 预训练超参数优化
- 用户界面构建: 与预训练LLM交互的UI
- 模型转换:
- GPT转换为Llama
- Llama 3.2从零实现
- Qwen3密集型和混合专家模型(MoE)
- Gemma 3从零实现
- 内存高效权重加载: 优化模型加载
- Tiktoken BPE分词器扩展: 添加新token
- PyTorch性能优化技巧: 加速LLM训练
第6章额外资源
- 分类微调的高级技术
第7章额外资源
- 数据集工具: 查找近似重复和创建被动语态条目
- 响应评估: 使用OpenAI API和Ollama评估指令响应
- 数据集生成: 为指令微调生成数据集
- 数据集改进: 提高指令微调数据集质量
- 偏好数据集生成: 使用Llama 3.1 70B和Ollama
- DPO对齐: 直接偏好优化(Direct Preference Optimization)实现
- 用户界面: 与指令微调GPT模型交互
推理模型资源(来自reasoning-from-scratch仓库)
- Qwen3基础
- 模型评估方法
技术要求
前置知识
- ✅ 必需: Python编程强大基础
- ✅ 有帮助: 深度神经网络基础知识
- ✅ 有帮助: PyTorch基础(提供附录A快速入门)
硬件要求
- 💻 普通笔记本电脑即可: 主要章节代码设计在常规笔记本上运行
- 🚀 自动GPU加速: 如果可用,代码会自动使用GPU
- ⚡ 无需专用硬件: 确保广泛受众可以学习
软件环境
- Python 3.x
- PyTorch
- 其他依赖详见setup目录
配套资源
视频课程
- 📹 17小时15分钟完整视频课程
- 逐章编码演示
- 可作为独立学习资源或配合书籍使用
- Manning平台: Master and Build Large Language Models
后续书籍
《Build A Reasoning Model (From Scratch)》
- 可视为续集
- 从预训练模型开始
- 实现不同推理方法:
- 推理时间扩展
- 强化学习
- 蒸馏技术
- 改进模型推理能力
- GitHub仓库: reasoning-from-scratch
测试资源
免费170页PDF: 《Test Yourself On Build a Large Language Model (From Scratch)》
- 每章约30道测验题及答案
- 帮助测试理解程度
- Manning网站免费下载
练习解答
- 每章包含多个练习
- 解答汇总在附录C
- 对应代码notebook在各章节文件夹中
- 示例:
./ch02/01_main-chapter-code/exercise-solutions.ipynb
- 示例:
项目获取
下载方式
方式1: 直接下载ZIP
# 点击GitHub页面的Download ZIP按钮
方式2: Git克隆
git clone --depth 1 https://github.com/rasbt/LLMs-from-scratch.git
代码组织
- 每章有独立文件夹:
ch02/,ch03/, 等 - 主要代码在
01_main-chapter-code/子文件夹 - 额外资源在对应的编号文件夹中
学习路径建议
思维模型
书籍提供了一个清晰的思维导图,总结了所有涵盖的内容:
- 理解LLM基础
- 文本数据处理
- 注意力机制
- GPT架构实现
- 预训练技术
- 微调方法
- 实际应用部署
学习建议
- 初学者: 从第1章开始,按顺序学习,完成每章练习
- 有基础者: 可跳过熟悉的章节,重点关注特定主题
- 实践者: 使用奖励内容探索高级话题
- 研究者: 参考引用格式,在研究中引用本资源
社区与支持
反馈渠道
贡献说明
- 由于对应印刷书籍,主要章节代码保持一致性
- 当前不接受扩展主要章节内容的贡献
- 确保与实体书内容一致,提供流畅学习体验
引用信息
Chicago格式
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}
}
关键链接
- 📖 GitHub仓库: https://github.com/rasbt/LLMs-from-scratch
- 🛒 Manning出版商: http://mng.bz/orYv
- 🛒 Amazon购买: https://www.amazon.com/gp/product/1633437167
- 📹 视频课程: https://www.manning.com/livevideo/master-and-build-large-language-models
- 🧠 推理模型后续: https://github.com/rasbt/reasoning-from-scratch
- 📄 配置文档: setup/README.md
总结
这是一个全面、系统的LLM学习资源,适合:
- 🎓 希望深入理解LLM工作原理的学习者
- 👨💻 想要实践实现GPT类模型的开发者
- 🔬 从事NLP和深度学习研究的研究人员
- 🚀 对AI和机器学习感兴趣的技术爱好者
通过这个项目,你将获得从零构建、训练和微调大型语言模型的完整能力。