Portaldocs
Money

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 prices prints 20 quotes; --json gives 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,gcp

Each 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

ProviderSourceRefreshed
AWS EC2 spotthe cheapest zone's price in EC2's spot price historyevery 5 minutes
AWS EC2 on-demandAWS's price list; the Pricing API outside us-east-1daily
AWS Fargatethe Pricing API; Fargate Spot from AWS's published ratesdaily
Google Clouda dated price table, refreshed from the Cloud Billing Catalogat most daily
Azure VMsAzure's Retail Prices APIhourly
Azure Container AppsAzure's Retail Prices APIdaily
ModalModal's published prices; sandboxes at Modal's sandbox ratewith Portal's releases
LambdaLambda's instance types APIevery 5 minutes
Your own machineyour own estimate, $0 if nonewhen 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.

On this page