Skip to content

Commit 5ef5b94

Browse files
committed
docs: document scale_m1 GB200/GB300 workflow with block topology
1 parent 85d09cb commit 5ef5b94

1 file changed

Lines changed: 57 additions & 6 deletions

File tree

README.md

Lines changed: 57 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -370,24 +370,75 @@ This either prints out the topology in slurm topology format or creates an outpu
370370

371371
It is installed on the scheduler node automatically by the azure-slurm installer (alongside `azslurm`) and runs under the same virtual environment at `/opt/azurehpc/slurm/venv`. It is not installed on execute nodes. Logs are written to `/opt/azurehpc/slurm/logs/scale_m1.log`.
372372

373+
#### Required slurm.conf settings
374+
To use GB200/GB300, the block topology plugin must be enabled and the gbx00 partition must be excluded from auto-suspend:
375+
376+
```
377+
TopologyParam=BlockAsNodeRank
378+
TopologyPlugin=topology/block
379+
# exclude any partition that uses gbx00
380+
SuspendExcParts=gpu
381+
```
382+
383+
**Do not** add these lines to the template's **Slurm Configuration** parameter (`additional_slurm_config` / `AdditionalSlurmConfig`). `TopologyPlugin=topology/block` requires a populated `topology.conf` to exist before `slurmctld` starts; applying it at cluster creation, before any nodes are scaled and the topology is generated, prevents `slurmctld` from starting.
384+
385+
Instead, apply them manually on the scheduler **after** the nodes are scaled and the block topology file is in place. Add the lines to `/etc/slurm/site_specific.conf` (which is included by `slurm.conf`) and run `scontrol reconfigure`. Replace `gpu` in `SuspendExcParts` with the name of the partition that uses gbx00 nodes if it differs. The full ordering is shown in the workflow below.
386+
373387
#### Workflow
374-
Scaling is a three-step workflow: create a reservation, power up to the target (optionally with a buffer), then prune back down to the target. Once the nodes are ready, delete the reservation to release the nodes back to the cluster so jobs can be scheduled on them.
388+
With the cluster running and an SSH session open on the scheduler node, the end-to-end process is:
389+
390+
1. **Scale the partition** to the target size — reserve the nodes, then power up to the target.
391+
2. **Generate the block topology and put it in place** at `/sched/<clustername>/topology.conf`.
392+
3. **Enable the block topology plugin** by adding the required settings to `/etc/slurm/site_specific.conf`, then run `scontrol reconfigure`.
393+
4. **Release the ready nodes** from the reservation so jobs can be scheduled on them.
394+
395+
When releasing nodes in the final step, remove only the nodes that are powered up and ready to run jobs. Leave all powered-off or unhealthy nodes in the reservation, and do **not** delete the reservation — deleting it would also release the not-yet-ready nodes back to the cluster.
375396

376397
```bash
377398
# 1. Reserve the partition's nodes under the scale_m1 reservation
378399
scale_m1 create_reservation -p gpu
379400

380-
# 2. Power up 28 racks (504 nodes), overprovisioning 6 racks (108 nodes) to absorb unhealthy hardware
401+
# 2. Power up 28 racks (504 nodes) to the target size
402+
scale_m1 power_up --racks 28
403+
404+
# 3. Generate the block topology for the partition (--block_size 18 = one rack per block)
405+
azslurm topology -n --block --block_size 18 -p gpu > topology.conf
406+
407+
# 4. Review topology.conf, then copy it into place at /sched/<clustername>/topology.conf.
408+
# For a cluster named "ccw":
409+
cp topology.conf /sched/ccw/topology.conf
410+
411+
# 5. Enable the block topology plugin and exclude the gbx00 partition from auto-suspend by adding
412+
# the following lines to /etc/slurm/site_specific.conf (included by slurm.conf):
413+
# TopologyParam=BlockAsNodeRank
414+
# TopologyPlugin=topology/block
415+
# SuspendExcParts=gpu
416+
$EDITOR /etc/slurm/site_specific.conf
417+
418+
# 6. Apply the configuration
419+
scontrol reconfigure
420+
421+
# 7. Remove only the powered-up, ready nodes from the reservation so workloads can run on them.
422+
# Leave all powered-off or unhealthy nodes in the reservation; do not delete the reservation.
423+
# Update the reservation so it contains only the nodes that are NOT yet ready. For example,
424+
# if ccw-1-3-gpu-[1-3] are still powering up or unhealthy, keep just those reserved:
425+
scontrol update ReservationName=scale_m1 Nodes=ccw-1-3-gpu-[1-3]
426+
```
427+
428+
#### Overprovisioning to absorb unhealthy hardware (advanced)
429+
In rare cases you may want to power up extra nodes so that unhealthy hardware can be discarded while still reaching the target size. `power_up` accepts an overprovision buffer, and `prune` / `prune_now` then trim back to the target, keeping only fully populated racks:
430+
431+
```bash
432+
# Power up 28 racks plus a 6-rack (108-node) buffer to absorb unhealthy hardware
381433
scale_m1 power_up --racks 28 --overprovision-racks 6
382434

383-
# 3. Prune back to 28 racks. `prune` prints the nodes to terminate; `prune_now` also terminates them
435+
# Prune back to 28 racks. `prune` prints the nodes to terminate; `prune_now` also terminates them
384436
scale_m1 prune --racks 28 > to_terminate.txt
385437
scale_m1 prune_now --racks 28
386-
387-
# 4. Release the reserved nodes to the cluster so workloads can run on them
388-
scontrol delete reservation scale_m1
389438
```
390439

440+
After pruning to the target size, continue with the topology generation, configuration, and reservation steps from the workflow above.
441+
391442
#### Subcommands
392443
| Subcommand | Purpose |
393444
| --- | --- |

0 commit comments

Comments
 (0)