Goal: close research-queue item #2 — A/B RoCEnante (b12x one-shot RoCE all-reduce/all-gather, already in the r27 image + vLLM adapter) vs the NCCL control, in the exact documented A/B shape (GLM-5.3-Flash TP4 + MTP, 4 Sparks, CX-7 200 GbE RoCE fabric, both rails).
Ops: production glm53-flash-aiden-4x stopped at start (explicit operator OK
for all 4 nodes), restored at end (serving again by 07:2x UTC). Tool version:
tool-eval-bench 2.6.1.dev46+g9d412464a, seed 42, hardmode, perf c1,c2.
glm53-flash-r27-4x-dcp4 — as-is (incl.
--disable-custom-all-reduce).glm53-flash-r27-4x-dcp4-roce — same recipe +
VLLM_ENABLE_ROCE_ALLREDUCE=1 and WITHOUT --disable-custom-all-reduce
(required: in the r27 fork the RoCEnante adapter is gated on
use_custom_allreduce — with the disable flag the branch is silently
skipped, verified by absent adapter logs + missing proxy build). On a
4x 1-GPU-node cluster vLLM's own CUDA-IPC custom AR is functionally inert
(logs "multi-node group does not support MNNVL multicast"), so the removed
flag only opens the b12x/RoCEnante path — not a confounder.Activation (arm B, rank-0 logs):
Using RoCEnante (b12x one-shot RoCE collectives): world=4,
hcas=rocep1s0f0,roceP2p1s0f0, all-reduce max=2097152 bytes, all-gather
shard max=16777216 bytes['B12X_ROCENANTE', 'PYNCCL']; dcp:0/ep:0 stay PYNCCL
(adapter only targets the tp group — consistent across both arms)RoCEnante all-reduce is live: first routed all-reduce is 131072 bytes
(bfloat16) + all-gather is live: first routed shard is (16, 38720)
bfloat16 along dim 1 (the doc's microbench shape)~/sm121-cache/glm53-jit-121f/b12x/roce/roce_proxy-a35f54cf75d6abf2.so
(b12x cache mount → survives across serves; no rebuild cost on later arms)| cell | pp c1 A→B | tg c1 A→B | tg c2 A→B | TTFT c1 A→B | total c1 A→B |
|---|---|---|---|---|---|
| d0 | 3,319→2,248 | 29.9→46.8 (+57%) | 46.3→62.4 (+35%) | 1,093→988 | 4,847→3,561 (−26%) |
| d4096 | 2,062→1,883 | 26.5→50.4 (+90%) | 32.8→50.2 (+53%) | 3,203→3,053 | 7,476→5,433 (−27%) |
| d8192 | 2,072→1,999 | 31.0→47.5 (+53%) | 24.8→32.4 (+31%) | 4,880→4,684 | 8,474→7,216 (−15%) |
--json-file <abs path>, absolute — bench runs outside the
repo) alongside the .md; perf cells c1,c2.