r37 addendum: B'(nomtp) vs PP+MTP same-profile input/output throughput comparison (i16k/o512 random-ids cc8-64)
同栈同脚本 nomtp 对拍:cc8 打平(每token 41.0 vs 41.6ms 拐点实证)、cc16 mtp +6%+TTFT-32%、cc>=32 B' 反超 0.9-5.4%(TPOT 好2x);图修复把 r36 1.81x 惨败收敛到 ±6% 水平线;生产 r37 mtp 已恢复核验
This commit is contained in:
parent
911a9a2fb0
commit
4d6dac010c
@ -64,5 +64,10 @@ draft 图(DRAFTEAGER=0)实测无增益(噪声带内互有胜负),保
|
||||
- 语料池 61,772 token 剩余(< 一次 i8k 262,144),i8k 永久无重跑余量,killer random-ids 为标准口径。
|
||||
- 09-09 补测 cc 扫频(i16k/o512,cc 8/16/32/40/64,nreq=2cc):吞吐 cc16 起饱和 130-135 tok/s,
|
||||
accept 全档 3.46-3.68,详见 results/bench_results.md;扫频脚本 scripts/r37_cc_sweep.sh、日志 results/r37sweep_cc*.log。
|
||||
- **09-09 B'(nomtp) 同口径对拍**(同栈同脚本 nomtp 模式、同 seed/nreq/flush-cache,唯一变量=开不开 MTP):
|
||||
cc8 打平(拐点实证:每 token 41.0 vs 41.6ms)、**cc16 mtp +6% 且 TTFT -32%**、cc≥32 B' 反超 0.9-5.4%
|
||||
且单请求 TPOT 好 2×(verify 大步×chunk 交错放大排队相位停顿)。图修复把 r36 时代 1.81× 惨败收敛到 ±6%
|
||||
水平线。脚本 scripts/nomtp_cc_sweep.sh、日志 results/nomtpsweep_cc*.log + nomtp_sweep_all.log,
|
||||
判读全表见 results/bench_results.md "B'(nomtp) vs PP+MTP(r37)" 节。
|
||||
- 勘误:历次 bench 的 rc=1 与 JSON 缺失真因 = 容器内 /data/hf_models/bs_results/ 目录从未存在(写 output-file
|
||||
必失败,指标在 stdout 日志无损);09-09 已补建目录,此后 JSON 可正常落盘。
|
||||
|
||||
@ -62,8 +62,45 @@ bench_serving 的 rc=1 真因 = 跑完打印全部指标后写 `--output-file`
|
||||
从未写成功过**(本 README 早先版本"JSON 被 A16 复测覆盖"的说法有误,目录 09-09 已补建,此后 JSON 可正常落盘)。
|
||||
指标以 stdout 日志为准(results/ 下 5 份扫频日志 + 会话记录中的 killer/A16 数字均完整)。
|
||||
|
||||
## B'(nomtp) vs PP+MTP(r37) 输入/输出吞吐对拍(09-09)
|
||||
|
||||
用户问题:"pp不开投机 vs pp+mtp 的输入吞吐和输出吞吐对比"。此前 B' 仅有语料 i8k 口径数据
|
||||
(r36 判决:B' e2e 61.5s ≡ B 基线 62s;当年 PP+MTP eager 输它 1.81×)——语料池已耗尽无法复测 mtp 侧,
|
||||
故 09-09 用 **deploy_ppmtp_r37.sh nomtp 模式**(= B' 同栈同脚本同 9 挂载,无 spec 无图捕获路径差异)
|
||||
在 60.8 临时部署,跑 **与 r37 扫频完全相同**的 random-ids i16k/o512 负载(同 seed 6508-6564、同 nreq=2×cc、
|
||||
同 --flush-cache、同 mrr16/memfrac/chunk),唯一变量 = 是否开 MTP。跑完 r37 mtp 生产已恢复。
|
||||
|
||||
| cc (nreq) | B' 输入 (tok/s) | r37 输入 (tok/s) | B' 输出 (tok/s) | r37 输出 (tok/s) | 输出 Δ | B' TPOT (ms) | r37 TPOT (ms) | B' TTFT (s) | r37 TTFT (s) |
|
||||
|---|---|---|---|---|---|---|---|---|---|
|
||||
| 8 (16) | 3321.8 | 3379.4 | 103.8 | 105.6 | **mtp +1.7%** | 41.6 | 41.0 | 18.2 | **14.9** |
|
||||
| 16 (32) | 4073.3 | 4318.6 | 127.3 | 135.0 | **mtp +6.0%** | 48.5 | 69.3 | 30.9 | **21.0** |
|
||||
| 32 (64) | 4285.0 | 4247.4 | 133.9 | 132.7 | B' +0.9% | 48.5 | 93.1 | 74.9 | **62.0** |
|
||||
| 40 (80) | 4303.1 | 4171.5 | 134.5 | 130.4 | B' +3.1% | 53.2 | 100.7 | 93.9 | **86.1** |
|
||||
| 64 (128) | 4428.6 | 4187.9 | 138.4 | 130.9 | B' +5.4% | 50.2 | 102.1 | 161.3 | **155.6** |
|
||||
|
||||
(r37 accept 全档 3.46-3.68;输入吞吐与输出吞吐同比率变化——同 token 总量÷同时长,天然一致。)
|
||||
|
||||
**判读:**
|
||||
- **cc8(单波纯 decode 相位)= 拐点数学的直接实证**:mtp 每步 41.0ms×3.46=142ms 产 3.46 tok vs
|
||||
B' 每步 41.6ms 产 1 tok → 每输出 token 41.0 vs 41.6ms,**打平**。图修复后 MTP 恰好落在净收益线上
|
||||
(r36 eager 时代每步 272-275ms,是它输 B' 1.81× 的原因;图化把步成本砍近半,把 1.81× 差距收敛到 ±6%)。
|
||||
- **cc16(甜点)mtp +6%**:唯一显著胜点,且 TTFT 30.9→21.0s(-32%)——decode 总步数少 3.46× → decode
|
||||
与 prefill 的争用窗口更少 → 准入队列消化更快。输入吞吐同 +6%。
|
||||
- **cc≥32(过饱和排队档)B' 反超 0.9-5.4%**,且单请求 TPOT 差到 2×(B' 48-53ms 恒定 vs mtp 93-102ms):
|
||||
verify 大步(16 req × 4 draft token = 64 token/步)与 chunk prefill 相撞时,单步停顿被放大 3.4×;
|
||||
mrr16 准入上限下两臂吞吐都在 130-138 tok/s 饱和,差异全部来自排队相位的长短。
|
||||
- **TTFT mtp 全档更低**(decode 步数少 → prefill 窗口多),与吞吐胜负无关的独立改善。
|
||||
- **口径警示**:历史 B' 语料 i8k 数据(61.5s,out ≈265 tok/s 口径)与本表 random-ids i16k 不可直接比——
|
||||
语料含前缀缓存/不同输入长度/不同输出长度,仅可作"图修复前后相对关系"的参照。
|
||||
|
||||
**生产含义**:cc≤16 负载形态(生产甜点)留 r37 mtp——+6% 吞吐 + TTFT -32%;持续过饱和大队列
|
||||
(cc>>16 长驻排队)业务则 B' nomtp 更优(吞吐 +1-5%,单请求 decode 延迟好 2×)。
|
||||
r37 修复的真正价值 = 把 PP+MTP 从 1.81× 惨败拉回与 B' 同一水平线并在甜点小胜,而非大幅放大吞吐。
|
||||
|
||||
## 生产部署(终态)
|
||||
- 容器 glm53-nvfp4 @ 60.8:30000,`--restart unless-stopped`,health 200。
|
||||
- 启动命令:`bash /root/deploy_ppmtp_r37.sh '--tp 4 --pp-size 2 --disable-overlap-schedule --max-prefill-tokens 16384' mtp 8192 0.88 1 1 0 0`
|
||||
(degloo=1, drafteager=1, verifyeager=0, specdebug=0)
|
||||
- 与 A16 对比后胜出留役;A16 恢复脚本 deploy_glm53_605.sh 留盘可随时切回。
|
||||
- 09-09 曾为 B' 对拍临时换 nomtp 部署约 1.5h(扫频后已按上述命令恢复 mtp 并核验 health 200 +
|
||||
生成抽检正常 + restart=unless-stopped 已设回)。
|
||||
|
||||
@ -0,0 +1,26 @@
|
||||
#!/bin/bash
|
||||
# r37 PP+MTP verify-graph cc 扫频:i16k/o512 random-ids,cc 8/16/32/40/64
|
||||
# 口径:nreq = 2*cc(每档至少两波,测稳态吞吐;与 D 方案 cc40/64 的 nreq=2cc 约定一致),
|
||||
# seed 逐档更换,--flush-cache,输出文件逐档独立(防覆盖)。
|
||||
# 用法: nohup bash r37_cc_sweep.sh > /root/r37_sweep.log 2>&1 &
|
||||
for cc in 8 16 32 40 64; do
|
||||
nreq=$((cc*2))
|
||||
seed=$((6500+cc))
|
||||
echo "=== cc=$cc nreq=$nreq seed=$seed start $(date +%T) ==="
|
||||
docker exec glm53-nvfp4 python3 -m sglang.bench_serving \
|
||||
--backend sglang --host 127.0.0.1 --port 30000 \
|
||||
--dataset-name random-ids --tokenizer /data/hf_models/GLM-5.3-NVFP4 \
|
||||
--num-prompts $nreq --random-input-len 16384 --random-output-len 512 \
|
||||
--random-range-ratio 1.0 --max-concurrency $cc \
|
||||
--temperature 0.0 --flush-cache --warmup-requests 1 --seed $seed \
|
||||
--output-file /data/hf_models/bs_results/nomtpsweep_cc${cc}.json \
|
||||
> /root/nomtpsweep_cc${cc}.log 2>&1
|
||||
rc=$?
|
||||
echo "=== cc=$cc done rc=$rc $(date +%T) ==="
|
||||
grep -E 'Successful requests|Benchmark duration|Output token throughput|Mean TPOT|Accept length|Mean TTFT' /root/nomtpsweep_cc${cc}.log | head -8
|
||||
if [ $rc -ne 0 ]; then echo "BENCH-FAILED cc=$cc"; fi
|
||||
if ! docker ps --format '{{.Names}}' | grep -q '^glm53-nvfp4$'; then
|
||||
echo "CONTAINER-DIED at cc=$cc $(date +%T)"; docker logs --tail 40 glm53-nvfp4 2>&1 | grep -iE 'error|assert' | tail -8; break
|
||||
fi
|
||||
done
|
||||
echo SWEEP-DONE
|
||||
Loading…
x
Reference in New Issue
Block a user