3.4 KiB
3.4 KiB
GLM-5.3-NVFP4 TP4PP2+MTP 深入攻坚(2026-09-07 第三轮)
机器:174.1.60.5(8×RTX 6000D)。基础补丁 = 09-06 的 r33(sglang_patch2 七文件挂载 + nightly-dev-cu13-20260901-07c8f729),本轮在其上做竞态二分、修复尝试与 decode 轮量化。主报告(结论与工程清单):results/analysis/GLM53_TP4PP2_Profile与优化方向_2026-09-06.md §9。
scripts/
| 文件 | 作用 |
|---|---|
| eagle_worker_v2_mask.py | r33 的位掩码版:7 处阶段边界同步改为 /tmp/pp_sync_mask 热开关(bit0-6 = site1-7:draftstep/prefill-ext/ext-pre/extlogits/draft-tree/accept/replay-in),缺省 127 ≡ r33 |
| scheduler_pp_mixin_r34.py | 修复候选:_pp_commit_comm_work 延迟一轮释放 P2PWork(实验结果:反而加速竞态触发,弃用) |
| deploy_ppmtp_mask.sh | 部署掩码构建(挂 mask 版 eagle_worker_v2) |
| deploy_ppmtp_r34.sh | 部署 r34(挂 r34 mixin + 健康后写掩码文件 SYNCMASK) |
| deploy_ppmtp_r34_nocache.sh | r34 + PYTORCH_NO_CUDA_MEMORY_CACHING=1(死于启动期 graph capture,实验不可行) |
| race_run.sh | 竞态单点运行器:热写掩码 → conc_test big → 监控容器/健康死亡并收割日志 |
| prof_mtp_decode{,2,3}.sh | torch profiler 采集编排(12 步 spec round,无 stack) |
| prof_mtp_analyze.py | trace 分析:轮时拆解、cudaStreamSynchronize/cudaLaunchKernel 宿主成本、NCCL 分桶、gap 归因、长宿主 op |
| prof_ann_census.py | user_annotation 相位普查(TARGET_VERIFY/draft/DECODE/边界收发时长 + gloo 操作画像) |
results/ops/(实验原始记录)
- race_r0.log:mask=127 对照,conc_test 8×16384 PASS 64.4s
- race_r1.log / race_r1b_ladder.log / race_r1c_big.log:mask=0 conc_test 3/3 PASS(30.7/27.5/26.6s)——假信心,bench 才触发竞态
- crash_mask0_full.log:r33+mask0 完整 bench cc16 崩溃(prefill 爬坡段,PG2 watchdog IMA,表面 dsa init/allocator insert_events 同 09-06)
- crash_r34_mask0.log:r34+mask0 conc_test 23.6s 崩(commit wait 也是隐性遮罩的直接证据)
- deploy_r34.log / deploy_r34nc.log:部署记录(后者 = NO_CACHING 死于 cudaErrorStreamCaptureInvalidated)
- prof_mtp_decode.log / prof_mtp_decode3.log:采集编排日志
- prof_mtp_analysis.txt:8 rank trace 全量分析输出
核心事实(详见主报告 §9)
- 三源证伪:7 同步 4.9ms/轮、eager launch 3.3ms/轮、边界 SendRecv 0.17ms/轮——合计 <10ms,解释不了 240ms 回归。
- 真凶:每轮 3 次串行 GLOO 元数据 rendezvous(parallel_state.send_object = 2 gloo isend/字典),相位漂移下发送端 CPU 阻塞 300-540ms → TP 到达偏斜 → AR 自旋 132ms/轮 + GPU 空洞 ~130ms/轮(293.5ms/轮的 72% 是 TARGET_VERIFY 的等待态)。
- 竞态为真且与停顿去除耦合:mask=0 在 bench 剖面崩;r34 去 commit wait 更快崩。根因定位只能靠 compute-sanitizer(NO_CACHING/LAUNCH_BLOCKING 均引入同步污染)。
- 16k 输入下 KV 池把 decode 并发钉在 ≤8:cc16 压测的 decode 实际是 bs 7-8 混合态,"稳态 bs16"不存在。
远端留存(60.5)
- /root/sglang_patch2/(r33 七文件)、/root/eagle_worker_v2_mask.py、/root/scheduler_pp_mixin_r34.py、deploy_ppmtp_{mask,r34,r34_nocache}.sh、race_run.sh、prof_mtp_*.sh/py
- /data/hf_models/ppmtp_profiles/M_decode/(8 rank × 12 步 trace,~48MB)
- 崩溃与竞态日志:/root/crash_.log、/root/race_.log