sft) for all new training jobs. See the LLM fine-tuning guide for dataset formatting and decoder training examples.
Training job lifecycle
A training job’sstatus field moves through several states. The main path is:
1
requested
Your job has been accepted and is queued for execution. Pioneer is allocating compute.
2
running
Training is actively executing on the provider.
3
complete
GPU training finished successfully. Loss metrics are available on the job record (see Polling status and reading metrics), and checkpoints are ready to download or deploy.
4
normalizing / artifact_ready
Intermediate post-training steps — Pioneer is normalizing and packaging the trained artifact. You’ll typically only see these transiently between
complete and deployed.5
deployed
The trained adapter is live on an inference provider and ready to serve requests via
model_id.errored (an error occurred during training), stopped (you gracefully halted it with POST /felix/training-jobs/:id/stop — checkpoints are preserved), terminated (you called POST /felix/training-jobs/:id/terminate, which stops the job and permanently deletes its checkpoints — irreversible), or paused.
Key parameters
base_model is required and must match a model-ID or UUID shape — not a free-form string. Omitting it, or sending a malformed value, returns 422. A well-formed value that doesn’t match any model available for training returns 400 instead.Supported training targets
New training jobs support only the following target families:
Use
GET /base-models?supports_training=true immediately before creating a
job. It is the live source of truth for target availability.
Starting a training job
id and initial status:
id — you’ll use it to poll status, retrieve metrics, and run inference against your trained model.
Polling status and reading metrics
Poll the job endpoint untilstatus reaches a terminal value — complete, deployed, errored, stopped, or terminated:
metrics field always includes loss values once training starts, plus F1/precision/recall/accuracy if a separate evaluation has been run against the resulting model:
{id, timestamp, level, message, source}) — it’s a point-in-time fetch, not a live stream. Poll it periodically while the job is running to follow progress.
Stopping or terminating a job
To gracefully halt a running job while preserving its checkpoints:stopped. Checkpoints saved before the stop remain available for deployment or download.
To permanently end a job and delete its checkpoints instead, use /terminate:
Checkpoints and downloading weights
Pioneer saves checkpoints during training. You can list them at any point after the job starts:is_best, is_final, and is_deployable flags. You can deploy any deployable checkpoint — not just the final one — to a live inference endpoint:
403 otherwise):
download_url that expires in 1 hour — fetch that URL separately to get the actual file:
base_model value in a new training job to continue training from that checkpoint.