Modal review: serverless GPUs, and when a team needs them

Modal is serverless compute with GPUs attached. You decorate a Python function, Modal builds a container, runs it on an A100 or a B300, and bills you per second of execution. There is no model catalog and no token price, which makes it the wrong tool for "give me a chat endpoint" and the right one for almost everything else GPU-shaped.

By the Continuum team. We build a workbench that runs Claude Code, Codex, and their peers, so the model rates quoted here are the ones our own cost analytics ship with.

The short version

Modal sells GPU-attached serverless containers billed per second, from $0.000164/sec on a T4 to $0.001972/sec on a B300. You bring the model and the code; Modal handles container build, scheduling, autoscaling to zero, and concurrency. Container boot is about one second, and memory snapshotting reduces cold start further. The free Starter plan renews $30 of credits every month, which is the most generous no-commitment allowance in this category. It is not a per-token API and does not compete with Fireworks or Together on that axis.

What you need to know
  • Modal bills per second of compute, not per token. There is no model catalog.
  • Requesting a GPU is one decorator argument: @app.function(gpu="H100").
  • Up to 8 GPUs per container and 2,304 GB of GPU RAM on newer types.
  • Container boot is about one second; your model load is the real cold start.
  • Free Starter plan renews $30 of credits monthly. Team is $250/month and includes $100.
  • Right for fine-tunes, batch jobs, custom models, and non-LLM GPU work. Wrong for a plain chat endpoint.

What Modal actually is

The single most useful sentence about Modal: it is not an inference provider in the same sense as Fireworks or Together. Those companies sell you a model. Modal sells you a container with a GPU in it and a very good way to get your code into that container.

Modal against the token-priced providers.
Token API (Fireworks, Together, Baseten)Modal
You supplyA promptThe model, the server, and the code
Billing unitPer million tokensPer second of CPU, GPU, and memory
Idle costZeroZero (containers scale to zero)
Time to first requestMinutesAn afternoon, if the model is not standard
CeilingThe provider's catalogAnything you can containerize
Who is on callThe providerYou, for the model server

The Python-native workflow is the actual product. You write an ordinary function, add a decorator saying what hardware and image it needs, and Modal builds and schedules it. There is no Dockerfile to write for the common cases and no Kubernetes to configure for any case.

The whole interface, essentially.
import modal

app = modal.App("embeddings")

@app.function(gpu="L4")
def embed(batch: list[str]) -> list[list[float]]:
    from sentence_transformers import SentenceTransformer
    model = SentenceTransformer("BAAI/bge-large-en-v1.5")
    return model.encode(batch).tolist()

# eight B300s for a training job
@app.function(gpu="B300:8")
def train():
    ...

# or express a fallback preference
@app.function(gpu=["H100", "A100-40GB:2"])
def run_on_80gb():
    ...

Available types run T4, L4, A10, L40S, A100 in 40GB and 80GB, RTX PRO 6000, H100, H200, B200, and B300. Multi-GPU is the :n suffix, up to 8 GPUs and 2,304 GB of GPU RAM on newer types; A10 instances cap at 4 GPUs and 96 GB.

Cold starts, honestly

Cold start is the fair criticism of every scale-to-zero platform, and Modal's documented numbers are better than most people assume and worse than the marketing implies.

  • Container boot is about one second. That is Modal's own figure and it is the part Modal controls.
  • Your initialization is the rest. Global-scope code and modal.enter methods run after boot. Loading a 40GB model from object storage is where the seconds actually go.
  • Pre-downloading the weights into the image takes model loading from minutes to seconds for models in the tens of gigabytes, per Modal's own guide.
  • Memory snapshotting captures container memory after warm-up and restores it on the next boot. Modal says this substantially reduces cold start; it does not publish a number, so measure it on your workload.

Practical rule: if requests arrive continuously, keep a warm container and cold start is irrelevant. If they arrive a few times an hour, snapshot and pre-bake weights. If they arrive twice a day, cold start is 20 seconds and nobody cares.

What it costs, in shape

Full rates are on the Modal pricing page. The shape matters more than the digits: you pay for GPU seconds, CPU core seconds, and GiB seconds separately, and only while a container is running.

Representative Modal rates, checked August 2026. The hourly column is our conversion.
ResourcePer secondPer hour (derived)
Nvidia H100 SXM5$0.001097$3.95
Nvidia A100 80GB$0.000694$2.50
Nvidia L4$0.000222$0.80
Nvidia T4$0.000164$0.59
CPU, per physical core$0.0000131$0.047
Memory, per GiB$0.00000222$0.008

