AI model & checkpoint transfer cost
Moving model weights across regions or clouds is the single biggest avoidable AI egress bill. There is no special rate: a checkpoint bills at standard per-GB egress, and the bill scales with the file size. The math is simple once you know the checkpoint size.
Rule of thumb: an FP16 checkpoint is parameters × 2 bytes. A 70B model is ~140 GB; copying it to another cloud costs ~$12.60 at AWS’s $0.09/GB.
How much does moving model weights cost?
It depends on two things: the checkpoint size and where it is going. Same-region reads from S3, GCS, or Blob storage are free. Cross-region inside one cloud is $0.02/GB on AWS. Out to a different cloud or on-prem is standard internet egress, $0.09/GB on AWS, $0.12/GB on GCP Premium Tier, $0.087/GB on Azure. So a 140 GB (70B FP16) checkpoint is free in-region, $2.80 cross-region, and $12.60 cross-cloud, per copy.
The trap is frequency. Fresh instances re-pull the same weights, so a checkpoint moved once for a few dollars becomes hundreds a month under autoscaling and spot churn. Hosting weights on Cloudflare R2 (zero egress) removes the charge entirely.
Model: 70B params × 2 bytes = 140 GB · rates from published AWS pricing
[01]Transfer cost per checkpoint, by model size
FP16 checkpoint size is the parameter count times 2 bytes. The cost per copy is that size times the egress rate for the direction you are moving it. Same-region reads are free and not shown.
| Model | FP16 size | Cross-region ($0.02/GB) | Cross-cloud ($0.09/GB) |
|---|---|---|---|
| 7B (e.g. Mistral 7B) | 14 GB | $0.28 | $1.26 |
| 13B (e.g. Llama 2 13B) | 26 GB | $0.52 | $2.34 |
| 70B (e.g. Llama 3 70B) | 140 GB | $2.80 | $12.60 |
| 141B (Mixtral 8x22B) | 282 GB | $5.64 | $25.38 |
| 405B (Llama 3.1 405B) | 810 GB | $16.20 | $72.90 |
Sizes in decimal GB (parameters × 2 bytes). Cross-cloud uses the AWS first-tier internet rate; GCP Premium ($0.12/GB) and Azure ($0.087/GB) scale the same way. Per copy, before repeat pulls.
Precision sets the size, and the bill
The same model is a different number of bytes at each precision. Quantizing before transfer is the cheapest lever on egress: an INT4 copy is a quarter of an FP16 copy. Example column is a 13B model.
Full precision. Rare for inference weights.
The default for served and shared weights.
Common quantized serving format. Half the egress.
Aggressive quant (GPTQ, AWQ). A quarter the egress.
Full training checkpoints are larger than inference weights: they also carry optimizer state (about 2x the model size for Adam in FP32) plus gradients, so a training checkpoint can run 4 to 6 times the inference-weights size. Those usually stay in-region (free), but cross-region DR copies of them are not.
[02]The fresh-instance re-pull trap
A single copy is cheap. The bill is built by frequency: every autoscaled node, every spot reclaim, every CI job that reloads weights pulls the full checkpoint again. Here is a 70B FP16 checkpoint (140 GB) at different cadences and directions.
| Cadence | Pulls / month | Cross-region ($0.02/GB) | Cross-cloud ($0.09/GB) | On R2 |
|---|---|---|---|---|
| Weekly redeploy | 4 | $11.20 | $50.40 | $0 |
| Daily fresh node | 30 | $84.00 | $378.00 | $0 |
| Hourly autoscale churn | 720 | $2,016 | $9,072 | $0 |
140 GB × pulls × rate. Same-region pulls are free; the columns above assume the node is out of region or out of cloud from the weights store.
[03]Three ways to make it zero
Stay in region
Reads from S3, GCS, or Blob storage in the same region as your compute are free. Pin the GPU cluster to the region where the weights live and cross-region transfer disappears.
Mirror to R2
Cloudflare R2 charges $0 egress at every volume, so cross-region and cross-cloud pulls from an R2 mirror are free. HuggingFace serves its hub from R2, so public weights are already free at source.
Quantize first
Move the smallest artefact that serves. An INT4 copy is a quarter of the FP16 bytes, so a quarter of the egress, when the accuracy trade-off is acceptable for the target workload.
Model the rest of your AI egress
Checkpoint transfer is one of three AI egress surfaces. Training-data pulls are ingress (free); inference response streaming is per-token egress. Model your total across providers.
[04]Frequently asked
Q.01How much does it cost to transfer model weights between clouds?
›
It is standard cloud egress, priced per GB, so the bill scales with the checkpoint size. A model's FP16 checkpoint is roughly its parameter count times 2 bytes: a 7B model is about 14 GB, a 70B model about 140 GB, and a 405B model about 810 GB. Copying that out to another cloud bills at the source provider's internet egress rate ($0.09/GB on AWS), so a 70B FP16 checkpoint costs about $12.60 per copy and a 405B checkpoint about $73. Moving it cross-region inside the same cloud is cheaper at $0.02/GB on AWS ($2.80 for 70B, $16.20 for 405B). Reading it from storage in the same region is free.
Q.02Why is re-pulling model checkpoints so expensive?
›
Because it happens on every fresh instance and the files are large. A team that spins up a new out-of-region GPU node each day and pulls a 140 GB (70B FP16) checkpoint pays $0.02/GB cross-region, about $2.80 per pull, roughly $84 a month. Pull it from a different cloud at $0.09/GB and the same daily cadence is about $378 a month. The charge is invisible in isolation but compounds with autoscaling, spot-instance churn, and multi-region training. It is the single biggest avoidable AI egress cost.
Q.03How do I calculate my model checkpoint size?
›
Multiply the parameter count by the bytes per parameter for your precision: FP32 is 4 bytes, FP16 and BF16 are 2 bytes, INT8 is 1 byte, and INT4 is 0.5 bytes. A 13B model is about 52 GB in FP32, 26 GB in FP16, 13 GB in INT8, and 6.5 GB in INT4. Full training checkpoints are larger than inference weights because they also store optimizer state (roughly 2x the model size for Adam in FP32) plus gradients, so a training checkpoint can be 4 to 6 times the inference-weights size. Quantizing before transfer is the cheapest way to cut the egress.
Q.04How do I make model transfer egress zero?
›
Three ways. First, keep training and serving in the same region as the weights, because same-region reads from S3, GCS, or Blob are free. Second, host re-pulled artefacts on a zero-egress store: Cloudflare R2 charges $0 egress at every volume, and HuggingFace serves its model hub from R2, so pulling public weights from HuggingFace is free at source. Third, quantize before you move: an INT4 copy is a quarter the bytes of FP16, so a quarter the egress. The combination of same-region storage plus an R2 mirror for cross-region and cross-cloud pulls removes the charge almost entirely.