sft), GRPO (grpo), and DPO (dpo) — are created through the same POST /felix/training-jobs endpoint and selected with the training_algorithm parameter.
Choose an algorithm
Omitting
training_algorithm is equivalent to sft, so existing requests keep working unchanged.
SFT
You have example outputs you want the model to imitate (conversations, instruction-response pairs). The default and simplest path.
GRPO
“Good” is a programmatic check — exact answers, numeric correctness, JSON validity, a rubric. The model explores and is reinforced toward higher reward.
DPO
You have preference pairs — a better and a worse response per prompt — rather than a single gold answer.
All three algorithms are 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 table below shows a selection of popular options. Context window size matters if your training examples or inference prompts are long.
GET /base-models to see the full current catalog, filtered to models that support training:Choosing a model size: Smaller models (1B–8B) train and respond faster and cost less. Larger models (30B–70B) handle complex reasoning and longer inputs more reliably. Start with
Qwen/Qwen3-8B or meta-llama/Llama-3.1-8B-Instruct for most tasks and scale up if needed.Not every model supports every algorithm — see Supported models below for the SFT/GRPO/DPO matrix.2
Prepare your training data
The dataset shape depends on the algorithm you picked. Pick the matching tab.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 training job with Pioneer routes your job automatically to the best available provider. The response includes your job ID:
POST /felix/training-jobs. The training_algorithm parameter selects SFT, GRPO, or DPO.rl_config is required when training_algorithm is grpo or dpo and must be omitted for sft. Every key inside rl_config is optional and falls back to a TRL-aligned server default except reward_type, which is required for GRPO.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 and the RL algorithms alike.GRPO reward functions
GRPO (Group Relative Policy Optimization) samples multiple completions per prompt and reinforces the ones that score highest against a reward function. Setrl_config.reward_type to one of:
When
reward_type is llm_as_judge, Pioneer mints and manages the judge credential for you — you never supply an API key. Optional judge knobs include llm_judge_model, llm_judge_rubric, and llm_judge_score_scale.Supported models
The canonical, live list is alwaysGET /base-models?supports_training=true. As of this writing:
GRPO and DPO are available on the subset of models that have been verified end-to-end for reinforcement learning. Every trainable decoder supports SFT. Models marked
— for RL accept sft only; submitting grpo/dpo for them returns a 422.fastino/gliner2-base-v1, fastino/gliner2-large-v1, fastino/gliner2-multi-v1, fastino/gliner2-multi-large-v1) are also trainable through the same endpoint — see the encoder fine-tuning guides for NER, classification, and structured extraction.
Serverless inference for base models
If you want to run inference on a base model without fine-tuning, several models are available as serverless endpoints with no startup latency:
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