学习让我快乐

争于世, 不争于势;简洁, 高效, 赏心悦目

刚打开 sglang 代码我就已经发现了

前言 最近半年起, 我读代码的体验被 AI 拉高了整整一个数量级! 在这之前, 我其实有过好几段啃大型项目源码的经历: linux kernel, PostgreSQL/Greenplum, NCCL 等等. 那时候读代码最痛苦的地方, 倒不是某一处逻辑有多难, 而是那种一叶障目, 盲人摸象的无力感——你看到一个字段, 不知道它到底是干嘛的; 你看到一个 if 分支, 不知道它为什么要存...

转型,再出发

前几天翻自己的工作周报, 一眼瞥到 2024-09-23 那条: “Vllm 链路初步掌握了” 当时还为搞清楚 vllm 怎么跑起来庆祝了一下, 现在再看, 已经是另一段人生开始的样子了。 从那天到今天, 不知不觉, 我在 AI 已经待了快两年。这两年里完成了两次转型: 一次是从数据库内核钻进 LLM 推理, 在百炼把 PD 分离从 blade-kvt 一路做到 vLLM HybridCo...

RL 下 Mooncake Store 演进分析

前面几篇 Mooncake 统一内存池:AI Vibe Coding 与 Rust, Mooncake 统一内存池:从默认 Evict 到 Linux Reclaim 发出去之后, 收到了不少业界同学的交流和反馈, 线上线下都有不少同学来聊这条线. 所以这篇文章不再只讲某一个点, 而是想从 RL 这个具体场景出发, 系统梳理一下 Mooncake Store 这几轮演进: 为什么先做统一内存...

Mooncake Evict: 一次 std::make_pair 让 iter_ 悄悄失效

上一篇 Mooncake 统一内存池:从默认 Evict 到 Linux Reclaim 主要讲的是 unify memory pool 下 evict 的整体语义、冷热链表、以及为什么要借 Linux reclaim 的职责划分. 但那篇文章里有一条工程红线, 我当时只是一笔带过: KeyEvictInfo.iter_ 必须始终指向它当前所在 list 的 iterator. 只要这条不变...

Mooncake 统一内存池:从默认 Evict 到 Linux Reclaim

之前那篇 Mooncake 统一内存池:AI Vibe Coding 与 Rust 里, 我主要讲的是 local master + unify memory pool 怎么把 Pod 内分裂的数据面收拢成统一共享池 G. 在我们的系统中,Unify memory pool 已经逐步替代推理/训练系统里所有需要 shared memory 交换数据的地方,在大幅降低代码复杂度/架构复杂度的同...

Rapid transfer_kv:只为更快的 PD 分离

关于目前线上 PD 分离实现, 我之前其实已经零散写过不少: PD 分离中的 GDR 主要在讲 P 侧如何 layer-by-layer 地把 kvcache 直接写到 D 侧显存. PD 分离中的 kvcache 传输优化 主要在讲 kvt 数据面本身怎么提速. PD 分离:全面上线 则更系统地介绍了 kvt 和 HybridConnector 的来龙去脉. 如果想看一...

Mooncake 统一内存池:AI Vibe Coding 与 Rust

最近我在做 Mooncake 接入 RL, 收益颇丰. 正好借这个机会, 总结下我们基于 Mooncake 所做的 local master / unify memory pool 设计. 一开始看上去, 这像是一个“把 DummyClient.get_buffer()/put_parts() 做快一点”的问题. 但真正把链路扒开来看就会发现, 问题远不止如此. 真正的问题是: 在一个 Po...

Reinforcement-Learning 学习笔记

是的, 这是一本学习笔记, 对 Sutton Reinforcement Learning: An Introduction 的学习笔记, 正如我之前那些学习笔记一样, 这种笔记内容上并不连贯, 阅读性不佳. 更多的是作为我时不时的参考使用, 所以不要尝试读下去. 1 Introduction 1.3 强化学习的要素 1.4 Limitations and Scope 1.5 A...

对 PPO-clip/penalty 一种理解

之前读大猿老师的人人都能看懂的RL-PPO理论知识时,虽然受益匪浅,但对 PPO-clip/penalty 究竟如何起效,心里还是有点“雾里看花”。最近做了一番详细调研后,我决定换个角度,从梯度的变化出发,彻底搞懂 clip 和 penalty 的作用机理。P.S. 大猿老师的文章真是越读越舒服,每篇都能把原理讲得清清楚楚! 首先来看下为什么需要 clip/penalty; 在朴素的 RL...

数字电路设计原理与实践学习笔记

是的, 这是一本学习笔记, 正如我之前那些学习笔记一样, 这种笔记内容上并不连贯, 阅读性不佳. 更多的是作为我时不时的参考使用, 所以不要尝试读下去. 1 引言 Q: 晶体管与门电路的关系是什么? ChatGPT: 晶体管与门电路之间是“器件”与“功能单元”的关系。简单说: 晶体管是构成门电路的最基本元件 门电路(如与门 AND)本质上是用晶体管组成的开关网络。 门电路的...

大家好, 我是练习AI一年半的

时光荏苒,蓦然回首,自写下 从数据库到 AI 一文正式踏入 AI 领域,至今恰好一年。最近在整理述职 ppt 时,系统梳理了这段时间的学习与实践,索性也在这里做个简要总结,权当记录这段与 AI 共舞的成长旅程。 PD 分离: 为什么 HybridConnector 我刚来到 AI 时, 分布式推理正成为业界主流趋势, 大家都在探索如何通过PD分离以提升吞吐与降低成本; 而且非常幸运, 老...

vllm 中 async scheduling

当前 vLLM 的异步调度(async scheduling)实现仍较为复杂. 在深入剖析其具体代码之前, 本文将以一条具体的查询请求为例, 手动模拟调度器 scheduler 与 worker 的执行流程, 并标注其中的关键状态变化. 通过这种方式纲举目张, 为后续深入理解代码细节提供一个清晰的参照框架. S0.schedule S0 对应着发生在 R 上的第 0 次 step;...

转折中的 PD 分离

就在昨天晚上, 我们线上 PD 分离部署规模又上了一个新的台阶. 这次没有想往常几次爬坡出现新的问题, 一时间心有所感, 就是想写点什么记录下我们整个 PD 分离的开发历程. kvt 1.0 看过我历史几篇关于 PD 分离的文章, 比如 PD 分离中的 GDR 等的同学都有了解, 我们 PD 分离在早期设计上就期望做到旁路, 不需要对 step 主流程做大的改动. ZeroOverh...