Repository navigation
Replies: 1 comment
|
Update: we split this so that the plugin does not have to buffer pods when the caller can send the whole group at once. Why a pod group: a distributed job is a set of pods that only makes sense when they start together, and every layer that schedules gangs already describes it that way. Kubernetes itself adds
The first two can be reviewed and merged without the third. If you would rather not have gangs on the virtual kubelet path, #173 can stay out. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Distributed training and Ray clusters reach interLink as several pods (a Kubeflow Trainer JobSet, a KubeRay RayCluster). Offloaded one by one, they become separate Slurm jobs that start at different times on unrelated nodes, so a rank can wait for its peers until the walltime runs out. We run a version of the Slurm plugin that starts them as one Slurm job, and would like to know whether you want this upstream and in what shape. Draft PR: interlink-hq/interlink-slurm-plugin#173.
How it works:
kueue.x-k8s.io/pod-group-name, annotationkueue.x-k8s.io/pod-group-total-count), written by whoever groups them: Kueue, a policy engine or the user. The virtual kubelet is unchanged and knows nothing about gangs.sbatch --nodes=N. Each pod keeps its own status and log.srunormpirun, PMIx, fabric libraries, NCCL settings), so it lives in one bash file per site, mounted into the plugin (SiteScriptPath). A pod annotatedinterlink.eu/launcher: torchrunis started by the site'storchrun-launcherfunction, which starts every rank itself. Without the annotation each pod runs its own command on its own node.POST /estimatewhen Slurm would start the job (sbatch --test-only), so Kueue admits it only when the site can run it soon and does not hold quota while it waits.PyTorch DDP, MPI, TensorFlow, Ray Train and Ray Tune have run this way on 2 nodes with 4 H100 each at one site. The logs show NCCL on InfiniBand between the nodes: 134 GB/s all-reduce bus bandwidth, against 4.1 GB/s with InfiniBand disabled.
Questions for you:
/estimate. Would you add it to the API, or keep it a side channel?All reactions