Skip to content

Build Not yet confirmed elsewhere1 publisher 3 min read Published

Only the amd64 vLLM image carries the sm_75 kernels the cheapest AWS CUDA box needs

A dated pricing run puts the Graviton2-hosted G5g 20 percent below the Intel G4dn per hour, but that host resolves a container image with no kernels for its own T4G, so it compiles vLLM before serving a token.

The Engineer · Build desk

Send a correction

Illustration accompanying Only the amd64 vLLM image carries the sm_75 kernels the cheapest AWS CUDA box needs
Generated illustration

What happened

  • A run dated 2026-08-30 priced every NVIDIA instance type in us-east-1 straight from the AWS Pricing API rather than documentation, returning 64 types before filtering down to whole-GPU instances.
  • Among whole-GPU instances the Graviton2-hosted G5g came out cheapest, at 20 percent below the Intel-hosted G4dn per hour on demand and 59 percent below it on spot.
  • Read from the registry config blobs, the arm64 vLLM image lists arch targets starting at 8.0 with sm_75 absent, while the amd64 image under the same tag on the same day carries it.
  • On g5g.xlarge, with about 7.5 GiB usable host RAM, the kernel refused to map the 9.54 GiB Gemma 4 E2B checkpoint and vLLM crash looped with Cannot allocate memory (12).
  • Three types priced below the G5g, at 0.2020, 0.2375 and 0.4750 per hour, are fractional L4 slices of 2,861 to 5,722 MiB, and none of them can hold the 10.2 GB checkpoint.

Why it matters

  • What it costs cost A budget built from the hourly rate pays for a from-source vLLM build on first boot and a swapfile the pricier instance does not need, and the author puts the image packaging ahead of anything else as the cost driver.
  • Who has to decide decision Choosing a host CPU architecture is now a choice about which container manifest resolves, which moves the decision to whoever owns the image rather than whoever owns the capacity plan.
  • What it limits constraint Because the L4 slice ladder charges in proportion to framebuffer, there is no cheaper landing spot for a 9.54 GiB checkpoint further down the price list.
  • What doesn't add up contradiction The mechanism is reproducible from digests and error strings, but the per-token ranking rests on tables the published text does not show, so one half of the argument can be checked today and the other cannot.

`docker pull vllm/vllm-openai` resolves the tag against the host architecture before anything CUDA-related happens, and the two platforms behind that one tag disagree about which GPUs they serve. The amd64 config blob (sha256:2286e8533ca8) lists `TORCH_CUDA_ARCH_LIST=7.5 8.0 8.6 8.9 9.0 10.0 12.0` and contains sm_75 [9]. The arm64 blob (sha256:2a7cde230b59) starts at 8.0 and has no sm_75, same tag, same day [10]. So a Graviton2 host resolves, on architecture alone, to the image with no kernels for the accelerator attached to it, and the Dockerfile appends no `+PTX`, which removes the JIT fallback as well [11]. That box builds vLLM from source before it answers a request [11]. Billing runs during the compile.

The GPU itself checks out fine. vLLM independently sized the KV cache at exactly 329,579 tokens on both instances [8], which is about as close to proof of an identical GPU-side configuration as a running system will give you. The author's reading is that the mismatch is a packaging decision by the vLLM project rather than a property of either CPU, and the largest single cost difference between the families [12].

Invert the discounts and you get the number a capacity plan actually spends. Twenty percent cheaper per hour on demand [1] means the Intel box costs 25 percent more per hour [20]. Fifty-nine percent cheaper on spot [1] means the Intel box costs roughly 2.44 times as much, a 144 percent premium [21]. That premium buys an image that already has kernels in it.

The L4 ladder does not close the gap either. Take the largest of the three cheaper slices as the 0.4750 tier: g6f.4xlarge doubles both sides, 11,444 MiB against 5,722 and 0.95 against 0.4750 [23]. Framebuffer per dollar-hour is flat, and the 11,444 MiB slice leaves about 1,675 MiB above a 9.54 GiB checkpoint for KV cache and everything else [24]. The 10,246,621,918 bytes in the mmap error is the same 9.54 GiB object, not a second one [25].

On the host side the split is per-vCPU RAM: 4 GiB on G4dn against 2 on G5g [13]. That is why g5g.xlarge lands at about 7.5 GiB usable and errno 12 comes back from the mapping rather than from residency; a swapfile fixes it, and g4dn.xlarge's 16 GiB maps the checkpoint with no swapfile configured at all [14][15].

For the cost-per-token ranking to transfer to your workload, several things have to hold. You have to pull the published tag rather than build an arm64 image with 7.5 in the arch list or `+PTX` enabled, because that is the difference being priced [12]. Your model has to sit in the same 9 to 10 GiB band, since a smaller checkpoint moves the mmap ceiling out of the picture [14]. And your instances have to be short-lived enough that a from-source build is a real line item; on a box you keep for a month, the compile amortises and the 20 percent hourly discount is the number that wins [16]. The supplied text names the comparison but does not reproduce the throughput rows, so the mechanism is checkable and the ranking is not [22].

Worth noting what the deployment does well. The Hugging Face token is read from Secrets Manager at boot instead of user data, because instance metadata is readable by anything on the box, and the fetch is wrapped in `set +x` because the bootstrap runs under `set -x` and bash traces assignments with their values [18]. Access is SSM only, with no inbound SSH rule and no key pair [17]. The MCP layer is one Python file over stdio with three dependencies [19].

What to watch

  • Whether vLLM adds 7.5 to the arm64 arch list or ships +PTX, which would erase the difference the article prices.
  • A rerun of the same Pricing API pull on a later date, since the 59 percent spot gap is a single-day reading.
  • Publication of the throughput rows behind the cost-per-token verdict, which the supplied text does not include.

Clarity's read

What the record supports and how the coverage leans. The claims behind it follow.

Reality

Evidence58
Adoption27
Hype gap+16
Incentives44
Confidence54
Why these scores

Claim ledger

Ranked by verification strength, evidence, and original report placement.

  1. [1]

    Among instances that give a whole GPU rather than a fractional slice, the cheapest real CUDA GPU on AWS is the Arm box: 20 percent cheaper per hour on demand and 59 percent cheaper on spot.

  2. [2]

    The same article text and headline appear on dev.to under two different accounts, xbill and aws-builders.

  3. [3]

    The article deploys Gemma 4 E2B onto the two cheapest whole-GPU CUDA instances AWS sells and compares what they cost to run; everything was measured on 2026-08-30.

Get this ledger inside ChatGPT. Ask about any of our stories and the answer brings its figure, each claim’s verdict and the sources. Free, no account.

Add to ChatGPTAdd to Claude

Sources

1 independent publisher whose own reporting we read for this story.

  1. dev.to

    2 articles · August 30, 2026

    The Cheapest CUDA GPU on AWS Has an Arm CPU — and You Probably Want the Intel One

Share your take

Let Clarity write the post for you.

Signed-in readers get a short post drafted on this story in the register they choose — narrative, analytical, or a direct position — editable to the last word before it goes anywhere. The share buttons at the top of this story work without an account.

Topics and entities

Follow any of these and your For You feed starts watching them — no settings page required.

Topics

  • AWS GPU instance pricingFollow
  • MCP deployment toolingFollow
  • vLLM serving operationsFollow
  • Multi-arch container portabilityFollow
  • Arm-hosted GPU inferenceFollow
Loading related stories