Fine-tuning needs the AWS hub (the per-organization AWS account that also
powers Elastic Container Service). Enabling it is one
click on the Training page and takes a few minutes. Your training bucket,
aireserve-training-<account id>, is created in that account the first
time the page opens.How it works
1
Connect AWS
An organization admin clicks Enable AWS hub on Lab › Training (or
calls
enable_containers over MCP). The account is vended by AI Reserve
inside its AWS Organization; nothing else lives there. The page shows
the lifecycle and updates on its own.2
Add data
Create a dataset folder —
datasets/<name>/ in your bucket — and put
chat-format JSONL in it: one example per line, a messages array
with user and assistant turns, the last turn by the assistant. Drop
files on the page (a presigned S3 upload), or use the AWS CLI with a
12-hour session scoped to that one folder. Then Validate: AI Reserve
pins the file’s S3 version, checks every line, and reports the example
and token counts. Nothing trains until the data checks out.3
Choose a model
Pick a base from the catalog (Llama 3.1 8B, Qwen3 8B, gpt-oss 20B, …),
LoRA adapter or full fine-tune, and how you will use the result:
a dedicated endpoint (per hour) or just the weights. Serverless
per-token serving of trained adapters is not offered yet — no current
backend serves them that way — and arrives with AI Reserve’s own
multi-adapter lane. Training settings have sensible defaults and fold
away; a setting outside the placed backend’s range is clamped and the
change is shown on the quote.
4
Review and start
The quote shows the training price, an estimated duration, the serving
price for the mode you chose, and your wallet balance after. The quote
is signed and valid two minutes. Start reserves the estimate from
your wallet; it is settled when the run succeeds and released if it
fails or is cancelled.
5
Your run
Follow the run live. When it finishes the model card shows where the
weights are (
s3://…/models/<id>/), Download, and Deploy to a
dedicated endpoint. A deployment’s model id is what you send to
/v1/chat/completions.Data format
- One JSON object per line, UTF-8,
.jsonl. - Roles:
system,user,assistant,tool,developer. Content is a string or an array of{type: "text", text}parts. - Every example needs at least one
userand oneassistantturn; the last turn must be the assistant’s (that is what the model learns). - At least 10 examples. A
valid.jsonlbesidetrain.jsonlis used as the validation split automatically.
Uploading with the AWS CLI
The page’s Use the AWS CLI instead fold mints a 12-hour session that can read and write one dataset folder and nothing else. The commands talk to S3 directly; nothing customer-sized passes through AI Reserve.POST /v1/training/datasets/{datasetId}/session
and aireserve training datasets session <id>.
LoRA or full, and what you get
The request shape is identical; only
method differs. A combination that
cannot be placed — full + serverless, a base nobody trains fully, a ceiling
under the estimate — is refused at quote time with what would work, before
any money moves.
API
Every step is a/v1/training call under your organization’s API key with
compute read (quotes, reads) or manage (datasets, starts, deployments)
access. The full reference is in the API reference.
aireserve training bases | datasets | jobs | models | deployments,
and every step is an MCP operation (quote_training_run, start_training_run,
…) for a coding agent on the AI Reserve connection.
Pricing
- Training is priced per trained token (the validated token count × epochs) at the backend’s list rate, with a surcharge for full fine-tuning and a $1 minimum. The quote is the price: it is reserved from your wallet when you start, settled when the run succeeds, and released if it fails or is cancelled. A run that fails costs nothing.
- Dedicated endpoints bill every hour they are up, from the first hour, at the rate the quote showed; stopping the deployment ends it.
- Storage in your bucket is AWS’s S3 price, reconciled from the daily AWS cost check rather than metered by the hour; the bucket shows on My Resources › AWS.
When something goes wrong
Every refusal and failure is one plain sentence with the fix, never a provider’s raw text. Before any money moves, the quote refuses a combination that cannot be placed (409 no_placement) and says what would
work; a hyperparameter outside the placed backend’s range is clamped and
the change is listed on the quote (adjustments), never applied silently.
A run that fails after starting is released from your wallet and the run
shows one of:
Limits and notes
- Dataset files up to a few GB each over the browser; larger sets go in with the CLI. Per-backend dataset limits are checked at quote time.
- Weights above 1 GB (full checkpoints) stay with the training backend for now and serve from there; the model card says so.
- Managed backends receive a copy of your pinned dataset file to train on and it is deleted when the run ends; the bucket is the system of record.
- Objectives: supervised fine-tuning (SFT). Preference and reinforcement objectives are not offered yet.
- Serving: dedicated endpoints and download. Serverless per-token serving
of adapters is not offered until AI Reserve’s own multi-adapter lane
ships; the request shape already carries
serving: "serverless"for it.