My learning notes/codes for ML SYS.
一直以来对 ML + SYS 很感兴趣,苦于本科没有学好 ML,更没学好 SYS,但是读博了觉得自己应该可以在这方面试一试。
有如此打算,一来是我发觉组里大多同学做的是 ML Theory + Application,但是真的把一个 Theory 落到一个良好的 Application 上都有一定阻碍。譬如组里之前发的两篇工作 SPIN 和 SPPO,都有很好的影响力,但是工程实现不尽理想。虽然这并不妨碍工作的价值,但是如果在工程/系统上优化好,想来可以有更好的影响力。
此外,博士入学前的暑假,我和组里同学做了一个 In-context Learning for Agent 的工作 COPS,比较符合我的审美。我们就两个人主力干活,一个大哥推理论,而我负责在工程/系统上实现。这种工作模式让我的体感非常舒适,基于此,我甚至得出一个粗糙的结论:
这就是我想做 ML + SYS 的初衷了。所以从 2024 年的夏季开始,我开始慢慢上手 ML + SYS 这个尚且方兴未艾的领域。需要学习的实在太多了,有的在一些平台(譬如知乎和 HuggingFace Blog)上已经有了很好的资料,但是其他部分仍有所欠缺。所以,这个 repo 主要记载了我自己的一些学习笔记/读后感/思索/参考过的资料 etc,我姑且按照自己的大版图进行分类,也欢迎大家 PR。每一个大的板块,倒叙阅读就是我的学习过程,欢迎大家参考此路径上手。
- 扩展 OpenRLHF 的推理引擎:将 SGLang 接入到 OpenRLHF 的开发笔记,整个过程非常痛苦,而且目前还有 nccl hang error,已经直接联系了 deepspeed core contributor 在修复了。
- SWE-Bench:如何构造 LLM 时代的优秀 Benchmark,基于 SWE-Bench 的论文阅读笔记,如何构造好的 benchmark 以为 post-training 提供细粒度 reward,是永恒且美妙的话题。
- 浅析以 OpenRLHF 为代表的 post-training 系统的计算流程:基于猛猿小姐姐的文章再做补充,Github native 渲染的巨烂,甚至看知乎好了。
- 图解大模型RLHF系列之:人人都能看懂的PPO原理与源码解读以及图解OpenRLHF中基于Ray的分布式训练流程:猛猿小姐姐的非常好的 RLHF 入门资料,看了之后会对 RLHF 的计算流以及 OpenRLHF PPO 的框架有很好的理解,我自己也补充了写自己的理解在 RLHF 的计算流。
- Latency optimization for weight updates:一次对效率的 debug 过程,同样刊载于记一次对 SGLang weight update latency 的优化。
- 浅析主流 Alignment 算法与 NeMo-Aligner 框架
- SGLang Code Walk Through:一个请求被 SGLang Engine 处理的全过程,还有一些 part 没有完成,但是大多地方已经 okay,也让很多 SGLang begginer 就此开始。这里还有中文版本。
- Walk Through SGLang / VLLM Worker:SGLang 的代码不完全解析,同样刊载于 Walk Through SGLang / VLLM Worker,这次我们还贴心提供了英文版本。更详细的解析应该参考 SGLang Code Walk Through,这个只是辅助看看。
- Reward / Embed Model Sever Engine 现状浅析
- SGLang 后端原文解析
- 小白视角:利用 vllm serve 新的 Embedding Model
- 小白视角:利用 SGL 来 Serve Embedding Model
- 小白视角:vllm 迁移到 SGLang 的体验与收获
- Mooncake:将 P / D 分离进行到底
- prefill 和 decode 该分离到不同的卡上么?
- 基于 chunked prefill 理解 prefill 和 decode 的计算特性
- ModelServer:基于 SGLang 的前端分发系统
- NCCL 与 NVIDIA TOPO:NCCL 的入门与 NVIDIA 显卡的检测,同样刊载于NCCL 与 NVIDIA TOPO。
- PyTorch Distributed:
torch.distributed
的通讯实践, GIL 和all_reduce
的细节。这一部分同样刊载在 知乎:PyTorch 通讯实践。 - Give me BF16 or Give Me Death,当下量化方法的全面评测
- AWQ:模型量化应当关注激活值
- [原创][深度][PyTorch] DDP系列第一篇:入门教程:虽然我没学明白 DDP 的内容,我只是借此学习了下 GIL 和 ring all reduce,这一步刊载于 torch-distributed 的后记。
- nvidia-smi命令详解和一些高阶技巧介绍:主要是一些网络拓扑,在我本机的结果记录在 nccl 部分。