导读
主线位置:三条主线的起点。这一部分不走进任何一段代码路径,只交代读法,并用算式说明后面每一部分要解决的问题从哪里来。
版本:vLLM v0.32.0、SGLang v0.5.22
- 怎么读这一卷:四个 tag 和 commit;源码链接只认 tag;「默认」「可选」「条件默认」分别以源码里的哪种写法为准,比如
VLLM_USE_RUST_FRONTEND默认关、SGLANG_RUST_SERVER默认关,而 SGLang 的 Rust 前缀树默认开但在非 Linux 上回退 Python;四种数字(源码事实、估算、实测、待实测)怎么区分;主线每一步落在哪一页。 - 为什么服务大模型难:按 Llama-3.1-8B 的公开配置算:bf16 权重约 16.06 GB,每 token 线性层约 15 GFLOP,KV cache 每 token 128 KiB;预填充一次读权重算很多 token,解码每步读一遍权重只算少数 token;24 GiB 卡按 vLLM 默认 0.92 的显存比例,扣掉权重最多剩约 7.12 GiB,约 5.8 万个 token 的 KV。都是估算,实测待 C3-1。
flowchart TB read["怎么读这一卷"] --> ver["锁定版本与 commit"] read --> dflt["默认 / 可选 / 条件默认"] read --> nums["四种数字"] read --> map["主线落在哪一页"] why["为什么服务大模型难"] --> pd["预填充算力受限<br/>解码访存受限"] why --> kvb["KV cache 的账"] why --> len["长度差异:碎片与调度"] pd --> p03["03 调度"] kvb --> p02["02 KV cache"] len --> p02 len --> p03
💬 关联讨论
发起讨论加载中...