Everything so far in this part priced the accelerator. The accelerator is not the invoice.
Around it sit lines that no one benchmarks and every team pays: moving data out, keeping data at rest, and the free tiers that quietly decide which of those hurts. These are not rounding errors at AI scale, and unlike the GPU rate they are almost never negotiated.
What it costs to move a byte out
Published rates on 2026-08-05, data transfer out to the internet, North America:
| Cloud | Free each month | First paid tier | Next tier | High volume |
|---|---|---|---|---|
| Azure | 100 GB | $0.087/GB | $0.083 | $0.05 (>350 TB) |
| AWS | 100 GB | $0.09/GB | $0.085 (next 40 TB) | $0.05 (>150 TB) |
| GCP | 1 GiB | $0.12/GiB | $0.11 (1–10 TiB) | $0.08 (>10 TiB) |
Two things jump out, and the second is the one that catches people.
GCP charges 33% more than AWS at the first paid tier, and its cheapest high-volume rate ($0.08) is still 60% above what AWS and Azure charge at theirs ($0.05). Egress is one of the few places where the three clouds are not close, and it runs opposite to the H100 comparison in what an H100-hour costs — AWS was cheapest there too, but Azure was worst. Here Azure is best and GCP is worst. You cannot rank the clouds once and reuse it.
GCP's free tier is 1 GiB. AWS and Azure give you 100 GB. That is a hundredfold difference, and it is the line that surprises teams migrating a small workload. On AWS a hobby project egresses free forever. The identical project on GCP starts billing in the first afternoon.
The worked example
Take 10 TB out per month — an unremarkable figure for a service that returns images, video, model artefacts, or bulk exports:
| Cloud | Arithmetic | Monthly |
|---|---|---|
| Azure | (10,240 − 100) × $0.087 | $882 |
| AWS | (10,240 − 100) × $0.09 | $913 |
| GCP | 1,023 × $0.12 + 9,216 × $0.11 | $1,137 |
A $255/month spread on the same 10 TB, purely from which logo is on the invoice.
Now anchor it against the thing you were actually optimising. At RunPod's $2.99 H100 rate, GCP's $1,137 egress bill buys 380 GPU-hours — nearly sixteen days of a dedicated H100, running continuously.
That is the point of this chapter. Teams spend weeks tuning batch size to claw back 20% of a GPU bill while an unexamined egress line quietly consumes a fortnight of that same GPU every month.
Why this bites AI workloads specifically
Token traffic is tiny — a million output tokens is a few megabytes, so serving a text API will never generate a serious egress bill. The exposure is everywhere else:
- Model weights. A 70B model at FP16 is ~140 GB. Pulling it out of AWS once costs about $12.60; out of GCP, $16.80. Trivial once. Not trivial when CI pulls it on every build, or when you are copying weights between clouds to compare providers — the exact exercise this book keeps recommending.
- Checkpoints. This is the quiet one. Checkpoint a 70B model every 30 minutes for a week and you have written
336 checkpoints. At 140 GB each that is **47,000 GB**, and at S3's $0.023/GB-month standard rate, keeping all of it runs about $1,080/month — comparable to the entire egress line above, for artefacts most teams never delete. (Illustrative: your checkpoint size and cadence differ, and the fix is a retention policy, not a cheaper bucket.) - Datasets. Training corpora move in and out during preparation. Inbound is free on all three clouds; it is the round trip that costs.
- Cross-region replication. Priced separately from internet egress and easy to enable by accident. AWS charges $0.02/GB just to move to GovCloud.
Storage, briefly
S3 standard is $0.023/GB-month for the first 50 TB, easing to $0.022 and then $0.021 above 500 TB. Standard-Infrequent Access is $0.0125 — a 46% cut for data you read rarely, which describes almost every checkpoint older than a day.
Storage is usually the smaller line, and it is also the easier one to fix: lifecycle policies that demote checkpoints to infrequent access after 24 hours and delete them after a fortnight are a config change, not a project. The reason it goes unfixed is that nobody is looking, which is the theme.
The neocloud asymmetry
Here is what makes this chapter load-bearing for the hyperscaler-versus-neocloud decision: Lambda publishes no egress fees, and RunPod does not meter egress either. The line is not cheaper. It is absent.
Put that against the earlier ladder. AWS on-demand H100 is $6.88/GPU-hour against RunPod's $2.99 — a 2.3× gap on compute alone. Add 10 TB/month of egress and the hyperscaler picks up another ~$900 that the neocloud simply does not charge.
For an egress-heavy workload this can matter more than the hourly rate, and it is invisible in every price comparison that stops at $/GPU-hour — including, if you are not careful, the one in this book's own Part 2 opener. That is the honest reading: the hourly rate is the beginning of the comparison, not the end.
It cuts the other way too. If your workload is text inference with negligible egress, this entire chapter is worth roughly nothing to you, and you should not switch vendors over it.
The diagnostic
- What is your actual monthly egress, in GB, by service? Most teams cannot answer this, which is itself the finding. It is one query in your cost explorer.
- What fraction of your total cloud bill is data transfer? Above ~10% and this is a bigger lever than anything in the serving stack.
- Are you on GCP with meaningful egress? You are paying 33% over the AWS rate at the first tier. That is worth a specific look, not a general one.
- Do your checkpoints have a lifecycle policy? If the answer is "I do not know," the answer is no, and you are paying full standard rate for artefacts from training runs that finished months ago.
- Is anything crossing regions that does not need to? Inter-region transfer is a separate meter and a common accident.
- Would a CDN in front change the shape? For repeated delivery of the same artefacts, often yes — and it is out of scope here, but it belongs on the list.
What this chapter is not saying
It is not saying pick a cloud on egress. It is saying that a comparison built only on $/GPU-hour is incomplete in a direction that systematically favours the hyperscalers' framing, because the accelerator rate is the number they publish most prominently and the transfer rate is the one buried three pages deep behind a client-side price widget.
It is also not a claim that egress is always material. For a pure text-inference workload it is noise. The work is finding out which one you are — and that is a single query, not a project.