[斯坦福CS336]作业二:系统与并行计算
1 作业概述
本次作业中,你将亲自动手实践提升单 GPU 训练速度和将训练扩展到多 GPU 的方法。
需实现的内容
- 基准测试与性能分析工具
- FlashAttention-2 的 Triton 内核
- 分布式数据并行训练
- 优化器状态分片
本次作业中,你将亲自动手实践提升单 GPU 训练速度和将训练扩展到多 GPU 的方法。
本次作业中,你将获得训练语言模型解决数学问题时进行推理的实践经验。
对于感兴趣的同学,我们将在未来几天发布可选作业部分:使语言模型与人类偏好对齐。
在当今 AI 技术浪潮中,掌握大模型知识已成为系统开发者的必备技能。通过参与斯坦福 CS336 大模型系统课程,开始从零构建大模型的实践之旅。这门课程很可能在未来 3 年内成为系统领域的标杆课程(正如 CMU 15-445 数据库课程近年来的地位)。
本文是 CS336 作业一 的延伸阅读,详细介绍 BPE 分词器的优化实现。
文档中推荐使用的 cppyy 在 Mac 和 Linux 环境中有问题。为了追求高性能,我使用 Pybind11 来绑定 C++ 代码:预分词由 Python 处理,而 BPE 归并过程交给 C++。实际最大的瓶颈还是预分词,可以直接用已有的代码 pretokenization_example.py 做分块并行(8核 100s → 16核 30s)。
当今,大部分平台已逐步从“一次性买断”过渡到“订阅制”,1Password 8 也是如此。公司为了维持经营、继续发展做出此番举动也并非不可理解。
brew install automake autoconf libtool pkg-config texinfo coreutils gnu-getopt \
python@3 cmake ninja ccache bison byacc gettext wget pcre maven llvm@16 openjdk@17 npmDoris master 目前只支持 jdk17 版本
需要设置的环境变量
export JAVA_HOME="/opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home"
export PATH=$JAVA_HOME/bin:$PATH
export PATH="/opt/homebrew/opt/openjdk@17/bin:$PATH"
export PATH="/opt/homebrew/opt/texinfo/bin:$PATH"拉取代码