GB10 TP2 serving: first request times out on RoCE collective (HCA 0, sequence 1) when both CX-7 rails are active; single rail works
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 35/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- rust
- Lĩnh vực
- distributed-systems, networking
Hướng nghiên cứu
Start by tracing native serving's RoCE transport discovery and collective data path, then compare the multi-rail setup with the single-rail workaround described in the issue. Reproduce the first collective timeout on two active rails and inspect per-rail behavior; done means multi-rail serving completes the first request, or startup reports a clear rail-specific failure.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
GB10 TP2 serving: first request times out on RoCE collective (HCA 0, sequence 1) when both CX-7 rails are active; single rail works
Summary
On two DGX Sparks (TP2, direct link), flare run starts cleanly and reports 2 rails per peer, but the first chat request kills the run:
RoCE collective on rank 1 timed out waiting for rank 0, HCA 0, at sequence 1; the transport is poisoned
This reproduces on every launch (3/3). The waiting rank varies (rank 0 waiting for rank 1 in two runs, rank 1 waiting for rank 0 in one), but it is always HCA 0 and always sequence 1, so the very first collective never completes in either direction.
When the second CX-7 function (enP2p1s0f1np1 / roceP2p1s0f1) is brought down on both nodes, the native server selects one rail and serving works normally. Fabric-level tests on both rails pass (details below).
Environment
- 2x DGX Spark (GB10), Ubuntu 24.04.5 LTS, kernel
7.0.0-1019-nvidia, driver580.178.04, Docker 29.6.2 (same on both nodes) - CX-7 firmware
28.50.1002on all functions, direct cable, MTU 9000 - Two active functions per node, one subnet each:
rocep1s0f1/enp1s0f1np1: 10.100.32.1 ↔ 10.100.32.2 (RoCE v2 IPv4 GID index 3)roceP2p1s0f1/enP2p1s0f1np1: 10.100.33.1 ↔ 10.100.33.2 (RoCE v2 IPv4 GID index 3)rocep1s0f0/roceP2p1s0f0: DOWN
- rdma-core 50.0 (host and container)
- Flare at
d5fd9824593c2a70f6bdc001b39f16b4c5b3b0b4, single image for Ignition + native Flare - Model:
nvidia/GLM-5.3-Flash-FP4-Local, TP2 package,--max-concurrency 12 --mtp-draft-tokens 5 --prefill-chunk-size 8192 - Launched with a third-party multi-host launcher (Docker + SSH,
--network host --device /dev/infiniband --ipc host). Serving usesflare run ... --rank N --rendezvous <head>:<port> --gpus 0with no fabric pinning, so native fabric discovery applies.
Logs
Rank 0 (trimmed):
[ OK ] Wait for tensor-parallel hosts. 1 peer ranks 1.5s
[ OK ] Distribute rank packages over CX7. all rank packages verified 0.0s
[ OK ] Load weights. 84.1 GiB 15.9s
[ OK ] Prepare kernels. 3370 kernels 0.7s
[ OK ] Prepare execution. concurrency 12 1.2s
[ OK ] Allocate cache. 9.5 GiB · 2716672 KV tokens · 96 shared snapshot slots · limited by memory 0.6s
[ OK ] Connect RoCE transport. 2 rails per peer over roceP2p1s0f1,rocep1s0f1 0.2s
[ OK ] Start server. http://0.0.0.0:8000 · 1048576 tokens/request 0.6s
[...] request_id=chatcmpl-1-1 stage=generation code=server_error message="tensor-parallel peer failed: RoCE collective on rank 1 timed out waiting for rank 0, HCA 0, at sequence 1; the transport is poisoned"
[ FAILED ] Shut down server. 0.0s
Error: "native replay did not drain: tensor-parallel peer failed: RoCE collective on rank 1 timed out waiting for rank 0, HCA 0, at sequence 1; the transport is poisoned"
Rank 1:
[ OK ] Connect RoCE transport. 2 rails per peer over roceP2p1s0f1,rocep1s0f1 0.1s
Serving rank 1 of 2 for rank zero at 10.100.32.1:29800
Error: "native replay did not drain: RoCE collective on rank 1 timed out waiting for rank 0, HCA 0, at sequence 1; the transport is poisoned"
Earlier run, same package (direction reversed):
message="RoCE collective on rank 0 timed out waiting for rank 1, HCA 0, at sequence 1; the transport is poisoned"
What was ruled out
| Check | Result |
|---|---|
| Link state / IP / MTU | Both rails ACTIVE on both nodes, MTU 9000, jumbo ping -M do -s 8972 OK on both subnets |
Host-memory RDMA, ib_write_bw -x 3 per rail |
roceP2p1s0f1: 109.09 Gb/s, rocep1s0f1: 109.04 Gb/s |
NCCL 2.31.2 all_reduce_perf, NCCL_IB_HCA=rocep1s0f1,roceP2p1s0f1, NCCL_IB_GID_INDEX=3 |
Pass, 8 B to 4 GiB, 0 wrong, busbw 23.6 GB/s at 4 GiB; channels alternate NET/IB/0 and NET/IB/1 |
| Kernel log around the failure | No mlx5 / RDMA / Xid messages on either node (unlike #137, where the RoCE timeout follows a GPU fault) |
| Driver / firmware / kernel parity | Identical on both nodes |
NCCL reported GPU Direct RDMA Disabled / GDR 0. That is expected: the DGX Spark porting guide states that GPUDirect RDMA (nvidia-peermem, dma-buf, GDRCopy) is not supported on this platform and that RDMA buffers should come from cudaHostAlloc + ibv_reg_mr. So the NCCL run used the same kind of host-allocated, NIC-registered buffers on both rails and passed.
Workaround
On both nodes, before launching:
sudo ip link set enP2p1s0f1np1 down
The transport then reports a single rail (rocep1s0f1), and requests complete normally. The second rail's bandwidth is lost.
Notes / requests
- Native serving gives no way to choose or exclude rails.
flare run --helphas no fabric/HCA option, and noFLARE_*environment variable for it was found in the binary. An option such as--roce-hca rocep1s0f1[,…](or honoringB12X_ROCE_HCAin serving) would allow single-rail operation without taking links down. Connect RoCE transportsucceeds, so QP setup onroceP2p1s0f1passes, but the first data-path collective on that rail never arrives. A short per-rail data exchange during transport setup (beforeStart server) would turn this into a startup failure that names the rail, instead of a fatal error on the first user request.- Happy to run diagnostics (debug logging, per-rail counters, a build with extra tracing) if that helps.
Possibly related environment: #143 (same hardware/kernel/driver, two active CX-7 functions, preparation-side GID selection).
- Ngôn ngữ chính
- Rust
- Star
- 800
- Fork
- 106
- Merge trung bình
- 1 ngày 3 giờ
- Pull request đã merge (30 ngày)
- 100
Chuẩn bị môi trường
- Có Dockerfile hoặc tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của NVIDIA/hyperflare-inference
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
NVIDIA/hyperflare-inference#268 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
break out engram wait timeĐang mởarea:caching area:engram enhancement performance triage:design-review
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
NVIDIA/hyperflare-inference#230 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 15/100
NVIDIA/hyperflare-inference#278 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 25/100
NVIDIA/hyperflare-inference#276 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
NVIDIA/hyperflare-inference#271 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của NVIDIA/hyperflare-inference
Issue tương tự
-
bug UI
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
wardian-app/Wardian#1746 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
jlcodes99/cockpit-tools#3125 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
bug user-sprint
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Vondor/KassenSturz#967 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area/ci
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 62/100
Maintainer thường phản hồi trong vòng 1 ngày
-
[BUG] Incremental sync warns "no stored highest_uid" on every round for folders with no new mailĐang mởbug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
rustmailer/bichon#411 ·