# LLM_from_scratch **Repository Path**: aistudy101/llm_from_scratch ## Basic Information - **Project Name**: LLM_from_scratch - **Description**: No description available - **Primary Language**: Unknown - **License**: LGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-04 - **Last Updated**: 2026-03-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 从0到1构建大模型 · LLM from Scratch ![Cover Image](assets/cover.png) > 北京中关村学院 · 专业选修课 · 32学时 / 2学分 > 参考教材:[Stanford CS336](https://stanford-cs336.github.io/spring2025/) --- ## 课程简介 本课程带领学生从零构建完整的大语言模型,覆盖数据、模型、系统、科学、对齐五个层次。完成课程后,学生应能独立实现 BPE 分词器、Transformer 解码器、Flash Attention、分布式训练,并理解扩展定律与对齐技术。 --- ## 课程目录 ### 第一部分:基础组件实现(Lessons 1–4) | 课节 | 标题 | 核心内容 | |------|------|---------| | [Lesson 01](lesson01/lecture.md) | 课程概述与分词技术 | BPE 算法、tiktoken、WordPiece 对比 | | [Lesson 02](lesson02/lecture.md) | PyTorch 基础与资源管理 | autograd、显存计算、FLOPs 估算、余弦学习率 | | [Lesson 03](lesson03/lecture.md) | Transformer 架构与超参数 | 注意力机制、RoPE、GQA、Pre-LN、LLaMA 3 架构 | | [Lesson 04](lesson04/lecture.md) | 混合专家模型(MoE) | Top-K 门控、负载均衡损失、Switch vs Mixtral | **作业1**:[实现 BPE + Transformer + AdamW + 训练小型 LM](assignments/assignment1/project.md) --- ### 第二部分:系统优化与并行化(Lessons 5–8) | 课节 | 标题 | 核心内容 | |------|------|---------| | [Lesson 05](lesson05/lecture.md) | GPU 架构与性能优化 | A100 规格、Roofline 模型、算术强度、Profiler | | [Lesson 06](lesson06/lecture.md) | 自定义 CUDA 核函数与 Triton | Tiled GEMM、在线 softmax、Flash Attention 伪代码、Triton | | [Lesson 07](lesson07/lecture.md) | 并行计算基础 | DDP、张量并行(列/行切分)、Ring-AllReduce | | [Lesson 08](lesson08/lecture.md) | 分布式训练深入 | 3D 并行、ZeRO-1/2/3、流水线并行、混合精度 | **作业2**:[Flash Attention + DDP 分布式训练](assignments/assignment2/project.md) --- ### 扩展定律(Lessons 9, 11) | 课节 | 标题 | 核心内容 | |------|------|---------| | [Lesson 09](lesson09/lecture.md) | 扩展定律基础 | Kaplan vs Chinchilla、幂次律拟合、IsoFLOP 实验设计 | | [Lesson 11](lesson11/lecture.md) | 扩展定律进阶 | 任务特定扩展、数据混合影响、涌现能力争议 | **作业3**:[拟合 Chinchilla 曲线 + 最优规模预测](assignments/assignment3/project.md) --- ### 第三部分:推理、评估与数据(Lessons 10, 12–14) | 课节 | 标题 | 核心内容 | |------|------|---------| | [Lesson 10](lesson10/lecture.md) | 高效推理技术 | KV Cache、PagedAttention、量化(GPTQ/AWQ)、投机解码 | | [Lesson 12](lesson12/lecture.md) | 模型评估方法论 | 困惑度、MMLU/HumanEval、数据污染、LLM-as-Judge | | [Lesson 13](lesson13/lecture.md) | 预训练数据处理 | Common Crawl、语言检测、质量过滤、MinHash 去重 | | [Lesson 14](lesson14/lecture.md) | 数据处理工程实践 | WARC 解析、Ray/Spark 分布式处理、完整流水线 | **作业4**:[处理 Common Crawl 数据](assignments/assignment4/project.md) --- ### 第四部分:对齐技术(Lessons 15–17) | 课节 | 标题 | 核心内容 | |------|------|---------| | [Lesson 15](lesson15/lecture.md) | 对齐技术:SFT 与 RLHF | Chat Template、Bradley-Terry 奖励模型、PPO 剪切目标 | | [Lesson 16](lesson16/lecture.md) | 对齐技术:强化学习进阶 | DPO 推导、GRPO 数学推理、DeepSeek-R1/o1 方法 | | [Lesson 17](lesson17/lecture.md) | 对齐技术实践 | TRL/LLaMA-Factory 工具链、奖励欺骗、Constitutional AI | **作业5**:[SFT + 奖励模型 + DPO + GSM8K 评估](assignments/assignment5/project.md) --- ## 环境配置 ```bash # 建议使用 Python 3.10+ conda create -n llm python=3.10 conda activate llm # 基础依赖 pip install torch torchvision --index-url https://download.pytorch.org/whl/cu118 pip install numpy scipy matplotlib tiktoken # 作业2(Triton Flash Attention) pip install triton # 作业4(数据处理) pip install warc3-wet trafilatura fasttext datasketch # 作业5(对齐) pip install transformers datasets trl peft ``` --- ## 作业列表 | 作业 | 主题 | 对应章节 | 建议时间 | 占总分 | |------|------|---------|---------|-------| | [作业1](assignments/assignment1/project.md) | 基础组件:BPE + Transformer + AdamW | Lessons 1–4 | 3 周 | 15% | | [作业2](assignments/assignment2/project.md) | 系统优化:Flash Attention + DDP | Lessons 5–8 | 3 周 | 15% | | [作业3](assignments/assignment3/project.md) | 扩展定律:拟合 Chinchilla 曲线 | Lessons 9, 11 | 2 周 | 10% | | [作业4](assignments/assignment4/project.md) | 数据处理:Common Crawl 流水线 | Lessons 13–14 | 3 周 | 15% | | [作业5](assignments/assignment5/project.md) | 对齐技术:SFT + RL + DPO | Lessons 15–17 | 3 周 | 15% | **Late Days 政策**:每位学生共有 6 个 late days,每次作业最多使用 3 天。 --- ## 考核方式 | 项目 | 占比 | |------|------| | 课堂表现与出勤 | 10% | | 编程作业(5次) | 70% | | 期末笔试(开卷)| 20% | 作业评分维度:代码正确性(40%)、代码质量(30%)、性能表现(20%)、文档报告(10%) --- ## 学习建议 1. **课前**:阅读对应 `lesson*/lecture.md`,了解核心概念 2. **课后**:完成作业 `assignments/assignment*/project.md`,脚手架代码在 `src/` 目录 3. **遇到困难**:先查 [Stanford CS336](https://stanford-cs336.github.io/spring2025/) 原始材料,再联系助教 4. **提交作业**:按 `project.md` 中的验收标准自检后提交 --- ## 目录结构 ``` llm_from_scratch/ ├── README.md ← 本文件(课程入口) ├── introduction.md ← 课程与学生信息 ├── syllabus.md ← 完整大纲 ├── lesson01/ ~ lesson17/ ← 17 节课讲义 │ └── lecture.md └── assignments/ ├── assignment1/ ← 基础组件实现 │ ├── project.md │ └── src/ ← 脚手架代码 ├── assignment2/ ← 系统性能优化 ├── assignment3/ ← 扩展定律研究 ├── assignment4/ ← 数据处理 └── assignment5/ ← 对齐技术 ``` --- ## 参考资料 - [Stanford CS336: Language Modeling from Scratch](https://stanford-cs336.github.io/spring2025/) - Vaswani et al. (2017). *Attention Is All You Need* - Hoffmann et al. (2022). *Training Compute-Optimal Large Language Models (Chinchilla)* - Dao et al. (2022). *FlashAttention: Fast and Memory-Efficient Exact Attention* - Rajbhandari et al. (2020). *ZeRO: Memory Optimizations Toward Training Trillion Parameter Models* - Rafailov et al. (2023). *Direct Preference Optimization*