Home
Softono

Diy Llm

Open source Jupyter Notebook
914
Stars
95
Forks
0
Issues
3
Watchers
2 months
Last Commit

 About Diy Llm

🎓 系统性大语言模型构建课程|🛠️ 覆盖预训练数据工程、Tokenizer、Transformer、MoE、GPU 编程 (CUDA/Triton)、分布式训练、Scaling Laws、推理优化及对齐 (SFT/RLHF/GRPO)|🚀 6 个渐进式作业 + 代码驱动,建立 LLM 全栈认知体系

Platforms

Web Self-hosted

Languages

Jupyter Notebook

Need Help Installing Diy Llm?

We provide expert installation service for this software. Our team will install, configure, and secure Diy Llm on your server. plans start at just $30.

alt text

Diy-LLM

GitHub stars GitHub forks Language GitHub Project

📚 在线阅读地址

📚 带你系统性学习大语言模型

一座为中文学习者量身打造的"LLM炼丹工坊"

我们希望这门 CS336 中文课程,不只是斯坦福原版的"汉化版",而是一座为中文学习者量身打造的"LLM炼丹工坊"。在这里,你亲手锻造理解、打磨代码、调控火候,最终炼出属于自己的大模型真丹。

📋 前置要求

  • Python 编程:熟练掌握 Python 和软件工程能力
  • 深度学习基础:熟悉 PyTorch,了解神经网络基本原理
  • 数学基础:线性代数、概率统计、微积分
  • 机器学习:需对机器学习与深度学习的基础知识有扎实掌握
  • GPU 编程(可选):了解 CUDA 基础概念会更佳,不懂也没关系,本项目也有入门教程

📚 课程愿景

  • 硬核理论与动手实战并重:我们会完整保留原版课程的技术深度,但会用更符合中文学习者思维的方式重构知识体系。对于必要的数学、深度学习前置知识,我们会帮你补齐,确保学习曲线平滑,让每个认真投入的人都能跟上。
  • 搭建一套循序渐进的知识体系:将构建LLM这个庞大工程,拆解成一个个可以上手、可以理解的模块。学完后,你将拥有一个关于LLM的完整知识图谱。
  • 代码驱动,知行合一:课程的核心是"用代码思考"。所有作业,我们不仅会提供实现代码,更会分享写下每一行代码时的思考过程。
  • 贴近国内环境的本土化改造:考虑到国内的网络环境、大家手头的计算资源以及独特的开源生态,我们会提供更接地气的解决方案和案例(比如,多聊聊Qwen、DeepSeek等国产优秀模型)。

🎯 项目意义

学完这门课,你能得到什么?

  • 扎实的技术地基:你将能亲手"造"出自己的LLM,对每个核心组件都了然于胸。
  • 宝贵的工程经验:掌握从数据处理、模型训练到部署优化,堪比大厂的全流程实战技能。
  • 突出的行业竞争力:具备大模型研发的核心能力,为你进入心仪的大厂或团队铺平道路。
  • 清晰的科研视野:对LLM领域有体系化的认知,为未来深入研究打下坚实的基础。

📖 课程目录

章节 关键内容 配套作业 状态
前言 项目背景、学习路线、前置知识 -
第1章 工具使用 W&B 实验追踪、超参数搜索、可视化面板 - 📝
第2章 分词器 BPE 算法原理、Unicode 规范化、手写 tokenizer 训练代码 作业1
第3章 PyTorch 与资源核算 混合精度训练、梯度累积、FLOPs/显存估算 -
第4章 语言模型架构与训练细节 RoPE、RMSNorm、SwiGLU、AdamW、Pre-Norm vs Post-Norm、学习率调度 作业1
第5章 混合专家模型 Top-K 路由、负载均衡、辅助损失、Expert Parallelism、DeepSeekMoE -
第6章 GPU 与相关优化 显存带宽与计算强度、Flash Attention、Kernel Fusion、混合精度、BF16/TF32 作业2
第7章 GPU 高性能编程 CUDA 编程模型、Tensor Cores、Shared Memory、Triton 入门 作业2
第8章 分布式训练 数据并行/模型并行/流水线并行、ZeRO-1/2/3、FSDP、梯度累积、All-Reduce 作业2
第9章 Scaling Laws Chinchilla 定律、计算最优配置、Scaling 实验设计、Extrapolation 作业3
第10章 推理 KV Cache、投机解码、量化 (GPTQ/AWQ)、PagedAttention、Continuous Batching 作业6
第11章 数据工程 数据质量过滤、MinHash 去重、PII 脱敏、数据配比、Data Curriculum 作业4
第12章 评估与基准测试 MMLU、HumanEval、HELM、CEval、AlpacaEval、Arena 排名 作业6
第13章 大模型的基本训练流程 Pre-training、SFT、DPO、RLHF PPO 流程、Alignment Tax 作业5
第14章 可验证奖励的强化学习 GRPO、Rule-based Verifier、Outcome/Process Reward、RLVR 与 R1 训练方案 作业5
第15章 扩展内容 1. LLM 推理的本质是什么?(黎又榛)
2. LeCun 眼中 LLM 的未来在哪里?(黎又榛、jiangyinhe、李盛康、徐虎)
- 🔄

状态图例说明:✅ 已完成 🔄 更新中 📝 待完善 🚧 筹备中 ⏸️ 暂缓

📝 作业概览

作业 核心任务 状态
作业1:手搓大模型 实现 tokenizer、model architecture、optimizer,训练一个极简语言模型
作业2:系统优化 性能分析与基准测试;用 Triton 实现 FlashAttention-2;构建分布式训练代码
作业3:扩展定律 理解 Transformer 各组件功能;拟合 scaling law 预测模型扩展效果
作业4:数据处理 将 Common Crawl 原始数据转换为预训练数据集,执行过滤与去重
作业5:模型对齐 应用 SFT 与强化学习(如 GRPO)训练模型解决数学问题
作业6:模型评估 使用 lm-evaluation-harness 和 evalscope 进行多维度评测(语言理解、常识推理、代码、数学推理)

