CloudMatrix384 LLM Serving
导言
一台加速卡跑不下、几百张卡又容易互相等待时,问题就不再只是“算力够不够”,而是谁负责算、谁负责搬、状态放在哪里、下一步在等什么。本文以知乎学习笔记为线索,回到原始论文逐项核验,用“超级厨房”“专家快递”和“共享图书馆”三个直觉,解释 CloudMatrix384 服务 DeepSeek-R1 的四个关键机制。
导言
一台加速卡跑不下、几百张卡又容易互相等待时,问题就不再只是“算力够不够”,而是谁负责算、谁负责搬、状态放在哪里、下一步在等什么。本文以知乎学习笔记为线索,回到原始论文逐项核验,用“超级厨房”“专家快递”和“共享图书馆”三个直觉,解释 CloudMatrix384 服务 DeepSeek-R1 的四个关键机制。
导言
MPI、RDMA 和内存语义都能搬运数据,但它们让应用表达的是不同对象:MPI Point-to-Point 表达 rank、tag 和消息,RDMA Verbs 表达 QP、WQE 和完成记录,内存语义则尽量让应用只表达 地址、长度、读写方向和数据依赖。
后一种方式的收益不是“凭空消灭通信”,也不是“任何场景都比 RDMA 带宽高”。它真正改变的是通信契约:把外围队列事务下沉为更接近计算流水的地址访问与 tile 可见性,使 Scale-Up 域内的短操作、细粒度生产消费和异步流水更容易表达。
导言
小 batch LLM 推理并不总是被矩阵乘法本身限制。数十到数百个 kernel 的启动边界、kernel 尾部气泡、中间张量写回 HBM,以及 MoE 的 Dispatch/Combine 通信,都可能让计算单元等数据、让内存等指令、让互联等计算。MegaKernel 的核心不是“把代码写得更大”,而是把 host 侧的算子调度下沉为 GPU 内部的任务系统。
本文沿三条路线展开:Hazy Research 的手写整模型 MegaKernel、MPK 的编译器与常驻运行时、DeepSeek MegaMoE 的 expert-wave 通信计算流水。结论是:这类优化用更强的静态专用化和片上资源约束,换取更少的启动边界与更细的就绪事件;收益必须与寄存器、共享内存、HBM、互联、功耗和动态路由一起核算。
导言
“降低显存”不是一种动作。它可能是在减少对象大小、限制同时在途的对象数量、把对象搬到 CPU、缩短对象生命周期,也可能只是把 allocator 中未占用的缓存块归还给驱动。
本文固定到 XTuner 397b 分支 commit e949653,从一个第一次接触训练显存优化的读者视角,拆解原始清单中的 13 个技术点。每项都回答:大对象是什么、为什么形成峰值、执行时序怎样、数据流经过哪里、伪代码如何写、适用于什么条件,以及效果边界在哪里。
导言
DeepSpeed 的五个观测工具不是重复功能:FLOPs Profiler 回答“理论计算在哪”,PyTorch Profiler 回答“时间实际花在哪”,Communication Logging 回答“哪类 collective 在拖慢”,Autotuning 回答“哪个配置在当前目标上更好”,Monitor 回答“实验长期发生了什么”。
导言
MoE 和模型压缩看似方向相反:前者扩大总参数,后者缩小部署对象。它们实际都在重写“每个 token 访问哪些参数”。DeepSpeed-MoE/MoE Inference 管理稀疏路由和专家放置;Model Compression/MoQ 管理层、权重和精度的删减。
导言
“异步”只说明调用可以提前返回,不说明后台工作一定能被隐藏。DeepNVMe、Ulysses-Offload、ZenFlow 和 DataStates 分别搬运参数/状态、Attention 工作集、优化器更新与 checkpoint;判断它们是否有效,必须同时检查前台关键路径和后台队列是否稳定。
导言
通信优化只有两条基本路线:少传,或让传输不再暴露在关键路径。1-bit Adam/LAMB 与 0/1 Adam 属于前者,Domino 属于后者。前者改变数值算法,后者改变调度;两者的正确性风险和验收方式完全不同。
导言
KV cache 最容易造成的误解,是把所有名为 K/V 或 state 的张量都看成同一种“缓存”。事实上,训练时为反向传播保留的 K/V activation、推理时跨 decode step 存活的 KV cache、GDN 跨 token 改写的固定状态,生命周期和分布式处理都不同。
本文从一次 token 生成开始,逐对象解释 MHA、DSA 与 GDN 保存什么,再讨论 CP、USP 切开长序列后,临时 activation 和持久 cache 分别需要怎样的通信。
导言
“显存不够”不是一个足够精确的诊断。可能是优化器状态常驻 GPU,可能是 ZeRO-3 跨节点通信暴露,也可能是单层矩阵本身无法放进一张卡。ZeRO-Offload、ZeRO++、MixZ++ 和 AutoTP 分别处理这四类问题,不能把它们当成同一开关的不同档位。