这是一个可复现的分析模型,用论文图表数字化数据比较两种 LLM 推理部署策略:
- Baseline / Co-located:每台机器同时承担 Prefill 和 Decode;
- Split / Disaggregated:在机器粒度上建立独立的 Prefill 与 Decode 池。
实验研究的问题是:当 Prefill 和 Decode 的 batch–容量、batch–吞吐曲线具有 不同 scaling 趋势时,解除同机容量竞争能否提高集群的可持续请求吞吐率。
Important
这是独立的论文数据建模实验,不是 Splitwise 或 Kairos 的官方实现,也不是 H100 集群实测 benchmark。输入数据由论文 PDF 图表数字化得到,结果适合验证 建模关系和趋势,不应直接作为生产集群的容量规划结果。
图中前两幅分别给出 Prefill 和 Decode 的 Split/Baseline 实际吞吐倍率,第三幅
给出最优 Split 子策略,第四幅给出 Decode 节点比例 x/X。默认实验使用
BLOOM-176B 曲线、8×H100 80GB 机器、Kairos 四类固定长度负载,以及
X ∈ {2,4,8,16,32,64}。
| 负载 | X=2 | X=4 | X=8 | X=16 | X=32 | X=64 |
|---|---|---|---|---|---|---|
| LPLD | 0.57× | 0.84× | 0.96× | 0.96× | 0.96× | 0.96× |
| LPHD | 0.85× | 0.85× | 1.02× | 1.02× | 1.02× | 1.04× |
| HPLD | 0.52× | 0.77× | 0.90× | 0.97× | 0.99× | 0.98× |
| HPHD | 0.85× | 1.28× | 1.49× | 1.49× | 1.49× | 1.52× |
主要观察:
- HPHD 从
X=4开始稳定受益,最大达到1.52×; - LPHD 只有较大集群获得轻微收益;LPLD、HPLD 在本模型中没有超过 Baseline;
- 24 个配置中,最优策略为 TUF-D 19 次、TUF-P 4 次、CUF-P 1 次,未出现 CUF-D;
- 因两种策略都严格保持请求流平衡,Prefill 和 Decode 的倍率在数值上相等: 两者都等于 Split/Baseline 的可持续 RPS 倍率。
策略标签含义:
| 标签 | 优先目标 | P/D 后缀含义 |
|---|---|---|
| CUF-P / CUF-D | Capacity-utilization-first | P/D 时间利用率达到 1 |
| TUF-P / TUF-D | Time-utilization-first | P/D batch 容量达到上限 |
完整数值位于 results/cluster_results.csv 和
results/split_strategy_heatmaps.csv。
详细公式、候选策略和整数节点求解见 docs/model.md。
需要 Python 3.10+ 和 uv。项目使用本地 .venv,
不会修改系统 Python 环境。
git clone https://github.com/Devil-SX/splitwise-modeling.git
cd splitwise-modeling
uv sync
uv run python -m splitwise_model \
--prompt-throughput-fit piecewise-linear \
--decode-throughput-fit piecewise-linear \
--output-dir results运行测试:
uv run python -m unittest discover -s tests -v常用选项:
--machines 2,4,8,16,32,64
--workloads lpld,lphd,hpld,hphd
--prompt-throughput-fit quadratic|piecewise-linear
--decode-throughput-fit quadratic|piecewise-linear
--data-dir data/paper
--output-dir results
piecewise-linear 在 Figure 6 测量点之间线性插值,在观测区间外固定使用最近
端点;quadratic 对全部散点做普通二次最小二乘拟合。容量曲线始终使用普通
二次拟合。
| 文件 | 内容 |
|---|---|
results/split_strategy_heatmaps.png |
两阶段倍率、最优子策略与 Decode 节点比例 x/X |
results/bloom_phase_curves.png |
BLOOM 的 P/D 容量与吞吐曲线 |
results/fitted_curves.png |
全部容量、BLOOM/Llama 吞吐数据与拟合 |
results/cluster_results.csv |
batch、节点分配、利用率、吞吐和 RPS |
results/model_parameters.json |
拟合参数、质量指标、逆函数和实验假设 |
results/report.md |
按负载展开的可读实验报告 |
所有结果均可由上述命令重新生成。
- Splitwise: Efficient generative LLM inference using phase splitting: Figure 6 的吞吐曲线与 Figure 7 的显存散点;
- Towards Load-Aware Prefill Deflection for Disaggregated LLM Serving: Table 1 的 LPLD、LPHD、HPLD、HPHD 序列长度。
仓库只包含数字化后的 CSV、来源定位、提取方法、校验说明和哈希,不包含论文
PDF。所有数值均标记为 digitized,不是论文作者发布的原始机器可读测量。
详见 data/paper/SOURCE.md。
- 忽略 P/D 之间传输 KV Cache 的延时和带宽开销;
- 不改变单机内部 8-way tensor parallel 划分;
- 令
beam=1,并假设 Decode 容量只随并发请求数变化; - 使用固定的负载中位序列长度,没有模拟请求长度分布、排队或 SLO;
- Figure 7 的数字化散点没有模型标签,不能视为完整的 BLOOM 专属显存测量;
- 容量逆函数可能超出论文观测区间,因此结果包含外推误差。
代码以 MIT License 发布。论文、论文图表及其内容版权归原作者或 出版方所有;仓库中的数字化数据仅用于研究复现和分析,请在使用时引用原论文。
