r37 addendum: i16k/o512 cc 8-64 sweep (nreq=2cc) on serving container; throughput saturates 130-135 tok/s at cc16+, accept stable; rc=1 root-caused (missing bs_results dir, never existed)
This commit is contained in:
parent
a3b8f1b2ab
commit
911a9a2fb0
@ -62,5 +62,7 @@ draft 图(DRAFTEAGER=0)实测无增益(噪声带内互有胜负),保
|
|||||||
- /root/sglang_patch2/eagle_worker_common.py 已被本实验覆盖为 bisect 版(md5 babb6461…):env "1"/"0" 语义与
|
- /root/sglang_patch2/eagle_worker_common.py 已被本实验覆盖为 bisect 版(md5 babb6461…):env "1"/"0" 语义与
|
||||||
r36 版完全兼容,新增 "2"/"3" 单侧模式;r36 档案中的旧 md5 以本目录为准。
|
r36 版完全兼容,新增 "2"/"3" 单侧模式;r36 档案中的旧 md5 以本目录为准。
|
||||||
- 语料池 61,772 token 剩余(< 一次 i8k 262,144),i8k 永久无重跑余量,killer random-ids 为标准口径。
|
- 语料池 61,772 token 剩余(< 一次 i8k 262,144),i8k 永久无重跑余量,killer random-ids 为标准口径。
|
||||||
- killer 的 raw bench JSON(/data/hf_models/bs_results/san_cc16_s*.json)被 A16 复测覆盖,
|
- 09-09 补测 cc 扫频(i16k/o512,cc 8/16/32/40/64,nreq=2cc):吞吐 cc16 起饱和 130-135 tok/s,
|
||||||
胜者数字以 results/bench_results.md 记录为准。
|
accept 全档 3.46-3.68,详见 results/bench_results.md;扫频脚本 scripts/r37_cc_sweep.sh、日志 results/r37sweep_cc*.log。
|
||||||
|
- 勘误:历次 bench 的 rc=1 与 JSON 缺失真因 = 容器内 /data/hf_models/bs_results/ 目录从未存在(写 output-file
|
||||||
|
必失败,指标在 stdout 日志无损);09-09 已补建目录,此后 JSON 可正常落盘。
|
||||||
|
|||||||
@ -35,6 +35,33 @@ killer random-ids 是唯一免费对比口径。
|
|||||||
- xcheck(SPECDEBUG=3):同 batch eager 前向参考 logits 与图 logits 呈一轮滞后关系(零输入 + 上轮 KV),与根因自洽。
|
- xcheck(SPECDEBUG=3):同 batch eager 前向参考 logits 与图 logits 呈一轮滞后关系(零输入 + 上轮 KV),与根因自洽。
|
||||||
- 修复后:VRFY-BUF ≡ VRFY-IN 逐行相等,输出正确。
|
- 修复后:VRFY-BUF ≡ VRFY-IN 逐行相等,输出正确。
|
||||||
|
|
||||||
|
## cc 扫频(09-09 补测,i16k/o512 random-ids,nreq=2×cc 约定,seed 逐档 6508-6564,--flush-cache)
|
||||||
|
|
||||||
|
用户要求的 c8/16/32/40/64 全档。语料池无余量,random-ids 为唯一口径;nreq=2×cc 与 D 方案 cc40/64 的约定一致
|
||||||
|
(每档至少两波测稳态)。r37 生产容器内执行,全程零重启(Up 7h+ 连续)。
|
||||||
|
|
||||||
|
| cc (nreq) | e2e (s) | 解码吞吐 (tok/s) | accept | Mean TTFT (s) | Mean TPOT (ms) |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| 8 (16) | 77.6 | 105.6 | 3.46 | 14.9 | 41.0 |
|
||||||
|
| 16 (32) | 121.4 | **135.0** | 3.65 | 21.0 | 69.3 |
|
||||||
|
| 32 (64) | 246.9 | 132.7 | 3.68 | 62.0 | 93.1 |
|
||||||
|
| 40 (80) | 314.2 | 130.4 | 3.55 | 86.1 | 100.7 |
|
||||||
|
| 64 (128) | 500.8 | 130.9 | 3.62 | 155.6 | 102.1 |
|
||||||
|
|
||||||
|
- **吞吐从 cc16 起饱和 130-135 tok/s**(= mrr16 准入上限;cc8 单波 8 并发未吃满,105.6)。
|
||||||
|
- accept 全档 3.46-3.68 无衰减——flush-cache + 128 请求 churn 下竞态姿态稳。
|
||||||
|
- TPOT 随 offered cc 上升:41ms(cc8, 8 跑) → 69ms(cc16, 16 跑) = 批量步长伸缩;93-102ms(cc32-64) =
|
||||||
|
16 跑 + 常驻 prefill 交错竞争 decode(排队档的固有代价)。TTFT 涨为排队深度(准入队列),非回归。
|
||||||
|
- cc16 档与 killer(nreq16)吞吐一致性核验:135.0(nreq32 深队列)vs 128.3/126.6(killer nreq16)✓。
|
||||||
|
- **A16 在本 profile 仅有 cc16 killer 参照点(77.6/85.3 tok/s)**:r37 同点 126.6-135.0 = **+52~74%**;
|
||||||
|
cc8/32/40/64 档无 A16 数字(如需全档对拍须临时切 A16 重跑,约 40 分钟+两次换部署)。
|
||||||
|
|
||||||
|
### 勘误:历次 killer/bench 的 rc=1 与"JSON 被覆盖"
|
||||||
|
bench_serving 的 rc=1 真因 = 跑完打印全部指标后写 `--output-file` 时
|
||||||
|
`/data/hf_models/bs_results/` 目录不存在 → FileNotFoundError → exit 1。**历次 killer/A16/扫频的 JSON
|
||||||
|
从未写成功过**(本 README 早先版本"JSON 被 A16 复测覆盖"的说法有误,目录 09-09 已补建,此后 JSON 可正常落盘)。
|
||||||
|
指标以 stdout 日志为准(results/ 下 5 份扫频日志 + 会话记录中的 killer/A16 数字均完整)。
|
||||||
|
|
||||||
## 生产部署(终态)
|
## 生产部署(终态)
|
||||||
- 容器 glm53-nvfp4 @ 60.8:30000,`--restart unless-stopped`,health 200。
|
- 容器 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`
|
- 启动命令:`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`
|
||||||
|
|||||||
@ -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/r37sweep_cc${cc}.json \
|
||||||
|
> /root/r37sweep_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/r37sweep_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