
Modal
4.6
Modal runs ordinary Python functions as serverless workloads, including on GPUs, billed by the second with no charge while idle. It targets the gap between a script that works locally and something that runs reliably on demand without managing servers.
- Commercial use OK
- Free tier

- Pricing
- 従量課金
- Free tier
- Free tier
- Commercial use
- Permitted
- Japanese UI
- Not confirmed
- Enterprise contract
- Not confirmed
What it is good for
- GPU workloads that run in bursts rather than continuously
- Batch jobs and scheduled processing in Python
- Serving a model without operating inference infrastructure
- Teams with Python skills and no appetite for Kubernetes
Strengths and trade-offs
Strengths
- Python functions deploy as-is, with decorators rather than config
- Per-second GPU billing with nothing charged while idle
- Scales to zero, so experiments cost what they use
- Container image defined in Python alongside the code
Trade-offs
- Cold starts matter for latency-sensitive work
- Python only
- Sustained high utilisation is cheaper on reserved hardware
Editors' review
GPUs that cost nothing when nobody is using them
The awkward shape of ML work is bursty: nothing for hours, then an expensive job. Reserved GPUs match that badly, and Kubernetes is a project of its own. Modal fits by scaling to zero and billing by the second.
Defining the container image in Python next to the function removes the usual gap between what runs locally and what runs in production — the most common source of deployment surprises.
Cold starts are the trade. For a batch job, irrelevant; for an interactive endpoint, the thing to measure first. And at sustained high utilisation the arithmetic turns back toward owning hardware.
Verdict
Excellent for bursty GPU and batch work in Python. Measure cold starts before putting it behind a user.
Compiled from official documentation and public sources, with our own editorial judgement. We do not publish figures we cannot source.