Setting up a multi-node GPU cluster for LLM training involves provisioning identical GPU nodes with a fast interconnect, installing a consistent driver and CUDA stack across every node, configuring a job scheduler, and validating network performance before any real training runs. Start with hardware planning: decide GPU generation, such as H100 or H200, node count based on target model size and training time, and a rail-optimized InfiniBand or RoCE fabric sized for the parallelism strategy you intend to use. Next, image every node identically, install the NVIDIA GPU Operator if running Kubernetes or configure Slurm with GRES GPU resources if running a traditional HPC stack, and mount shared parallel storage such as Lustre or Weka so all nodes see the same datasets and checkpoint directories. Before onboarding real workloads, run nccl-tests and DCGM diagnostics across the full node count to catch bad cables, firmware mismatches, or underperforming links early, since these issues are much harder to isolate once training is already running. Finally, set up checkpointing, monitoring, and alerting so a node failure mid-run does not cost days of progress. Nanobase AI, an NVIDIA Inception Program member, builds and commissions multi-node training clusters through exactly this sequence for enterprise customers.

Reference architecture by scale

LayerSmall (2-4 nodes)Large (dozens of nodes)
GPU generationH100 or H200H100, H200, or B200 depending on budget and timeline
InterconnectHigh-speed Ethernet or entry InfiniBandRail-optimized InfiniBand NDR or Spectrum-X RoCE
SchedulerSlurm or Kubernetes, either worksSlurm for training, possibly paired with Kubernetes for serving
StorageNFS may suffice for smaller datasetsParallel filesystem such as Lustre or Weka
MonitoringDCGM and Prometheus on a single dashboardSame stack, sized for higher metric cardinality

Cluster scale should drive every one of these choices; over-engineering a four-node cluster with the tooling a hundred-node cluster needs wastes budget and adds operational surface area nobody uses.

A phased build-out

  1. Hardware planning: fix GPU generation, node count based on target model size and training time, and fabric type sized for the intended parallelism strategy before ordering anything.
  2. Node imaging: build one golden image with matched OS, kernel, NVIDIA driver, and CUDA toolkit version, then image every node identically rather than configuring nodes individually.
  3. Scheduler setup: install the NVIDIA GPU Operator for Kubernetes or configure Slurm with GRES GPU resources, matching whichever scheduler fits the actual workload mix.
  4. Shared storage: mount a parallel filesystem such as Lustre or Weka across every node so datasets and checkpoints are visible cluster-wide regardless of which node writes them.
  5. Network validation: run nccl-tests and DCGM diagnostics across the full node count before any real training starts, since these issues are far harder to isolate once training is running.
  6. Monitoring and alerting: stand up DCGM, Prometheus, and Grafana, then wire alerts for utilization drops, Xid errors, and thermal events before onboarding production workloads.
  7. Checkpointing: configure automated checkpoint intervals and a resume path so a node failure mid-run costs minutes, not days, of progress.

Following these phases in sequence, rather than skipping ahead to training, is what keeps hardware and configuration problems from surfacing only after a workload is already running.

Why new clusters often underperform expectations

A brand-new cluster that runs measurably below expected throughput almost always traces back to one of a handful of causes: PCIe topology placing NICs on the wrong root complex relative to GPUs, a firmware mismatch across otherwise identical nodes, an incorrectly cabled InfiniBand rail, or a driver and CUDA version that does not match what the training framework expects. Each of these looks like a mysterious performance problem until isolated with the acceptance tests in the build-out sequence above, which is exactly why skipping that step to save a few days of setup time is a costly shortcut.

Cluster acceptance checklist before real workloads

Before onboarding a real training job, confirm every node passes DCGM diagnostics, nccl-tests bandwidth results land within expected range of vendor reference figures for the exact hardware generation, shared storage read and write throughput meets the dataset's I/O demands under concurrent access from all nodes, and monitoring dashboards show clean baseline metrics with no unexplained Xid errors or thermal warnings across the fleet. Treating acceptance testing as a formal gate, not an informal check, is what prevents a bad node or cable from silently degrading a training run that has already consumed days of GPU time.

Frequently asked questions

How many nodes should a first multi-node cluster start with?

There is no universal number; it depends on target model size and acceptable training time, but starting with a small, well-validated cluster and scaling out once the design proves stable is generally safer than committing to a large build immediately.

Does every node need identical hardware?

Strongly recommended, yes. Heterogeneous node hardware within one training job complicates parallelism strategy and load balancing, and mismatched GPU generations in a single tensor-parallel group in particular causes uneven step times across ranks. Even when a scheduler technically allows mixed GPU types in one job, the resulting performance variance usually outweighs whatever flexibility that mixing was meant to provide.

What is the biggest mistake teams make setting up their first cluster?

Skipping network and storage validation before onboarding real workloads, which turns a cheap-to-fix cabling or firmware issue discovered during acceptance testing into an expensive-to-diagnose mid-training performance problem discovered days into a run. Budgeting a few days for acceptance testing upfront is consistently cheaper than diagnosing the same issues later under the pressure of a stalled production run.

Should storage be set up before or after the scheduler?

Storage should be validated alongside or before scheduler configuration, since job scripts and container images often assume specific mount paths are already present and performing correctly, and retrofitting storage after workloads are running risks path or permission mismatches. Validating storage first also gives the scheduler a stable mount point to reference from the very first job submitted.

How Nanobase AI helps

Nanobase AI, an accepted member of the NVIDIA Inception Program, builds and commissions multi-node training clusters through exactly this sequence for enterprise customers, from hardware planning through acceptance testing before any production workload is onboarded. For deployment strategy beyond the cluster itself, see the on-premise LLM deployment guide.

Ready to discuss your project? Contact Nanobase AI or email hello@bumu.tech.