No items found.
BlogB300 Cluster Sizing: How Many GPUs Your Workload Actually Needs

GPU Infrastructure

Two B300s hold Llama 405B at FP8 for less per hour than three B200s, and cost more per token. Bandwidth is a per-GPU property, which makes minimising GPU count the wrong objective.

B300 Cluster Sizing: How Many GPUs Your Workload Actually Needs

GPUaaS.com Team
GPUaaS.com Team
GPU Infrastructure
September 7, 2026
Blog post cover image
No items found.

Serving Llama 405B at FP8 takes two B300s. Two cards at 288GB each gives 576GB, enough to hold the model. The same job needs three B200s at 192GB each, which is also 576GB.

Fewer GPUs, and the hourly cost drops from $8.04 to $6.58. The three-GPU B200 configuration delivers better cost per token.

Key takeaways
  • Bandwidth is a per-GPU property. Using B300's memory to cut GPU count also cuts aggregate bandwidth, which is a downgrade for bandwidth-bound work
  • Concurrency saturates well before latency does. On HGX B200, a 30B at TP=2 peaks near 512 concurrent but TTFT climbs from 152ms to 2,610ms getting there
  • Total GPU count is tensor parallel size multiplied by pipeline parallel size. TP=4 across 2 pipeline stages consumes eight GPUs
  • Apply a 25 to 44% communication penalty at TP=8. A count derived from linear assumptions will be wrong
  • Memory utilisation fraction and max concurrent sequences move the answer more than GPU count does

◆ LLAMA 405B AT FP8, TWO WAYS

Configuration2x B3003x B200
Total memory576GB576GB
Aggregate bandwidth16 TB/s24 TB/s
Hourly cost$6.58$8.04
Cost per tokenWorseBetter

Source: Spheron B300 vs B200 inference cost-per-token analysis, 2026

◆ THE CENTRAL TRAP

Bandwidth is a per-GPU property

Aggregate memory bandwidth is why. Three B200s give 24 TB/s. Two B300s give 16 TB/s. At FP8 and typical batch sizes, 405B inference is memory-bandwidth-bound, so throughput scales with total bandwidth rather than with total capacity. The 50% bandwidth advantage of the larger cluster wins on tokens per second by more than the extra GPU costs.

That is the central trap in B300 sizing. Bandwidth is a per-GPU property. Using B300's memory advantage to reduce GPU count also reduces aggregate bandwidth, and for bandwidth-bound work that is a downgrade you paid a premium to receive.

So the sizing question is not what fits. It is which constraint binds.

◆ START WITH THE MEMORY FLOOR

It sets the lower bound regardless

A 70B model in BF16 needs roughly 140GB for weights alone. A 405B model needs north of 800GB at full precision. Add KV cache and activations on top. The vLLM startup log is the cheapest way to see the real split: on a single GPU serving an 8B model it reports weights, non-Torch memory, PyTorch activation peak, and whatever remains for KV cache as separate lines. That breakdown is what actually determines concurrency.

An HGX B300 node carries eight GPUs at 2.3TB total, connected by a 14.4 TB/s NVLink switch with 800 Gb/s networking. GB300 NVL72 puts 72 GPUs and 36 Grace CPUs in one liquid-cooled rack. Those are the two shapes worth sizing against, because they determine whether tensor parallelism stays inside a node.

◆ WHERE CONCURRENCY SATURATES, MEASURED ON HGX B200

Concurrent requestsOutput tok/sTTFT
81,881152 ms
648,120324 ms
25615,5521,254 ms
51218,7462,610 ms
102418,8292,563 ms

Nemotron Nano 30B at FP8, TP=2 on two GPUs, input 2048 output 512. Source: Vultr inference cookbook concurrency tuning, verified on NVIDIA HGX B200

◆ THROUGHPUT KEEPS RISING PAST USABLE LATENCY

Two correct answers for two different requirements

Then find where concurrency saturates, because that is where adding GPUs stops helping and the benchmark data is unambiguous about it. Nemotron Nano 30B at FP8 with TP=2 saturates around 512 concurrent requests, peaking at 18,829 tokens per second across two GPUs. Nemotron Super 49B at FP8 on a single GPU saturates around 64 concurrent, peaking at 3,816 tokens per second.

Note the shape of that. Throughput keeps rising well past the point where latency becomes unacceptable. A cluster sized for peak tokens per second will miss a latency target badly, and a cluster sized for latency will look underutilised on a throughput dashboard. Both are correct sizing, for different requirements.

The single-GPU benchmark also shows something worth knowing: throughput at TP=1 oscillates at high concurrency, dropping to 1,586 tokens per second at 256 concurrent before recovering at 512. That is batch scheduling behaviour, not a hardware limit, and it means single-GPU capacity planning needs measurement at the actual target concurrency rather than interpolation between two points.

