本Repo提供CS336作业学习交流的地方。
CS336是斯坦福大学在2025年开设的从零到一实现大语言模型的课程。
现在大模型是资金和人才最密集的领域。即便不做大模型从学习和发展的角度都有必要参与,不愿意技术上的旁观者。
CS336的授课教师也给出了自己实现大模型的目的,
Full understanding of this technology is necessary for fundamental research.
整个课程包括五次作业,通过五次作业可以了解到现代大语言模型的各个方面:
- 实现BPE分词器 (实现高度优化的c++ BPE算法,在TinyStories数据上train处理不到2s。)
- 实现Transformer模型、交叉熵损失函数、AdamW优化器及训练循环
- TinyStories和OpenWebText数据集上进行训练
- 打榜:在H100上给定90分钟内最小化OpenWebText的perplexity
- 对实现进行基准测试和性能分析
- 实现FlashAttention2算法 (实现casual时负载平衡的forward算法,实现Triton的backward算法)
- 实现分布式数据并行训练
- 实现优化器状态分片
- 定义训练API标准化接口
- 提交训练任务(在FLOPs预算内)并收集训练数据
- 对训练数据拟合scaling law
- 提交对scaled up后超参数的预测结果
- Common Crawl HTML转文本
- 训练质量与安全内容分类器
- 基于MinHash的去重处理
- 打榜:在给定token预算下最小化perplexity
- 监督微调实现
- 直接偏好优化实现
- 群体相对偏好优化实现
- 安装uv
建议通过uv的官方安装最新的版本 https://docs.astral.sh/uv/getting-started/installation/ - 运行作业一的测试程序
uv run pytest tests/test_train_bpe.py