GPU runners for GitHub Actions
Run GitHub Actions jobs on an NVIDIA GPU in your own AWS or Modal account: the labels, what each GPU costs, and the quota AWS starts you at.
A job that says runs-on: superci-gpu gets a machine with one NVIDIA GPU, in your own AWS or Modal account. The machine is gone when the job ends, so you pay for the GPU only while the job runs.
jobs:
train:
runs-on: superci-gpu
steps:
- uses: actions/checkout@v5
- run: nvidia-smiWhich GPU
superci-gpu asks for any GPU and gets the least costly one, a T4. Name a GPU to choose it:
| Label | GPU | Where |
|---|---|---|
superci-t4 | NVIDIA T4 | AWS, Modal |
superci-l4 | NVIDIA L4 | AWS, Modal |
superci-a10g | NVIDIA A10G | AWS, Modal |
superci-l40s | NVIDIA L40S | AWS, Modal |
superci-a100 | NVIDIA A100, 40 GB | Modal |
superci-h100 | NVIDIA H100 | Modal |
superci-h200 | NVIDIA H200 | Modal |
superci-b200 | NVIDIA B200 | Modal |
Each machine has one GPU. Beside it, an AWS machine has 4 CPUs and 16 GB of memory and a Modal sandbox 2 CPUs and 8 GB, unless the label says more: superci-l4-8cpu-32gb. The other parts of a label work too: superci-gpu-ondemand, superci-gpu-aws, superci-a10g-modal.
GPU machines run Linux on x64. There are none with Windows or on Arm, and Cloudflare has no GPUs, so it is passed by.
What it costs
GitHub’s own GPU runner is one size: 4 cores and a T4, at $0.052 a minute, which is $3.12 an hour. The same GPU in your own account, by the hour:
| GPU | AWS machine | AWS spot | AWS on-demand | Modal, the GPU alone |
|---|---|---|---|---|
| T4 | g4dn.xlarge | $0.27 | $0.53 | $0.59 |
| L4 | g6.xlarge | $0.53 | $0.80 | $0.80 |
| A10G | g5.xlarge | $0.40 | $1.01 | $1.10 |
| L40S | g6e.xlarge | $1.83 | $1.86 | $1.95 |
AWS’s prices are for us-east-1 on 12 October 2026; spot prices move through the day. On AWS the machine’s CPUs and memory are in the price. On Modal they are billed beside the GPU, by the second: a sandbox with 2 CPUs, 8 GB and a T4 comes to about $0.92 an hour.
GitHub’s runner has 28 GB of memory, more than the machines in the table. For one like it, superci-gpu-4cpu-32gb gets a g4dn.2xlarge on AWS (8 CPUs, 32 GB, a T4), at $0.25 an hour on spot and $0.75 on demand that day. The calculator adds up a month of GPU jobs on that size beside GitHub’s bill.
On AWS
- Your account starts with no GPU machines. AWS’s quotas for them (All G and VT Spot Instance Requests and Running On-Demand G and VT instances) are 0 in a new account. A GPU job then fails at once with a message naming the quota to raise. Ask for at least 4 vCPUs of each in Service Quotas.
- What a job finds: Ubuntu 24.04 with NVIDIA’s driver, the CUDA toolkit and the container toolkit, from the public images RunsOn publishes.
- Spot first. GPU machines are spot machines unless the label says
-ondemand. Spot GPUs are scarcer than other machines: when AWS has none,superci-gputries an L4 machine and then an A10G before the job goes to the next provider in your order.
On Modal
- A payment method. Modal gives GPUs only to workspaces with one. Without it the job fails at once, with Modal’s own message.
- What a job finds: a sandbox with GitHub’s runner and the GPU. There is no Docker inside a sandbox, so a job that builds or runs containers belongs on AWS.
- Modal has the larger GPUs (A100, H100, H200, B200), which SuperCI does not start on AWS.
Which one gets the job
A GPU job goes to the first of AWS and Modal in your order that can run it. With AWS first, a T4 job runs on a spot machine when there is one, and on Modal when AWS has none and Modal is next. To keep a job in one place, name it in the label: superci-gpu-aws.