Prices and quotes
How Portal prices offers, where the prices come from, and what a quote leaves out.
Warnings and limits
- Your providers bill your own accounts for the compute. Portal's costs are estimates from recorded rates and running times, not invoices.
- A quote leaves out disks, public IPv4 addresses, data transfer, taxes, credits and discounts.
- A quote reserves nothing: the price and the capacity can change before the machine starts.
- Spot prices change. Portal prices a spot machine at the rate it recorded when the machine started.
portal pricesprints 20 quotes;--jsongives all of them.- AWS EC2, Azure VM and Google Cloud VM quotes read your quotas and list an offer your quota cannot fit as unavailable, with the quota named. See Quotas and capacity.
- Modal quotes stop at 8 GPUs, and Modal's L4 pool often has no capacity for minutes; T4, A10 and A10G start at once as a rule.
Compare quotes
portal prices --gpu T4
portal prices --cpus 4 --mem 8 --no-spot
portal prices --gpu any --providers aws,gcpEach quote shows the connection, the machine, its GPU, CPUs and memory, the region, spot or on-demand, the price per hour in US dollars, and what is known about its capacity. Quotes are ranked by price, with a machine's boot time counted in, and spot wins a tie unless you asked for none. portal run without --on prints the same quotes for your script.
Where prices come from
| Provider | Source | Refreshed |
|---|---|---|
| AWS EC2 spot | the cheapest zone's price in EC2's spot price history | every 5 minutes |
| AWS EC2 on-demand | AWS's price list; the Pricing API outside us-east-1 | daily |
| AWS Fargate | the Pricing API; Fargate Spot from AWS's published rates | daily |
| Google Cloud | a dated price table, refreshed from the Cloud Billing Catalog | at most daily |
| Azure VMs | Azure's Retail Prices API | hourly |
| Azure Container Apps | Azure's Retail Prices API | daily |
| Modal | Modal's published prices; sandboxes at Modal's sandbox rate | with Portal's releases |
| Lambda | Lambda's instance types API | every 5 minutes |
| Your own machine | your own estimate, $0 if none | when you set it |
How a job's cost is estimated
A job's cost is every machine it used, from when it started until its provider stopped billing it (on AWS, when EC2 accepts the terminate: it does not bill an instance that is shutting down; elsewhere, when the machine is gone), at the rate recorded for it, plus the data transfer of its moves. Providers' minimum billing is counted: 60 s at least on AWS, Fargate, Google Cloud and Lambda, then whole seconds on AWS, Fargate and Google Cloud and whole minutes on Lambda.
For AWS, Portal reads Cost Explorer once a day to compare its estimates with your bill.
In the console
Usage shows spend per day and per connection, with the caps and the machines running now. A run's page shows its cost machine by machine. All of it is labelled as estimates.