From e9c5f85500e9aa289c27d8658269c25435ad08ec Mon Sep 17 00:00:00 2001
From: Zhiyi Hong <2497491955@qq.com>
Date: Fri, 31 Jul 2026 16:20:53 +0800
Subject: [PATCH] [Docs] document Phase 2 worker staging fix
---
README.md | 4 +++
.../phase2_code.html | 28 +++++++++++--------
...glang_hardware_contention_attribution.html | 11 +++++---
3 files changed, 27 insertions(+), 16 deletions(-)
diff --git a/README.md b/README.md
index 8351c69..9017f4d 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,9 @@
# sskj — 多平台大模型推理性能基准测试项目
+> **更新(2026-07-31 16:18:35 CST)**
+>
+> 修复 Phase 2 双节点通信基线在 Worker 启动后立即退出的问题。唯一入口仍只在 Head `174.1.51.5` 执行;脚本现在按 `RUN_ID` 将 `communication_baseline.py` 自动暂存到 Head/Worker 的 `/tmp`,校验 SHA256 后只读挂载进通信容器,并在结果目录保存当次源码与哈希。Worker `174.1.51.7` 不再依赖同路径 Git 工作树,异常退出也会清理暂存文件。新增回归测试后 Phase 2 单元测试为 9/9。
+>
> **更新(2026-07-31 15:59:49 CST)**
>
> 在 DeepSeek-V4-Pro 双机 Pro6000D 推理优化主计划和 Phase 2 实施档案中增加 `phase2_code.html` 的直接入口,便于从阶段状态、实验命令与结果页面跳转到对应代码调用关系和逐行实现说明。
diff --git a/docs/dsv4pro_pro6000d_2node_sglang/phase2_code.html b/docs/dsv4pro_pro6000d_2node_sglang/phase2_code.html
index 125780d..c4f5259 100644
--- a/docs/dsv4pro_pro6000d_2node_sglang/phase2_code.html
+++ b/docs/dsv4pro_pro6000d_2node_sglang/phase2_code.html
@@ -105,7 +105,7 @@
Standalone Code Walkthrough / Phase 2
DSV4-Pro 双机 Pro6000D SGLang 硬件竞争归因:代码详解
- 行号基线:30664faa41f8
+ 行号基线:39fc2ba565a3
生成时间:2026-07-31 15:25:00 CST
唯一入口:run_hardware_contention_attribution.sh all
@@ -114,7 +114,7 @@
- 文档边界:本文只解释提交 30664faa41f8 的 Phase 2
+ 文档边界:本文只解释提交 39fc2ba565a3 的 Phase 2
代码和文件调用关系。Phase 1 负责模型服务与请求;Phase 2 负责通信基线、
两节点监控、精确时间切片和逐指标报告。
@@ -161,10 +161,10 @@
| 文件 | 行数 | 职责 |
| config.env | 61 | 节点、Case、分层采样周期、通信尺寸、NCCL 选择和 fail-closed 策略。 |
- | run_hardware_contention_attribution.sh | 968 | 唯一 Shell 编排器:预检、通信基线、Phase 1 委托、采集器、Case 和清理。 |
+ | run_hardware_contention_attribution.sh | 1036 | 唯一 Shell 编排器:预检、通信文件分发、通信基线、Phase 1 委托、采集器、Case 和清理。 |
| communication_baseline.py | 227 | CUDA P2P 全矩阵及 PyTorch/NCCL AllReduce 正确性、延迟和带宽测试。 |
| hardware_contention_attribution.py | 1480 | 解析所有原始采集器,按 Case 切片,聚合通信并生成 CSV/JSON/report.md。 |
- | tests/test_hardware_contention_attribution.py | 308 | 8 项纯 Python 单元测试,覆盖精确窗口、解析器、RDMA 单位和通信聚合。 |
+ | tests/test_hardware_contention_attribution.py | 322 | 9 项纯 Python 单元测试,覆盖 worker 无仓库依赖、精确窗口、解析器、RDMA 单位和通信聚合。 |
@@ -212,19 +212,23 @@
5. 通信微基准
5.1 Shell 如何编排
- run_hardware_contention_attribution.sh:L269-L447 负责 Docker 命令、
- 两节点同步和清理。所有命令先写入 commands/*.txt:
+ run_hardware_contention_attribution.sh:L281-L513 负责源码暂存、
+ Docker 命令、两节点同步和清理。所有命令先写入 commands/*.txt:
- L300-L323:Head/Worker 各跑一次 P2P。
- L324-L353:Head/Worker 各跑一次 8-rank AllReduce。
- L354-L416:每个 CROSS_NIC 值先启动 Worker rank,再运行 Head rank。
- L417-L447:只清理本实验前缀的通信容器。
+ L281-L319:从 Head 将当次通信脚本暂存到两节点并校验 SHA256。
+ L321-L374:构造容器命令,Head/Worker 各跑一次 P2P。
+ L376-L404:Head/Worker 各跑一次 8-rank AllReduce。
+ L406-L467:每个 CROSS_NIC 值先启动 Worker rank,再运行 Head rank。
+ L469-L513:只清理本实验前缀的通信容器和本次 `/tmp` 暂存目录。
Docker 使用和 SGLang 一致的 CUDA 13 nightly 镜像,并显式透传
rdma_cm、uverbs0、uverbs3。
NCCL_DEBUG=INFO 只在微基准中打开,用于证明 NET/IB/GDRDMA 路径。
+ Worker 不要求存在 Git 仓库;容器只读挂载自动分发的
+ /tmp/.../<RUN_ID>/communication_baseline.py。结果目录同时保存
+ 当次源码副本和 SHA256,避免两个节点 checkout 不一致造成版本漂移。
5.2 P2P 代码
@@ -374,7 +378,7 @@ measurement_window_source = bench_main_marker_plus_duration
| L26-L66 | 日志、远端执行、命令证据 | 基础设施。 |
| L67-L199 | 配置、工具、时钟、GPU 空闲门禁 | 正式运行前 fail-fast。 |
| L200-L268 | Manifest、marker、Phase 1 委托 | 运行身份与复用边界。 |
- | L269-L447 | 通信基线 | P2P、8/16-rank AllReduce、CROSS_NIC A/B。 |
+ | L281-L513 | 通信基线 | 按 Run 分发源码、P2P、8/16-rank AllReduce、CROSS_NIC A/B 与清理。 |
| L448-L516 | 服务和静态快照 | 启停 Phase 1 双机服务并保存环境。 |
| L517-L710 | 采集命令与启动 | 两节点分层采样。 |
| L711-L772 | 采集器检查和停止 | fail-closed 与残留清理。 |
@@ -403,7 +407,7 @@ measurement_window_source = bench_main_marker_plus_duration
diff --git a/docs/dsv4pro_pro6000d_2node_sglang/phase2_dsv4pro_pro6000d_2node_sglang_hardware_contention_attribution.html b/docs/dsv4pro_pro6000d_2node_sglang/phase2_dsv4pro_pro6000d_2node_sglang_hardware_contention_attribution.html
index a6487c4..817a22e 100644
--- a/docs/dsv4pro_pro6000d_2node_sglang/phase2_dsv4pro_pro6000d_2node_sglang_hardware_contention_attribution.html
+++ b/docs/dsv4pro_pro6000d_2node_sglang/phase2_dsv4pro_pro6000d_2node_sglang_hardware_contention_attribution.html
@@ -574,11 +574,11 @@ dsv4pro_pro6000d_2node_sglang_hardware_contention_attribution/
| 文件 | 职责 | 当前状态 |
- run_hardware_contention_attribution.sh | 唯一 Shell 入口;通信基线、服务启停、双节点采集器、Case 编排、门禁和 Trap 清理 | 已实现 |
+ run_hardware_contention_attribution.sh | 唯一 Shell 入口;按 Run 分发通信代码、通信基线、服务启停、双节点采集器、Case 编排、门禁和 Trap 清理 | 已实现 |
config.env | Phase 1 相对路径、节点、代表 Case、分层采样周期、通信基线与 fail-closed 策略 | 已实现 |
communication_baseline.py | CUDA P2P 全矩阵与 PyTorch/NCCL 8/16-rank AllReduce 微基准 | 已实现 |
hardware_contention_attribution.py | 精确窗口、全部采集器解析、逐 Case 汇总、通信聚合和逐指标报告 | 已实现 |
- tests/test_hardware_contention_attribution.py | GPU/RDMA、精确窗口、DCGM/CPU 解析、通信聚合和结果生成测试 | 8/8 通过 |
+ tests/test_hardware_contention_attribution.py | Worker 无仓库依赖、GPU/RDMA、精确窗口、DCGM/CPU 解析、通信聚合和结果生成测试 | 9/9 通过 |
README.md | 唯一入口、范围和结果目录说明 | 已实现 |
@@ -602,6 +602,8 @@ dsv4pro_pro6000d_2node_sglang_hardware_contention_attribution/
head_server.log
worker_server.log
communication/
+ communication_baseline.py
+ communication_baseline.sha256
p2p_head.log
p2p_worker.log
allreduce_head_8gpu.log
@@ -646,8 +648,8 @@ dsv4pro_pro6000d_2node_sglang_hardware_contention_attribution/
8. 验收结果
- - 最终代码固定到提交
30664faa41f8;Shell 语法检查和三个 Python 文件编译通过。
- - Phase 1 精确窗口 4/4 单元测试通过;Phase 2 采集、解析与通信聚合 8/8 单元测试通过。
+ - 最终代码固定到提交
39fc2ba565a3;Shell 语法检查和三个 Python 文件编译通过。
+ - Phase 1 精确窗口 4/4 单元测试通过;Phase 2 worker 分发、采集、解析与通信聚合 9/9 单元测试通过。
- 完整 Dry-run 不启动服务即可展开全部模型、采集和通信命令;通信子流程生成 2 个 P2P、2 个单机 AllReduce、6 个双机 rank 命令。
- 最终代码默认要求精确测量窗口、两端 DCGM 可用和全部必需采集器存活,缺失时 fail-closed。
- 首次 Run 的性能数据保留在第 10 节;最终代码尚未在 16 卡上复跑,因此新通信基线和逐指标表暂不填写虚构数值。
@@ -666,6 +668,7 @@ dsv4pro_pro6000d_2node_sglang_hardware_contention_attribution/
| 2026-07-31 13:27:51 CST | 完成正式双机 Run | Run dsv4pro-phase2-20260731-130125:8/8 benchmark 成功,总用时 26 分 26 秒,无 OOM |
| 2026-07-31 13:40:03 CST | 完成首轮结果归因 | 排除原始双 Rail 带宽饱和、整机 CPU 饱和和频率塌陷作为首要原因;锁定 TP16 Kernel、调度与同步时间线 |
| 2026-07-31 15:25:00 CST | 完成最终 Phase 2 代码 | 提交 30664faa41f8:精确主测量窗口、双节点 DCGM 门禁、5 秒低开销 Host 采样、PCIe/NCCL 基线和逐指标自动报告均已通过本地验证 |
+ | 2026-07-31 16:18:35 CST | 修复 Worker 通信代码路径 | 提交 39fc2ba565a3:通信脚本按 Run 自动分发并校验哈希,Worker 不再要求存在同路径 Git 仓库;9/9 回归测试通过 |