Every infrastructure decision for AI starts with the same arithmetic, and it fits on one line:
VRAM ≈ parameters × bytes per parameter + headroom
A 64-billion-parameter model in BF16 (2 bytes each) needs 128 GB just to exist in memory — before processing anything. No single card on the market has that.
From there, you either shrink the model or split it. This article is about the second option — and about the price it charges.
🌍 Series "World Models" — 5 parts
1. What a world model is · 2. Cosmos 3 inside · 3. Synthetic data · 4. Splitting across GPUs ← you are here · 5. From text to action
The arithmetic, with numbers you recognise
| Model | BF16 (2 bytes) | 8-bit | 4-bit |
|---|---|---|---|
| 7B | 14 GB | 7 GB | 3.5 GB |
| 13B | 26 GB | 13 GB | 6.5 GB |
| 34B | 68 GB | 34 GB | 17 GB |
| 70B | 140 GB | 70 GB | 35 GB |
| 64B (Cosmos3-Super) | 128 GB | not supported | not supported |
Add execution headroom on top: activations, attention cache, runtime workspace. For a language model serving a few users, 15–20% usually suffices. For a video model, far more — because it holds dozens of frames alive at once, with attention between them.
That is where part 2's claim comes from: 128 GB of weights will not run on a 141 GB card, because that leaves 13 GB for the part that consumes the most.
⚠️ The easy escape hatch is not always available
For nearly every language model, the answer to "it does not fit" is quantisation: 8-bit halves it, 4-bit quarters it, and quality drops little.
For Cosmos 3 that door is shut — the card declares that only BF16 was tested; FP16, FP8 and FP4 are not officially supported. Diffusion models are notoriously more precision-sensitive than language models: quantisation noise enters the denoising process and becomes a visible artefact.
Before planning around quantisation, confirm the specific model supports it. It is an assumption that usually goes unverified.
The five possible cuts
"Splitting a model across GPUs" is not one thing — it is five different cuts, and they compose. Each cuts in a different direction.
1. Tensor parallelism — cuts each layer in half
Every weight matrix is sliced across the cards. They all process the same input, each with its slice, and exchange results at the end of every layer.
Gain: solves memory and speed at once. Cost: the hungriest for communication — an exchange at every layer. Outside a machine with a fast interconnect between cards, it degrades badly. Typical flag: --tensor-parallel-size.
2. Sequence parallelism (Ulysses) — cuts what is being processed
Instead of slicing the model, it slices the input: each card takes a chunk of the sequence — of tokens for text, of frames for video.
Gain: the cut that makes long context and long video fit. Cost: requires redistribution at every attention block. Flag: --ulysses-degree.
3. CFG parallelism — the trick unique to diffusion
This one deserves attention because it is the most elegant and the least known. Diffusion models with classifier-free guidance compute, at every step, two predictions: one conditioned on your prompt and one unconditional. Then they combine them.
Since the two are independent, each can run on a different card — in parallel, with no communication until the end of the step.
💡 Why this is the best deal on the list
It is nearly ideal parallelism: two cards, almost double the speed, because no data is exchanged along the way.
That is why the recommended Cosmos 3 configuration starts with --cfg-parallel-size 2 even in the two-card setup: it is the first doubling you buy, and the cheapest.
And it is specific to diffusion — there is no equivalent in a language model, which helps explain why the recipe for serving video looks nothing like the recipe for serving an LLM.
4. Sharding (FSDP / HSDP) — each card holds a piece, assembled on demand
Parameters live scattered; when a layer is about to execute, the cards gather only the piece needed, use it and discard it.
The H in HSDP is for hybrid: shard inside the group of cards that talk fast, replicate across groups. Flags: --use-hsdp --hsdp-shard-size N.
5. Pipeline parallelism — each card takes a stretch of layers
Layers 1–10 on card A, 11–20 on B, and so on. Data walks the line.
Gain: minimal communication. Cost: the "bubble" — while card B works, A waits. It only pays off with a full queue of requests, which makes it better suited to training than to serving one person.
And if you only have one card? Offload
There is a plan B: keep only the executing layer in VRAM and park the rest in system memory, fetching each layer when its turn comes. That is --enable-layerwise-offload.
It works, and it is honest to say it is slow — the card spends much of its time waiting on the bus. It is for proving the thing runs, or for batch work with no deadline. It is not for serving requests.
The measurement almost nobody makes
Here is the practical point of this entire article. Everyone assumes more cards is proportionally better. NVIDIA's own published figures for Cosmos 3 say otherwise:
| Cards | Price per hour | Time per video | Speed-up | Cost per video |
|---|---|---|---|---|
| 2 × 141 GB | R$ 57.10 | ~3 minutes | 1× | R$ 2.86 |
| 8 × 141 GB | R$ 228.40 | ~55 seconds | ~3.3× | R$ 3.49 |
Catalogue prices as of 1 September 2026, per single GPU, no scheduled interruption. Prices are in Brazilian reais (BRL), the billing currency. The catalogue moves within the same day — check the live one before committing to a number.
Four times the cards, 3.3 times the speed. The difference — about 22% — is what inter-card communication consumes, and you pay it in money.
This is not an implementation defect: it is Amdahl's law showing up. There is always a fraction of the work that does not parallelise, and it sets the ceiling. The more cards you add, the more expensive each unit of purchased speed becomes.
📈 The decision rule in one sentence
If somebody is waiting for the answer, buy cards — latency is worth the premium.
If it is batch — a thousand clips overnight, a training run, a queued job — the smaller configuration delivers more result for the same money. You trade wall-clock time, which nobody is counting, for cost, which everybody is.
A practical sizing recipe
- Compute the weights: parameters × bytes per parameter.
- Add headroom: +20% for a language model; +50% or more for video, and more again if the output is long.
- Check whether quantisation is available — do not assume it is.
- Divide by the card's VRAM and round up. That is your minimum.
- Measure before scaling. Run at the minimum, time it, and only then decide whether the extra speed is worth the extra cost. Real speed-up is almost never what you expected.
| If you want to... | Configuration | Price/h |
|---|---|---|
| Serve a 7B–13B language model | 1 card of 24 GB | R$ 3.18 |
| Serve a 34B model in BF16 | 1 card of 96 GB | R$ 10.26 |
| Serve a 70B model in BF16 | 2 cards of 80 GB | R$ 28.62 |
| Serve a 70B model quantised to 4-bit | 1 card of 48 GB | R$ 7.08 |
| Serve a 64B world model (BF16 only) | 2 to 8 cards of 141 GB | R$ 57.10 to R$ 228.40 |
Catalogue prices as of 1 September 2026, per single GPU, no scheduled interruption. Prices are in Brazilian reais (BRL), the billing currency. The catalogue moves within the same day — check the live one before committing to a number.
Row four against row three is the summary of everything: the same 70B model costs four times less per hour quantised on one card than in BF16 on two. When quantisation is available it is usually the most profitable infrastructure decision there is — and it is precisely the door Cosmos 3 closes.
Measure instead of estimating
Real speed-up is only discovered with a stopwatch. You can bring up the minimum configuration, measure, bring up the larger one, measure again, and pay only for the hours used — in Brazilian reais, no contract and no minimum commitment.
See the catalogue →Keep reading: part 2: inside Cosmos 3 · part 1: what a world model is