That per-second granularity is the entire economic argument. A job that runs for 90 seconds costs 90 seconds. Compare that to a reserved H100 at $3.19 per hour from Together, which costs $2,329 a month whether or not you send it anything. Modal beats a reserved GPU on cost until you are above roughly 80 percent utilization, at which point the reservation wins.

When a coding team actually needs Modal

Most teams building with coding agents do not need Modal, and it is worth saying so plainly. If your entire AI usage is "call Claude or GPT from an agent," Modal solves a problem you do not have. Here is when it starts earning its place.

Modal fit by workload.
WorkloadModal?Why
Calling a frontier model from a coding agentNoUse the lab API. There is no GPU for you to rent.
Serving a standard open modelProbably notA token API is cheaper and zero-ops until very high volume.
Fine-tuning an open modelYesBursty, GPU-heavy, and finished when it is finished. Per-second billing fits exactly.
Embedding a large corpusYesFan out to 50 containers, pay for the minutes, scale back to zero.
Serving a private or heavily modified modelYesNo token API will host your weights.
Non-LLM GPU work (vision, audio, simulation)YesThe token providers do not sell this at all.
Running untrusted generated codeMaybeModal gives you the sandbox primitive. Together and E2B sell it more directly.

Where Modal is the wrong choice

  • You want an endpoint today. A token API is a five-minute job. Modal is an afternoon, and a longer one if you have never packaged a model server.
  • You do not write Python. Modal is Python-first. You can run any container, but the ergonomics that make Modal worth choosing are Python ergonomics.
  • Your load is constant and large. Above roughly 80 percent utilization a reserved GPU is cheaper, and above that a committed contract is cheaper still.
  • You need a low, predictable p99 on sporadic traffic. Scale-to-zero and tight tail latency are in tension. You can pin warm containers, but then you are paying for idle and Modal's pricing advantage disappears.

Questions people ask

What is Modal?

Modal is a serverless compute platform for Python that attaches GPUs to containers and bills per second of execution. You decorate a function with the hardware it needs, and Modal builds the image, schedules the container, autoscales it, and scales it back to zero. It is compute infrastructure, not a model API: there is no catalog of models and no per-token price.

Is Modal an inference provider?

Only in the sense that you can run inference on it. Unlike Fireworks, Together, or Baseten, Modal does not serve you a model behind an endpoint. You supply the weights and the server process, and pay for GPU seconds rather than tokens. That makes it the right tool for custom models, fine-tuning, and batch GPU work, and the wrong tool for getting a standard chat endpoint quickly.

How does Modal compare to RunPod?

Both rent GPU compute rather than tokens. Modal's distinguishing feature is the Python-native programming model: a decorator on a function replaces writing a Dockerfile, configuring an autoscaler, and managing a queue. RunPod is closer to a GPU cloud where you rent instances. Choose Modal for the developer experience and per-second scale-to-zero; choose a GPU cloud when you want long-lived machines you administer.

How bad are Modal cold starts?

Container boot is about one second according to Modal's own documentation. Everything after that is your initialization: loading model weights is where the real time goes. Baking weights into the image takes large-model loading from minutes to seconds, and memory snapshotting reduces it further, though Modal publishes no specific figure for the snapshot improvement.

What GPUs does Modal offer?

T4, L4, A10, L40S, A100 in 40GB and 80GB, RTX PRO 6000, H100, H200, B200, and B300. You request one with gpu="H100" on the function decorator, multiple with a :n suffix such as gpu="B300:8", and a prioritized fallback list with gpu=["H100", "A100-40GB:2"]. Most newer types allow up to 8 GPUs and 2,304 GB of GPU RAM per container; A10 caps at 4 GPUs and 96 GB.

Does Modal have a free tier?

Yes, and it is the most generous no-commitment allowance in this category. The Starter plan costs $0 per month and includes $30 of compute credits every month, renewed, with 10 concurrent GPUs and 100 containers. That is about 50 hours of T4 time or 7.5 hours of H100 time per month at August 2026 rates.

Sources

Every figure above was read from these pages on August 2026. Vendors reprice without notice; if you find a stale number, tell us.

  1. Modal pricing per-second GPU, CPU and memory rates, plan tiers and credits
  2. Modal GPU guide GPU types, decorator syntax, multi-GPU and fallback
  3. Modal cold start guide container boot time, memory snapshots, weight pre-loading
  4. Together AI pricing reserved GPU rates used for the utilization break-even
Try it

Run every agent
from one place.

Continuum drives Claude Code, Codex, and peers under your own subscriptions, with live quota gauges and spend by repo. The app is free. Mac is stable; Windows and Linux desktop are beta.

free app · your subscriptions · local-first