diff --git a/experiments/pro6000/glm53_ppmtp_r37_verify_graph/README.md b/experiments/pro6000/glm53_ppmtp_r37_verify_graph/README.md index 4e9db33..00b64ab 100644 --- a/experiments/pro6000/glm53_ppmtp_r37_verify_graph/README.md +++ b/experiments/pro6000/glm53_ppmtp_r37_verify_graph/README.md @@ -62,5 +62,7 @@ draft 图(DRAFTEAGER=0)实测无增益(噪声带内互有胜负),保 - /root/sglang_patch2/eagle_worker_common.py 已被本实验覆盖为 bisect 版(md5 babb6461…):env "1"/"0" 语义与 r36 版完全兼容,新增 "2"/"3" 单侧模式;r36 档案中的旧 md5 以本目录为准。 - 语料池 61,772 token 剩余(< 一次 i8k 262,144),i8k 永久无重跑余量,killer random-ids 为标准口径。 -- killer 的 raw bench JSON(/data/hf_models/bs_results/san_cc16_s*.json)被 A16 复测覆盖, - 胜者数字以 results/bench_results.md 记录为准。 +- 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。 +- 勘误:历次 bench 的 rc=1 与 JSON 缺失真因 = 容器内 /data/hf_models/bs_results/ 目录从未存在(写 output-file + 必失败,指标在 stdout 日志无损);09-09 已补建目录,此后 JSON 可正常落盘。 diff --git a/experiments/pro6000/glm53_ppmtp_r37_verify_graph/results/bench_results.md b/experiments/pro6000/glm53_ppmtp_r37_verify_graph/results/bench_results.md index 02f85ed..029496e 100644 --- a/experiments/pro6000/glm53_ppmtp_r37_verify_graph/results/bench_results.md +++ b/experiments/pro6000/glm53_ppmtp_r37_verify_graph/results/bench_results.md @@ -35,6 +35,33 @@ killer random-ids 是唯一免费对比口径。 - xcheck(SPECDEBUG=3):同 batch eager 前向参考 logits 与图 logits 呈一轮滞后关系(零输入 + 上轮 KV),与根因自洽。 - 修复后: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。 - 启动命令:`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` diff --git a/experiments/pro6000/glm53_ppmtp_r37_verify_graph/scripts/r37_cc_sweep.sh b/experiments/pro6000/glm53_ppmtp_r37_verify_graph/scripts/r37_cc_sweep.sh new file mode 100644 index 0000000..99db9e6 --- /dev/null +++ b/experiments/pro6000/glm53_ppmtp_r37_verify_graph/scripts/r37_cc_sweep.sh @@ -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