Mini-SGLang 源码阅读(五):模型层、Tensor Parallel 与自定义 Kernel
前四篇已经解释请求如何到达 Scheduler、KV Cache 如何管理,以及 Engine 怎样执行一个 Batch。最后还剩一个问题:几十亿参数怎样分布到多张 GPU,并在每层计算后重新组合? 本文先推导 Tensor Parallel 的基本原理,再分析 Mini-SGLang 的 Layers、Models、Distributed、MoE 和 Kernel 模块。源码基于提交 9a91cfa。 一、为什么需要 Tensor Parallel 如果模型权重或 KV Cache 放不进单张 GPU,最直接的方法是把不同层放到不同 GPU,也就是 Pipeline Parallel。但自回归 Decode 每轮 token 很少,流水线容易出现气泡,而且跨 stage 传递激活会增加延迟。 Tensor Parallel 把同一层的矩阵切到多张 GPU,让所有 GPU 同时计算同一批 token: 同一 Transformer Layer GPU 0:处理部分权重 GPU 1:处理部分权重 GPU 2:处理部分权重 GPU 3:处理部分权重 ↓ collective 组合为完整层输出 它需要更频繁的 GPU 间通信,但能共同承载单层权重,并保持每个 rank 的执行进度一致。 二、Column Parallel Linear 考虑线性层: Y = XW 按输出维切分权重: ...