Pricing
Simple and usage-based. You pay for what a run produces — the capacity you add to a model and the training you run on it. No instances to size, no commitments. Estimate any run before you launch it.
Training runs
A training run has up to three line items:
| Line item | Charges for | Rate |
|---|---|---|
| Growth | Parameters added to the model | $25 / 1B params added |
| Training | Training tokens processed (tiered by model size) | $3–$100 / 1M tokens |
| Minimum | Per-run floor, applied only when the above fall below it | $2 / run |
Training token tiers
The per-token rate is set by the size of the model you produce:
| Model size | Price / 1M training tokens |
|---|---|
| ≤ 3B | $3 |
| 3 – 8B | $6 |
| 8 – 34B | $12 |
| 34 – 80B | $25 |
| 80 – 200B | $45 |
| 200B – 1T | $100 |
What's a "training token"?
Training tokens = total_steps × sequence_length — the tokens your model processes during training (your dataset, cycled across all steps). It's the same definition cloud fine-tuning uses (dataset_tokens × epochs).
Contraction runs
Contraction shrinks an existing model. It's a flat price per run, set by the size of the model you contract:
| Model size | Price / run |
|---|---|
| ≤ 3B | $9 |
| 3 – 8B | $20 |
| 8 – 34B | $50 |
| 34 – 80B | $150 |
| 80 – 200B | $350 |
| 200B – 1T | $800 |
Examples
A training run's price has two independent parts — how much you grow the model (parameters added) and how much you train it (tokens). They're separate line items:
| Run | Growth | Training | Total |
|---|---|---|---|
| Grow 1.5B → 2.36B (+0.82B), 1 turn | +0.82B × $25 = $20 | 1.5M tok × $3 = $5 | $25 |
| Same, 2 turns (recommended) | +0.82B × $25 = $20 | 3M tok × $3 = $9 | $30 |
| Grow 70B → 90B (+20B), 1 turn | +20B × $25 = $500 | 1.5M tok × $45 = $68 | $568 |
| Contract a 70B model | — | — | $150 (flat) |
Where the token count comes from
Training tokens are not related to the parameter growth. They're how much data the model trains on, driven by turns — each turn is a full pass (~1.5M tokens). So 2 turns ≈ 2× the training line; the growth fee is unchanged. You set how big to grow and how many turns to train separately.
Estimate before you launch
Get an exact quote for any run with POST /pricing/estimate — the same call the console uses on the New Run screen:
bash
curl https://console.axomlabs.ai/api/pricing/estimate \
-H "Authorization: Bearer $AXOM_KEY" \
-H "Content-Type: application/json" \
-d '{ "type": "train", "params_before": 70000000000,
"params_after": 90000000000, "train_steps": 5000 }'json
{ "total_usd": 557.6, "unit": "1M-tokens", "qty": 1.28,
"line_items": [
{ "label": "training", "qty": 1280000, "unit": "1M-tokens", "rate": 45.0, "amount": 57.6 },
{ "label": "growth", "qty": 20000000000, "unit": "params", "rate": 25.0, "amount": 500.0 } ] }Billing
Every finished run produces one itemized charge, readable via GET /jobs/{id}/result (cost_usd) and aggregated in GET /usage. The console shows it on each run and on your usage dashboard.
Enterprise & volume
Models above 200B, committed volume, and private deployments are custom — talk to us.