Skip to main content
Fine-tuning in Pioneer adapts a base model to your specific task and domain using your labeled dataset. You submit a training job through the API, Pioneer handles the compute, and you get back a trained model you can call for inference or download. The whole process is asynchronous — you start the job, then poll until it finishes. Pioneer supports three post-training algorithms, selected with the training_algorithm parameter: supervised fine-tuning (sft, the default) and the reinforcement-learning methods GRPO (grpo) and DPO (dpo). See the LLM fine-tuning guide for when to use each and how to format datasets.

Training job lifecycle

Every training job moves through a fixed sequence of states:
1

requested

Your job has been accepted and is queued for execution. Pioneer is allocating compute.
2

running

Training is actively executing. You can stream logs to monitor progress.
3

complete

Training finished successfully. Metrics (F1, precision, recall) are available on the job record, and checkpoints are ready to download.
A job may also end in failed (an error occurred during training) or stopped (you manually cancelled it with POST /felix/training-jobs/:id/stop).

Key parameters

base_model is required. Omitting it returns a 422 validation error. The value must be a model ID from GET /base-models or a checkpoint UUID — not a free-form string.

Starting a training job

The response returns immediately with a job ID and initial status:
Save the 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 until status is complete or failed:
When training completes, the response includes evaluation metrics measured on your dataset:
To stream logs while the job is running:

Stopping a job

If you need to cancel a running job:
The job status changes to stopped. Partial checkpoints saved before the stop may still be available.

Checkpoints and downloading weights

Pioneer saves checkpoints during training. You can list them at any point after the job starts:
To download the final trained weights:
You can also use a checkpoint UUID as the base_model value in a new training job to continue training from that checkpoint.

Training endpoints summary