Build1 distinct publisher3 min readPublished
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

Compiled by The EngineerSomething wrong?How this is made
`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 [8]. The arm64 blob (sha256:2a7cde230b59) starts at 8.0 and has no sm_75, same tag, same day [9]. 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 [10]. That box builds vLLM from source before it answers a request [10]. 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 [7], 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 [11].
Invert the discounts and you get the number a capacity plan actually spends. Twenty percent cheaper per hour on demand [4] means the Intel box costs 25 percent more per hour [20]. Fifty-nine percent cheaper on spot [4] 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 [22]. 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 [23]. The 10,246,621,918 bytes in the mmap error is the same 9.54 GiB object, not a second one [24].
On the host side the split is per-vCPU RAM: 4 GiB on G4dn against 2 on G5g [12]. 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 [13][14].
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 [11]. 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 [13]. 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 [15]. The supplied text names the comparison but does not reproduce the throughput rows, so the mechanism is checkable and the ranking is not [25].
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 [17]. Access is SSM only, with no inbound SSH rule and no key pair [16]. The MCP layer is one Python file over stdio with three dependencies [18].
Ranked by verification strength, evidence, and original report placement.
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.
The same article text and headline appear on dev.to under two different accounts, xbill and aws-builders.
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.
G5g pairs a T4G with a Graviton2 host on aarch64; G4dn pairs a T4 with an Intel host on x86_64. Both carry the same generation of NVIDIA Turing silicon, the GPUs are effectively the same part, and the host CPU is the variable.
Every NVIDIA instance type in us-east-1 was priced from the AWS Pricing API rather than from documentation, using get-products filters for Linux, shared tenancy, no pre-installed software and capacitystatus Used; 64 types came back.
Three instances are cheaper still, at 0.2020, 0.2375 and 0.4750, but all three are fractional L4 slices with 2,861 to 5,722 MiB and none of them can map Gemma 4 E2B's 10.2 GB checkpoint.
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
2 articles · August 30, 2026
Follow any of these and your For You feed starts watching them — no settings page required.
build
Fitting 6.155 GB of Gemma 4 weights lands you on AWS's only Arm GPU family1 distinct publisher
build
Binding a local model server to 0.0.0.0 hands the LAN an unauthenticated API1 distinct publisher
build
Rust MCP servers: the case is resident memory at 16 per box, not throughput1 distinct publisher
build
A Pallas kernel tiled for TPU VMEM splits one Gemma 4 port into two checkpoints1 distinct publisher
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Digests solid, tables missing
This story's weight splits cleanly. Where the author quotes a primary artifact — two registry config blobs with their arch lists, an mmap error whose 10,246,621,918 bytes really does equal the 9.54 GiB checkpoint, spot placement scores, the exact pricing API filter set — a reader can re-run the check today. Where the author summarises, the substrate is gone: every table pointed at, including the whole-GPU price list behind '20 percent' and '59 percent', is missing its rows.
One rig, one region, one day
What is broadly deployed here is the image, not the practice: the arm64 build without sm_75 is live in a public registry and affects anyone putting vLLM on a T4G. Everything else is a single operator's afternoon — one us-east-1 spot instance, one crash loop, one patched tag — with no sign that others have hit the same wall or that AWS or the vLLM project have acknowledged it.
Headline earned, verdict unpaid
Unusually, the piece argues against its own hook — it calls the Arm box's hourly price the wrong number to buy on. But it then declares the missing sm_75 kernels 'the single largest cost difference between the two families' without publishing a single token-rate or cost-per-token figure. The mechanism is proven; the magnitude is asserted. That is a modest overreach, not a puffed one.
Self-published, twice, with a repo attached
This is an author promoting his own tooling: the walkthrough clones xbill9/gemma4-dev, and the same text runs on dev.to under both the xbill account and the AWS-affiliated aws-builders account on one slug, which doubles reach without adding scrutiny. No vendor sponsorship is disclosed or implied, and the findings cut against the cheaper AWS instance rather than flattering anyone — so the pull is visibility, not vendor alignment.
Checkable but unchecked
We hold the mechanism findings at fair confidence because they were quoted from artifacts anyone can pull, and we hold the money findings loosely because nobody outside the author has priced, timed, or reproduced them. A second posting of the same bytes did not move this number.