Commit 858e1c3
authored
Stop starting Fabric Manager from H100/B200 cloud-init (#552)
Fixes
https://github.com/pytorch/pytorch/actions/runs/25700981763/job/75480837337
## Summary
#541 added an eager `systemctl start nvidia-fabricmanager` and a
`modprobe nvidia-caps-imex-channels` to the H100 and B200 node-setup
scripts, both wrapped in hard-fail blocks. On AL2023's
`amazon-eks-node-al2023-x86_64-nvidia-*` AMI this fails reliably and
takes the node out of the pool before it can join the cluster. This PR
removes the FM/IMEX block from both scripts and documents why we do
not manage Fabric Manager from cloud-init.
## Root cause #1: cloud-init / FM startup race
Cloud-init runs while the GPU-resident *local FM* instances are still
initializing. The host FM completes NVSwitch routing in seconds, then
waits up to its 30 s ``GFM Wait Timeout`` for the GPU-side local-FM
instances to register over NVLink Inband. During cloud-init they are
typically not ready, so host FM exits with:
```
[ERROR] not all local fabric manager instances finished their configuration
[ERROR] fabric manager error handler is called for unhandled config error type 8
[ERROR] failed to configure all the available GPUs or NVSwitches
```
On the same node, starting FM later (via ``systemctl start`` 90 minutes
after boot, or via systemd's own normal boot path) completes in well
under one second. The AMI already runs ``systemctl enable
nvidia-fabricmanager`` during AMI build (see
``install-nvidia-driver.sh``
in awslabs/amazon-eks-ami), so systemd handles FM at a much later boot
phase than cloud-init -- which is exactly what we want.
## Root cause #2: `nvidia-caps-imex-channels` is not a kmod
On AL2023's NVIDIA AMI, the IMEX char device class (major 242) is
registered by ``nvidia.ko`` itself; there is no separate
``nvidia-caps-imex-channels.ko``. ``modprobe nvidia-caps-imex-channels``
returns ``Module not found.`` on every node booted from this AMI.
Single-node NVLS multicast on p5/p6-b200 also does not require an IMEX
channel device -- NCCL uses POSIX FD handles intranode. IMEX channels
are only needed for multi-node NVLink (MNNVL / GB200 UltraServers). The
``/etc/modules-load.d/nvidia-caps-imex-channels.conf`` write is moot.
## Verification on a live p5.48xlarge
On a node provisioned with the current (broken) script:
- ``/proc/devices`` shows ``242 nvidia-caps-imex-channels``: IMEX
support is already in ``nvidia.ko``.
- ``systemctl start nvidia-fabricmanager`` post-boot reaches ``active
(running)`` in <1 s and the log ends with "Successfully configured
all the available NVSwitches to route GPU NVLink traffic" and "FM
starting NvLink Inband".
- The originally-failed FM run during cloud-init hit the 30 s timeout
at the exact ``GFM Wait Timeout`` value, with the same hardware and
driver versions.
This confirms the failure is the cloud-init race, not a missing IMEX
module or a hardware issue.
## What this PR does NOT fix
- The NVLS multicast issue from #541's description ("Failed to bind
NVLink SHARP (NVLS) Multicast memory ... CUDA error 401") is a
separate problem that requires verifying the new node-setup actually
lets a multi-process NCCL collective complete. With FM running
(which the AMI now does on its own), single-node NVLS should work
via POSIX FD handles. If a fresh ``linux.aws.h100.8`` run still
fails, the next investigation is on the FM/driver version pin and
systemd unit ordering, not on cloud-init.
### Testing
Clean things up manually, reboot the instances and H100 jobs are now
working again
https://github.com/pytorch/pytorch/actions/runs/25700981763/job/75482680206
## References
- Original commit: #541 (03116d1)
- AWS EKS-optimized AMI components for p5/p6:
https://docs.aws.amazon.com/eks/latest/userguide/ml-eks-optimized-ami.html
- NVIDIA confirming IMEX channels are MNNVL-only:
NVIDIA/nccl#1632
Authored by Claude.1 parent 9b084c3 commit 858e1c3
2 files changed
Lines changed: 44 additions & 70 deletions
File tree
- osdc/modules
- nodepools-b200/scripts
- nodepools-h100/scripts
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
70 | 70 | | |
71 | 71 | | |
72 | 72 | | |
73 | | - | |
74 | | - | |
75 | | - | |
76 | | - | |
77 | | - | |
78 | | - | |
79 | | - | |
80 | | - | |
81 | | - | |
82 | | - | |
83 | | - | |
84 | | - | |
85 | | - | |
86 | | - | |
87 | | - | |
88 | | - | |
89 | | - | |
90 | | - | |
91 | | - | |
92 | | - | |
93 | | - | |
94 | | - | |
95 | | - | |
96 | | - | |
97 | | - | |
98 | | - | |
99 | | - | |
100 | | - | |
101 | | - | |
102 | | - | |
103 | | - | |
104 | | - | |
105 | | - | |
106 | | - | |
107 | | - | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
108 | 95 | | |
109 | 96 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
70 | 70 | | |
71 | 71 | | |
72 | 72 | | |
73 | | - | |
74 | | - | |
75 | | - | |
76 | | - | |
77 | | - | |
78 | | - | |
79 | | - | |
80 | | - | |
81 | | - | |
82 | | - | |
83 | | - | |
84 | | - | |
85 | | - | |
86 | | - | |
87 | | - | |
88 | | - | |
89 | | - | |
90 | | - | |
91 | | - | |
92 | | - | |
93 | | - | |
94 | | - | |
95 | | - | |
96 | | - | |
97 | | - | |
98 | | - | |
99 | | - | |
100 | | - | |
101 | | - | |
102 | | - | |
103 | | - | |
104 | | - | |
105 | | - | |
106 | | - | |
107 | | - | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
108 | 95 | | |
109 | 96 | | |
0 commit comments