# Runpod or AWS for a GPU?

> I need an NVIDIA GPU for models and experiments. Do I rent it on Runpod, or on AWS with SageMaker or EC2, and when do I use both? Runpod for research and experiments: the same card for 26–42% less than AWS in us-east-1 (44–55% less than Sydney), cards AWS doesn't rent, and no quota to wait for. SageMaker when the data is the client's: training jobs and endpoints inside its account, Sydney included. EC2 for a full GPU VM in the account, or inference that runs 24/7 on a Savings Plan. Prototype on Runpod, ship on AWS.

- A choice between tools from The Stack by Nicolas Dao (Cloudless Labs, Sydney): when to pick each, and when to run both
- Last reviewed: 1 November 2026, by Nicolas Dao
- Web page: https://cloudlesslabs.com/stack/guides/runpod-or-aws/. The whole stack in one file: https://cloudlesslabs.com/stack/brief.md
- Tools: [Runpod](https://cloudlesslabs.com/stack/runpod/index.md) (My default), [SageMaker](https://cloudlesslabs.com/stack/aws-sagemaker/index.md) (Use when it fits), [EC2](https://cloudlesslabs.com/stack/aws-ec2/index.md) (Use when it fits), [Hostinger VPS](https://cloudlesslabs.com/stack/hostinger-vps/index.md) (My default)

## When to pick which

Pick Runpod when:

- Research, proofs of concept and experiments that you start in the morning and stop at night.
- The data isn't the client's: public, synthetic or your own.
- The card matters: an RTX 4090 or 5090, which AWS doesn't rent, or 48 GB from $0.59 an hour.
- You need the GPU today, not after a quota request.

Pick SageMaker when:

- Training or fine-tuning on the client's data, which stays in S3 in the client's account.
- Inference in the client's production system: endpoints that autoscale, and asynchronous ones that scale to zero.
- The work must stay in Australia, or needs IRAP PROTECTED or HIPAA.

Pick EC2 when:

- A full GPU VM inside the client's account: its own Docker, systemd, UDP, a private network.
- Inference that runs 24/7: a 3-year Savings Plan puts an L4 at about $235 a month.

Both, when:

- Prototype on Runpod with sample data, then train and serve on SageMaker in the client's account once the method works: the code is the same PyTorch.
- Request the AWS GPU quota on day one, and work on Runpod while you wait for it.
- My own setup pairs Runpod with a third box: the agents on an always-on Hostinger VPS, the GPU on a Runpod pod beside it, stopped when idle.

Questions that change the answer:

- Whose data is it? The client's, in its account or in Australia, means AWS.
- Does it run in bursts or 24/7? Bursts point to Runpod, 24/7 to an AWS Savings Plan.
- Does the code need a full VM, with its own Docker, systemd or UDP? Then it's EC2.
- Which card does the research code target, and how much memory does it need? Consumer cards are on Runpod only.
- Does procurement need an uptime commitment, IRAP or a data-center card? Then it's AWS, or a professional card on Runpod.

## The short version

| | Runpod | SageMaker | EC2 |
|---|---|---|---|
| My verdict | My default: research and experiments | Use when it fits: GPU work on a client's data | Use when it fits: a full GPU VM in the account |
| What you get | A container with SSH, from a ready PyTorch image | Managed training jobs, notebooks and endpoints | A full VM: Docker, systemd, UDP |
| Billing | Per second | Per second | Per second, 60-second minimum |
| Between sessions | The network volume, $0.07 per GB a month | Nothing, between training jobs; a running Studio space bills | The EBS disk, $0.08 per GB a month ($0.096 in Sydney) |
| GPU quota | Nothing to request | 0 by default, per instance type | 0 by default |
| A 24 GB card, per hour | RTX 4090 $0.89, L4 $0.59 | ml.g6.xlarge (L4) $1.127 | g6.xlarge (L4) $0.8048 |
| A 48 GB card, per hour | RTX A6000 $0.59, L40S $1.09 | ml.g6e.xlarge (L40S) $2.61 | g6e.xlarge (L40S) $1.861 |
| In Australia | L40S only, without network volumes | T4, A10G, L4, A100, H100 | T4, A10G, L4, H100 |
| Data in and out | Free | Stays inside the account | $0.09 per GB to the internet after 100 GB a month ($0.114 in Sydney) |
| Commitment discount | None since October 2026 | SageMaker Savings Plans, up to 64% | EC2 Savings Plans: 35% (1 year) to 60% (3 years, upfront) on an L4 |
| Uptime commitment | None in the terms | 99.95% (real-time endpoints) | 99.99% (regional) |
| Compliance | SOC 2 Type II, ISO 27001 | IRAP PROTECTED, HIPAA-eligible | IRAP PROTECTED, HIPAA-eligible |
| Provisioning | Runpod's own Terraform provider; Pulumi through it | Official Pulumi and Terraform | Official Pulumi and Terraform |
| An agent drives it | Official MCP server and Claude Code plugin, with OAuth | The AWS MCP Server | The AWS MCP Server |

Prices in us-east-1 unless stated, on demand, checked on 1 November 2026.

## The same card, two prices

| GPU | Memory | Runpod, $/hour | AWS us-east-1, $/hour | AWS Sydney, $/hour | Runpod vs us-east-1 |
|---|---|---|---|---|---|
| L4 | 24 GB | 0.59 | 0.8048 (g6.xlarge) | 1.0464 | 27% less |
| RTX 4090 | 24 GB | 0.89 | not offered | not offered | |
| L40S | 48 GB | 1.09 | 1.861 (g6e.xlarge) | not offered | 41% less |
| RTX PRO 6000 | 96 GB | 2.49 | 3.3631 (g7e.2xlarge) | not offered | 26% less |
| H100 | 80 GB | 3.99 | 6.88 (p5.4xlarge) | 8.944 | 42% less |

Sources, checked on 1 November 2026: [Runpod pricing](https://www.runpod.io/pricing), [EC2 on-demand pricing](https://aws.amazon.com/ec2/pricing/on-demand/) (the AWS Price List of 29 October). SageMaker adds 40% to the 24 and 48 GB instances and 15% to the H100 ([SageMaker AI pricing](https://aws.amazon.com/sagemaker/pricing/)).

Against Sydney, Runpod is 44% cheaper on an L4 and 55% on an H100. The machine around the card differs too: AWS's g6.xlarge has 4 vCPUs and 16 GB of RAM, while the CPUs and RAM that come with a Runpod GPU vary by host (my 4090 pod had 13.6 CPUs and about 61 GB).

So the cost argument isn't that Runpod is the cheapest GPU there is. Marketplaces such as Vast.ai rent a 4090 from $0.14 an hour (the alternatives are on the [Runpod entry](https://cloudlesslabs.com/stack/runpod/index.md)). It's that, for the same card, AWS charges 1.4 to 2.2 times as much, and doesn't rent the consumer cards at all.

## A month of experiments, priced

220 GPU-hours (about ten hours a day on working days) and 200 GB of disk kept all month:

| Option | GPU | $/month |
|---|---|---|
| Runpod | L4 | 143.80 |
| AWS us-east-1 | L4 (g6.xlarge) | 194.16 |
| Runpod | RTX 4090 | 209.80 |
| AWS Sydney | L4 (g6.xlarge) | 250.51 |
| Runpod | L40S | 253.80 |
| AWS us-east-1 | L40S (g6e.xlarge) | 426.52 |

The AWS rows include a public IPv4 address while running ($0.005 an hour). Egress isn't included: Runpod charges none, AWS $0.09 per GB after the first 100 GB.

Per hour isn't per job. The RTX 4090 moves 1,008 GB of memory a second, the L4 300 ([NVIDIA's Ada architecture paper](https://images.nvidia.com/aem-dam/Solutions/geforce/ada/nvidia-ada-gpu-architecture.pdf), [NVIDIA L4](https://www.nvidia.com/en-us/data-center/l4/)): 3.4 times as much for about the same hourly price. That's from the spec sheets, not a benchmark of my models.

## Inference that runs all day

The answer flips when the GPU never stops. Runpod withdrew its savings plans in October 2026 and spot pods are retired, so a pod that runs all month pays the full rate. AWS discounts commitment:

| Option, us-east-1 unless stated | GPU | $/month, 730 hours |
|---|---|---|
| EC2 g6.xlarge, 3-year Savings Plan, all upfront | L4 | about 235 |
| EC2 g6.xlarge, 1-year Savings Plan, no upfront | L4 | about 382 |
| Runpod, on demand | L4 | about 431 |
| EC2 g6.xlarge, Sydney, 1-year Savings Plan | L4 | about 497 |
| EC2 g6.xlarge, on demand | L4 | about 588 |
| Runpod, on demand | RTX 4090 | about 650 |
| SageMaker ml.g6.xlarge, on demand | L4 | about 823 |

Sources, checked on 1 November 2026: [EC2 Instance Savings Plans](https://aws.amazon.com/savingsplans/compute-pricing/), [Runpod pricing](https://www.runpod.io/pricing), [SageMaker AI pricing](https://aws.amazon.com/sagemaker/pricing/).

Most client inference isn't 24/7 on one card, though. A SageMaker asynchronous endpoint scales to zero between batches, and a real-time endpoint autoscales with the traffic. For a client, that's the usual home.

## Australia

| Provider | GPUs in Australia |
|---|---|
| Runpod | OC-AU-1: L40S only, low stock, no network volumes |
| AWS EC2, Sydney | T4, A10G, L4 (whole and fractional), a single H100 ($8.944 an hour), 8× A100, 8× H200. No L40S, no Blackwell |
| SageMaker, Sydney | T4, A10G, L4, A100, H100 |
| Azure, Australia East | Container Apps serverless GPUs (T4, A100), billed per second, scaling to zero |
| Vultr, Sydney | A40 (48 GB) at $1.71 an hour, billed while stopped |
| Google Cloud, Sydney and Melbourne | No L4: T4, P4 and H100 machines only |

Sources, checked on 1 November 2026: Runpod's API, the [AWS Price List](https://aws.amazon.com/ec2/pricing/on-demand/), the [Azure Retail Prices API](https://prices.azure.com/api/retail/prices), Vultr's plan API, [Google Cloud GPU regions](https://cloud.google.com/compute/docs/gpus/gpu-regions-zones).

None of Runpod's Asia-Pacific data centers had an RTX 4090 when I looked, and Japan had only H100 and H200. I run my pod in Romania with about 200 ms of keyboard lag from Malaysia, which the GPU work doesn't notice. For a client whose data must stay in Australia, it's AWS in Sydney.

## The quota

Every AWS account starts at 0 vCPUs of On-Demand and Spot quota for G and P instances, in every region, and every SageMaker GPU quota at 0 ([EC2 instance quotas](https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-instance-quotas.html), [SageMaker AI quotas](https://docs.aws.amazon.com/general/latest/gr/sagemaker.html)). The quota counts vCPUs: a g6.xlarge needs 4, a g6e.2xlarge 8. AWS publishes no approval time; reports range from a day to more than a week. Mine was at 0 in both regions I checked.

Runpod has nothing to request. Restarting a stopped machine can fail on both: Runpod refuses when someone has taken the pod's GPU, and AWS when the zone has no capacity. Only an AWS Capacity Reservation guarantees it, billed around the clock.

## Where AWS is better

- **The client's data stays in the client's account:** S3, IAM, a private VPC, no egress, and the audit trail the client already has.
- **Australia:** Sydney rents L4s and H100s by the hour; Runpod's Australian data center has L40S only, without network volumes.
- **Compliance and commitments:** IRAP PROTECTED and HIPAA eligibility for both EC2 and SageMaker, and uptime commitments of 99.99% (EC2) and 99.95% (SageMaker real-time endpoints). Runpod's terms promise no uptime.
- **A full VM:** EC2 runs its own Docker, systemd and UDP; a Runpod pod is a container.
- **Steady inference:** Savings Plans, autoscaling and endpoints that scale to zero.
- **Data-center cards:** the RTX 4090 is a GeForce card, and NVIDIA's [GeForce licence](https://www.nvidia.com/en-us/drivers/geforce-license/) says its software "is not licensed for datacenter deployment". If procurement raises it, use a professional or data-center card, on either platform.

## Related

- [A GPU for models and experiments](https://cloudlesslabs.com/stack/use-cases/gpu/index.md): the use case this guide works through
- [Runpod](https://cloudlesslabs.com/stack/runpod/index.md): the full entry (verdict, pricing, gotchas)
- [SageMaker](https://cloudlesslabs.com/stack/aws-sagemaker/index.md): the full entry (verdict, pricing, gotchas)
- [EC2](https://cloudlesslabs.com/stack/aws-ec2/index.md): the full entry (verdict, pricing, gotchas)
- [Hostinger VPS](https://cloudlesslabs.com/stack/hostinger-vps/index.md): the full entry (verdict, pricing, gotchas)
- [Pay for the work, or pay to be ready?](https://cloudlesslabs.com/concepts/pay-to-be-ready/index.md): the concept behind it
- [Where may the data go?](https://cloudlesslabs.com/concepts/data-residency/index.md): the concept behind it
- [Every decision guide, the choices between tools first](https://cloudlesslabs.com/stack/guides/index.md)
- [Map of every Markdown file on cloudlesslabs.com, with what each one answers](https://ask.cloudlesslabs.com)
