文档
站内的模块化项目文档,直接由中英文 Markdown 章节驱动。
这个文档区不是把仓库里的 Markdown 原样搬过来,而是把代码重新整理成一张实现地图。
每一章都尽量回答四个问题:
- 这一层代码的职责边界是什么
- 关键函数和类是怎么协作的
- 张量、文本或 checkpoint 是怎样流动的
- 当前实现有哪些真实限制,而不是概念上的“理想版本”
章节分成三层:
- 从原始文本到 decoder-only 模型的核心栈
- 让训练扩展到更大规模的性能与系统层
- 围绕 gsm8k 的 SFT 与 RLFT 对齐流程
两种阅读顺序都成立:
- 如果你先想看仓库全貌,从
项目总览开始 - 如果你想沿着真实数据流往下读,从
Tokenizer 与词表开始
可以直接从下方概览卡片跳到你最关心的模块。
核心栈
从原始文本到 decoder-only 模型训练的基础主路径。
项目总览
从 tokenizer、Transformer、训练循环到 kernel、分布式和对齐流程的整体仓库地图。
Tokenizer 与词表
解释 llm/bpe_tokenizer.py 如何从正则预切分、byte 初始化、merge 学习一路走到 encode/decode。
Transformer 核心
解释 llm/transformer.py 中的 decoder-only 结构,包括 RMSNorm、RoPE、SwiGLU、自定义 attention 和自定义 loss。
训练循环与 Checkpoint
解释 llm/training.py 如何取 batch、初始化多卡环境、执行验证、更新学习率并保存 checkpoint。
规模与性能
让更大训练可行的几层能力:kernel、分布式执行和数据准备。
Flash Attention 与 Kernel 优化
解释 kernel/ 中的 Triton Flash Attention 路径、参考实现和性能对比脚本。
分布式训练与 Sharded Optimizer
解释 parallel/ddp.py 和 parallel/sharded_optimizer.py 如何同步梯度、做 bucket 通信并分摊优化器状态内存。
数据处理流水线
解释 data_processing/ 中从 HTML 提取、语言过滤、去重到 PII masking 和质量分类的完整预处理路径。
对齐流程
围绕 gsm8k 和 Qwen2.5-Math-1.5B 的 SFT 与 RLFT 实现。
gsm8k 上的监督微调
解释 alignment/sft.py 如何构造 prompt-completion 数据、做 completion-only loss,并评估准确率与格式遵循率。
gsm8k 上的强化学习微调
解释仓库如何实现 reward 设计、group normalization、GRPO clip loss 和多 GPU 角色拆分。