POST /felix/training-jobs endpoint.
Training method
SFT trains the model to imitate the assistant turns in your examples. Supply chat-formatmessages with the user instruction and desired assistant response.
Decoder SFT is LoRA-based. A completed job produces a low-rank adapter
that is hot-swapped onto the shared base model at serve time and exposed
behind the same inference endpoints as base models — reference the training
job’s
id as the model_id at inference time. training_type defaults to
"lora" and is the only supported value for decoder LLMs; "full" is
reserved for GLiNER encoder models.End-to-end walkthrough
1
Choose a decoder base model
Use The supported decoder targets are:
GET /base-models to see the full current catalog, filtered to models that support training:Use the general Lightning target unless your data is specifically finance or
healthcare. These targets have an 8K qualified context window, so split or
truncate longer examples before training.All listed decoder targets support LoRA SFT.
2
Prepare your training data
Format each example as a chat conversation with an assistant response:See the Synthetic Data guide for the full set of
/generate options, including auto-labelling existing text. Once generated or uploaded, wait until the dataset status is ready before starting training.3
Start a training job
Submit your SFT job with Pioneer routes your job automatically to the best available provider. The response includes your job ID:
POST /felix/training-jobs:4
Poll until training is complete
Check job status by polling Status transitions:
GET /felix/training-jobs/:id.requested → running → complete → deployed (or failed / stopped). The terminal success state is deployed, reached automatically once the adapter is live behind the inference endpoints.You can also stream training logs while the job is running:5
Run inference on your fine-tuned model
Once the job status is OpenAI-compatible endpoint — drop-in replacement for the OpenAI SDK:Anthropic-compatible endpoint:Streaming is supported on all three interfaces.
deployed, use your job ID as the model_id (or model) on any of the three inference interfaces.Pioneer native API — use "task": "generate" for decoder models:Downloading your trained model weights is available on the Pro plan and above. Use
GET /felix/training-jobs/:id/download to retrieve the weights once training is complete.LoRA hyperparameters
LoRA capacity and the core optimization settings are configurable; the defaults are sensible starting points for SFT.Supported models
The only decoder training targets are:
GLiNER2 Base, Large, Multi, and Multi Large encoder targets are also supported
through the same endpoint. See the encoder
fine-tuning guides for NER,
classification, and
structured extraction.
Use
GET /base-models?supports_training=true immediately before submitting a
job. It is the live source of truth for the training targets and algorithms
available to your workspace.
Serverless inference for base models
If you want to run inference on a base model without fine-tuning, use one of the supported inference families:
Use
GET /base-models?task_type=decoder&supports_inference=true to see the current serverless catalog.
Next steps
- Synthetic Data — generate training data without manual annotation
- Adaptive Inference — automatically retrain on live production data
- Agent Skills — let an AI coding agent manage training and inference for you
- Training Jobs API — every endpoint, parameter, and response field