16 vs 24 TB/s

aggregate bandwidth on two B300s against three B200s holding the same 576GB, which is why the cheaper cluster loses on cost per token

Spheron B300 vs B200 inference analysis, 2026

◆ THEN APPLY THE SCALING PENALTY

A linear count will be wrong

At TP=8, communication overhead consumes 25 to 44% of the potential speedup. That is expected behaviour rather than a fault. Eight GPUs deliver roughly four to six times one GPU's throughput. On B300, NVLink at 14.4 TB/s inside an HGX node keeps this at the better end of that range, and crossing a node boundary moves it to the worse end. The mechanism is covered in why 8 GPUs is not 8x one GPU.

Total GPU count is tensor parallel size multiplied by pipeline parallel size. Four-way tensor parallel across two pipeline stages consumes eight GPUs. Getting that arithmetic wrong is a common way to order half or double the capacity actually needed.

◆ THREE LEVERS THAT MOVE THE ANSWER MORE THAN GPU COUNT

Configuration before capacity

Memory utilisation fraction sets how much of each card goes to weights and KV cache. 0.90 is the default, 0.95 pushes to maximum capacity at some out-of-memory risk, and 0.45 is for running multiple instances on one card. Pushing it up grows the KV cache, which raises how many sequences can batch concurrently, and the gain continues only until the workload becomes compute-bound.

Maximum concurrent sequences should track model size. Memory-constrained large models like GLM-5 and DeepSeek V3.2 want 128 to 256. The balanced default is 512 to 1024. Smaller models chasing maximum throughput can take 2048 to 4096.

KV cache offloading to CPU memory is worth knowing about and usually not worth using. With 192 to 288GB of HBM per card, it is unnecessary except for extreme context lengths, and it adds latency when it engages.

There is a comparison point worth registering on how much headroom modern capacity actually provides. A 685B model at FP8 on an eight-GPU node with 2TB of aggregate memory uses only 83GB for weights, leaving 96% of memory for KV cache. At that scale, capacity stops being the binding constraint entirely and bandwidth and concurrency become the only questions that matter.

The practical protocol: establish the memory floor from weights plus KV cache at target context length, decide whether the workload is bandwidth-bound or compute-bound, size for the latency target rather than peak throughput, apply a 25 to 44% penalty for TP=8, and confirm total count as TP multiplied by PP. Then measure MFU at that count before committing, because the difference between the plan and the measurement is the part that costs money.

Get a B300 quote sized against the binding constraint.

Not the memory floor. No buyer fees. For single GPUs, packet.ai handles self-serve access with 24/7 human support.

Get a B300 quote

◆ FAQ

Frequently asked questions

Two B300s hold 405B at FP8, since 2 x 288GB gives 576GB. But three B200s holding the same 576GB deliver better cost per token, because they provide 24 TB/s of aggregate bandwidth against the B300 pair's 16 TB/s, and the workload is bandwidth-bound at typical batch sizes.

Cheaper per hour, not necessarily per token. Memory bandwidth is a per-GPU property, so cutting GPU count cuts aggregate bandwidth. For bandwidth-bound inference, that reduces throughput by more than the hourly saving is worth.

Size for the latency target rather than peak throughput. Measured on HGX B200, a 30B model at TP=2 keeps gaining throughput up to 512 concurrent while time to first token rises from 152ms at eight concurrent to 2,610ms at 512. Throughput peaks long after latency stops being acceptable.

Total GPUs equals tensor parallel size multiplied by pipeline parallel size. Four-way tensor parallel across two pipeline stages uses eight GPUs, not four or two. Then apply a 25 to 44% communication penalty at TP=8 before treating the count as a throughput figure.

Rarely. With 288GB of HBM per card, offloading to CPU memory is unnecessary except at extreme context lengths, and it adds latency when it engages. Raising the memory utilisation fraction toward 0.95 is usually the better lever.

Last reviewed: 8 September 2026. The 405B two-configuration comparison and bandwidth analysis from Spheron's B300 vs B200 inference cost-per-token guide. Concurrency and TTFT benchmarks from Vultr's inference cookbook concurrency tuning page, verified on NVIDIA HGX B200, updated March 2026. HGX B300 node specifications from AceCloud's HGX B300 analysis, July 2026. Memory floor figures and parallelism arithmetic from Will It Run AI's vLLM tensor parallel setup guide, April 2026. KV cache offloading guidance from Vultr's inference cookbook. Get a B300 cluster quote on GPUaaS.com.

Share this article:LinkedInX / TwitterCopy link
No items found.
FIND THE BEST GPU DEAL

Get a wholesale GPU quote in a few hours

NVIDIA B200, H200, H100, A100, RTX Pro 6000 — N. America, EU, MEA, APAC. No buyer fees.

Related articles