🚀 快速开始

# 克隆仓库
git clone https://github.com/datawhalechina/diy-llm.git
cd diy-llm
# 安装基础依赖(根据具体作业需求安装)

学习路径

1️⃣ 理论学习 → 按章节顺序阅读 docs/zh/ 目录下的中文文档(English version in docs/en/
2️⃣ 实践练习 → 完成 coursework/ 目录下的 6 个作业
3️⃣ 深入理解 → 阅读代码实现,理解每个组件的设计

项目结构

diy-llm/
├── docs/                    # 在线文档
│   ├── zh/                 # 中文文档(默认)
│   │   ├── 前言.md
│   │   ├── chapter1/       # 工具使用
│   │   ├── chapter2/       # 分词器
│   │   ├── chapter3/       # PyTorch 与资源核算
│   │   ├── chapter4/       # 语言模型架构与训练细节
│   │   ├── chapter5/       # 混合专家模型
│   │   ├── chapter6/       # GPU 与相关优化
│   │   ├── chapter7/       # GPU 高性能编程
│   │   ├── chapter8/       # 分布式训练
│   │   ├── chapter9/       # Scaling Laws
│   │   ├── chapter10/      # 推理
│   │   ├── chapter11/      # 数据工程
│   │   ├── chapter12/      # 评估与基准测试
│   │   ├── chapter13/      # 大模型的基本训练流程
│   │   ├── chapter14/      # 可验证奖励的强化学习
│   │   └── chapter15/      # 前沿扩展内容
│   ├── en/                 # English documentation
│   │   └── ...
│   └── .vitepress/         # VitePress 配置
├── coursework/              # 实践作业
│   ├── assignment1-basics/        # 作业1:手搓大模型
│   ├── assignment2-systems/       # 作业2:系统优化
│   ├── assignment3-scaling/       # 作业3:扩展定律
│   ├── assignment4-data/          # 作业4:预训练数据处理
│   ├── assignment5-alignment/     # 作业5:对齐
│   └── assignment6-evaluation/    # 作业6:评估
├── README.md               # 项目说明
└── .gitignore              # Git忽略配置

PDF 版本下载

本教程提供 PDF 版本,方便离线阅读和打印学习。为防止各类营销号加水印后贩卖给 LLM 的读者,我们特地在 PDF 文件中添加了不影响阅读的 Datawhale 开源标志水印,敬请谅解~

📥 Diy-LLM 课程讲义 PDF: https://github.com/datawhalechina/diy-llm/releases/latest/

🔗 相关链接

  • 仓库地址:https://github.com/datawhalechina/diy-llm
  • 在线阅读地址:https://datawhalechina.github.io/diy-llm/
  • 原版课程主页Stanford CS336 (Spring 2025)
  • 原版课程项目:https://github.com/stanford-cs336/spring2025-lectures/tree/main

❓ 常见问题

Q: 没有 GPU 可以学习吗?

理论部分可以正常学习,作业中的部分内容可以在 CPU 上调试,但完整训练需要 GPU。建议使用云服务平台。

Q: 与原版 CS336 有什么区别?

我们在保留原版技术深度的基础上,针对中文学习者进行了本土化改造,包括中文讲解、作业实现、更详细的参考内容来源、国产模型案例等。

👥 贡献者

贡献者名单

pic
徐虎

项目负责人
Datawhale 成员
上海交通大学
负责内容:第1、3、9、12、14章;作业5、6;全文内容审核

pic
李盛康

项目负责人
Datawhale 成员
西安邮电大学
负责内容:第4、6、7、8、13章;作业2、4

pic
黎又榛

项目负责人
Datawhale-鲸英助教
负责内容:第2、5、10、11、13章;作业1、3;

  • 感谢 @aimetrics作业1 的 train.py 中,增加了在 Macbook 设备上的 MPS 支持
  • 感谢@FuTseYi(Datawhale成员)对网站迁移、部署和重构的支持
  • 感谢@jiangyinhe参与第 15 章扩展内容《LLM 的未来 - Lecun》的整理

注:我们感谢每一位为项目做出贡献的开发者!

我们欢迎所有形式的贡献!无论是文档改进、代码优化、bug修复还是新内容添加,都是对项目的宝贵支持。

如何贡献

  1. 报告问题:如果发现文档错误、代码bug或改进建议,欢迎提交 Issue
  2. 提交代码:Fork 本仓库,创建你的特性分支,提交更改后发起 Pull Request
  3. 完善文档:帮助改进文档、翻译内容或添加示例
  4. 分享经验:在讨论区分享学习心得和实践经验

贡献指南

  • 提交代码前请确保代码风格一致
  • 添加新内容时请遵循现有的文档格式
  • 提交PR时请提供清晰的描述和变更说明
  • 欢迎在Issue中讨论大的改动方案

📝 更新日志

项目持续更新中,最新进展请查看 GitHub Releases 或提交记录。

📄 许可证

知识共享许可协议

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。

🙏 致谢

  • 感谢 Stanford CS336 课程团队提供优秀的原版课程
  • 特别感谢@Sm1les对本项目的帮助与支持
  • 感谢所有为项目做出贡献的开发者
  • 感谢开源社区的支持与反馈

⭐ Star History

如果这个项目对你有帮助,欢迎给个 Star ⭐️!

Star History Chart


让更多人能够系统性地学习大语言模型构建技术

Made with ❤️ by the Datawhale