Chapter 2.77 of 12 in this part

Egress, storage, and the bill around the GPU

GCP charges 33% more than AWS to move a byte out, and gives you a free tier 100× smaller. At 10 TB a month that gap alone is worth two weeks of a dedicated H100.

6 min read·revised 2026-08-05

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

  1. 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.
  2. What fraction of your total cloud bill is data transfer? Above ~10% and this is a bigger lever than anything in the serving stack.
  3. 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.
  4. 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.
  5. Is anything crossing regions that does not need to? Inter-region transfer is a separate meter and a common accident.
  6. 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.

Sources & methodcaptured 2026-08-05

Sources, captured 2026-08-05: AWS internet data-transfer-out tiers resolved from Amazon's own pricing API (b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/datatransfer), us-east-1 — 605 SKUs, of which the "DataTransfer External Outbound" series carries the internet rates; the published page renders these client-side and contains no numbers in static HTML. S3 standard rates from the same API (meteredUnitMaps/s3). Azure from the public bandwidth pricing page, North America/Europe to any destination. GCP from Google's VPC network pricing page, Premium Tier, internet data transfer out to North America — note Google bills per GiB while AWS and Azure bill per GB, so GCP's effective rate is ~7% higher again than the headline comparison suggests. Lambda's no-egress-fee position is from its public GPU cloud page. The 10 TB and checkpoint figures are computed by me from those published rates and are arithmetic, not quotes; the checkpoint scenario in particular is illustrative and its inputs will not match yours. Free tiers stated are the standard published allowances and exclude promotional credits.

Want this done on your account rather than by you?

The handbook is the method, written out in full so you can run it yourself — that is the point of publishing it. If you would rather someone else did the first pass, the teardown is free and you keep the findings either way.