Skip to content

Config file

config.yaml controls the pipeline through five sections: base, tuning, evaluation, synthgen and trace_processing. Each one covers a different stage.

You don’t need most of it to start. base.task, base.student_model_name and base.teacher_model_name are enough for a first run, and every other field has a default. Each stage page introduces the section it cares about at the point where it matters.

The config is YAML, in a file named config.yaml. config.yml is accepted too. The CLI reads it out of your data directory, and the REST API stages it as config_yaml.

base:
  task: question-answering
  student_model_name: Llama-3.2-3B-Instruct

Overrides sent inline over the REST API carry this same structure in the request body. See Using the REST API.

base:
  # General parameters (task is required)
  task: classification

tuning:
  # Fine-tuning parameters
  num_train_epochs: 4

evaluation:
  # Evaluation parameters
  num_few_shot_examples: 1

synthgen:
  # Synthetic data generation parameters
  generation_target: 10000

trace_processing:
  # Trace processing parameters
  relabel: true

Parameters for the task as a whole.

Parameter Type Default Description
task string required Type of NLP task to be solved. See supported task types below.
student_model_name string Llama-3.2-1B-Instruct Base model to use for the student model. This is the model we fine-tune for your use-case. Must be one of the supported student models.
teacher_model_name string openai.gpt-oss-120b Teacher model used to generate synthetic data and from which we distil knowledge. Must be one of the supported teacher models.
random_seed integer | null 123 Random seed used for reproducible random sampling.
llm_num_parallel_requests integer 4 Maximum number of LLM requests to send in parallel across the teacher, synthgen, and judge pipelines. Set to 1 to disable parallelism.
visual_task boolean false Inputs carry images. QA tasks only, and every model involved must be vision-capable.
Task Value Description
Question answering question-answering Extract or generate answers from text based on queries
Classification classification Assign text to categories from a fixed set
Tool calling tool-calling-closed-book Select and invoke functions based on user requests
Multi-turn tool calling multi-turn-tool-calling-closed-book Handle multi-step conversations with function calls
Open book QA (RAG) question-answering-open-book Answer questions using provided context passages
Closed book QA question-answering-closed-book Answer questions using knowledge learned during training

The catalogue of student and teacher models, how to choose between them, and the per-model compatibility rules are all on Supported models. Only values from that catalogue work for student_model_name and teacher_model_name.

Parameters controlling how the student model is fine-tuned. See Model training.

Parameter Type Default Description
learning_rate float 5e-5 The initial learning rate for AdamW optimizer.
learning_rate_scheduler string linear The scheduler type to use. Options: cosine, linear, constant.
weight_decay float 0.0 Weight decay applied to all layers except bias and LayerNorm weights in AdamW optimizer.
warmup_ratio float 0.05 Ratio of total training steps used for linear warmup from 0 to learning_rate.
bf16 boolean true Whether to use bf16 16-bit (mixed) precision training instead of 32-bit training.
use_lora boolean true Whether to use LoRA for student training.
lora_r integer 64 LoRA attention dimension (rank). Only used if use_lora is true.
lora_alpha_multiplier integer 1 Alpha parameter for LoRA scaling is lora_r * lora_alpha_multiplier. Only used if use_lora is true.
per_device_train_batch_size integer 1 Batch size per GPU/device for training.
per_device_eval_batch_size integer 1 Batch size per GPU/device for evaluation.
num_train_epochs integer 4 Total number of training epochs.
train_eval_split float 0.2 Fraction of training data used for evaluation. Must be between 0 and 1 (exclusive).
gradient_accumulation_steps integer 1 Number of update steps to accumulate gradients before performing a backward/update pass. Effectively multiplies the batch size by this factor without increasing memory usage.
num_few_shot_examples_student integer 0 Number of few-shot examples when running student evaluation and tuning. If above 0, at least one example per class is used for classification tasks.
memory_optimized_training boolean false Enable activation offloading and gradient checkpointing to reduce GPU memory usage at the cost of significantly slower training. Only enable this if training runs out of GPU memory.
use_qlora boolean false Load the base model in 4-bit NF4 (QLoRA) during fine-tuning, then attach LoRA adapters in higher precision. Reduces base-model VRAM by roughly 3x at the cost of slightly slower training. Only takes effect when use_lora is true. Requires bitsandbytes (Linux only).
enable_trainer_internal_eval boolean false Run per-epoch validation during training. Final metrics come from the post-training suite either way.

RLVR (Reinforcement Learning with Verifiable Rewards)

Section titled “RLVR (Reinforcement Learning with Verifiable Rewards)”

RLVR is an optional reinforcement learning stage that runs after SFT fine-tuning, using reward signals from an LLM judge to improve the model further. Set rlvr_dataset_size above 0 to enable it.

Parameter Type Default Description
rlvr_dataset_size float 0.0 Proportion of the dataset to use for the RLVR split. Must be between 0.0 and 1.0. Default 0.0 means RLVR is disabled.
rlvr_llm_as_a_judge_model_name string inherits base.teacher_model_name Model used to power the LLM-as-a-judge for RLVR reward signals.
rlvr_per_device_batch_size integer 6 Batch size per GPU/device for RLVR training and evaluation. Must be a multiple of rlvr_num_generations.
rlvr_num_generations integer 6 Number of generations per prompt during RLVR training.
rlvr_num_train_epochs integer 1 Number of training epochs for RLVR fine-tuning.

Parameters used in teacher evaluation. See Teacher evaluation.

Parameter Type Default Description
num_few_shot_examples integer 1 Number of few-shot examples when running teacher evaluation. If above 0, at least one example per class is used for classification tasks.
llm_as_a_judge_model_name string inherits base.teacher_model_name Model used to power the LLM-as-a-judge evaluation.
expand_tool_calling_turns boolean true If true, each line in multi-turn tool calling test files is expanded into multiple evaluation lines, each ending at a tool call.

Parameters controlling synthetic data generation. See Synthetic data generation.

Parameter Type Default Description
generation_target integer 10000 Target number of synthetic examples to generate. For Closed-Book QA, this is calculated as len(unstructured_data) * generation_per_unstructured_context.
generation_in_single_call integer 4 Number of examples to generate per teacher/LLM invocation.
generation_iteration_size integer 128 Batch size for the generate-validate cycle.
generation_per_unstructured_context integer | null null Examples to generate per unstructured context. Only used with question-answering-closed-book task. Overwrites generation_target when set.
num_positive_exemplars_per_generation integer 2 Number of in-context examples for the class/task being generated.
num_negative_exemplars_per_generation integer 2 Number of in-context examples for classes not being generated. Only used for classification tasks.
num_unlabelled_exemplars_per_generation integer 1 Number of unlabelled examples provided during each teacher invocation.
clean_training_targets boolean false Final teacher pass that minimally repairs corrupted or truncated training targets. Multi-turn data is expanded into per-turn examples first.
validation_max_total_length integer 30000 Maximum total length (input + output) of generated examples in characters.
validation_similarity_threshold float 0.95 Similarity threshold for deduplication. Generated data with similarity above this threshold to seed data are removed.
teacher_temperature float 0.7 Temperature for teacher output. Controls balance between predictability and creativity. Must be between 0.0 and 1.0.
teacher_max_tokens integer 32000 Maximum number of tokens in the generated response. Kept well below typical model context limits so the reserved output budget doesn’t crowd out large prompts, multi-image ones in particular.
match_generated_distribution_to_seed boolean false Match generated data class distribution to seed data. Only used for classification tasks.
num_distractor_context_blocks integer 0 Number of distractor context blocks per example. Setting above zero enables RAFT training.
output_is_json boolean false Only generate synthetic data with valid JSON outputs. Only relevant for QA tasks.
basic_mutators_to_use list[string] ["complexity"] List of basic mutators to use for data generation. Supported options: complexity, length, specificity.
mutation_topics list[list[string]] | list[string] [] Selection of topics to sample from to guide the generation process.

Parameters for trace processing, which turns production traces into training and test data. See Trace processing.

Parameter Type Default Description
relabel boolean true If true, use a committee of models to relabel trace examples. If false, use the original labels from traces.
relevance_filtering boolean false If true, score each trace with an LLM and drop those below the relevance / coherence thresholds. If false, relevance filtering is skipped entirely and every seed trace flows straight to the next step.
relevance_filtering_batch_size integer 32 Number of examples scored per batch during relevance filtering.
min_relevance_score integer 4 Minimum relevance score (1-5) for a trace to pass relevance filtering.
min_coherence_score integer 3 Minimum coherence score (1-5) for a trace to pass coherence filtering. Lower values allow more corrupted traces through for committee repair.
num_traces_as_training_base integer 200 Number of traces to use as the seed for generating training examples. Unused traces beyond this count are used as unstructured data.
num_traces_as_testing_base integer 200 Number of traces to use as the seed for generating testing examples. Unused traces beyond this count are used as unstructured data. Ignored if a test set is provided.
evaluate_original_model boolean true Score the model that produced the traces on the generated test split. This is the baseline your student is compared against, and this stage’s judge cost.
committee_max_input_length integer 250000 Characters. Traces whose projected committee-aggregator input exceeds this skip the committee and get a direct teacher edit.
min_generated_examples integer 1 Minimum number of examples that trace processing must produce. Raises an error if fewer are generated, to prevent training with too few examples.
max_unstructured integer 10000 Maximum number of unstructured data examples to include.
observation_format string openai_messages Format of trace observations in traces.jsonl. Options: openai_messages (objects with a messages array of chat completion messages), openai_messages_with_images (OpenAI messages that can include images), unstructured_with_openai_messages (unstructured data with OpenAI messages).
remove_system_prompt_from_traces boolean true If true, strip leading system messages from traces (before unstructured export) and from processed examples. Defaults to true because the system prompt is typically captured by the job description, and keeping it in the conversation breaks the single-turn [user, assistant] shape expected at the training boundary.
compress_job_description boolean false If true, compress the job description using the teacher model before relevance filtering. Useful when the task description is very long and overwhelms the filtering LLM.
teacher_model_name string inherits base.teacher_model_name Teacher model used for relevance filtering and picking the best relabelled answer from the committee.
relabelling_committee_models list[string] [] If the list is non-empty, models in the list are used to produce candidate relabels. Each model generates an output for every example and the trace processing teacher aggregates them into the final relabel. Only used when relabel is true.
base:
  task: question-answering
  student_model_name: Llama-3.2-3B-Instruct
  teacher_model_name: openai.gpt-oss-120b
base:
  task: question-answering-open-book
  student_model_name: Qwen3-1.7B
  teacher_model_name: openai.gpt-oss-120b
  random_seed: 42

tuning:
  learning_rate: 1e-4
  learning_rate_scheduler: cosine
  use_lora: true
  lora_r: 32
  num_train_epochs: 3
  train_eval_split: 0.15

evaluation:
  num_few_shot_examples: 2

synthgen:
  generation_target: 5000
  generation_in_single_call: 8
  teacher_temperature: 0.6
  validation_similarity_threshold: 0.9

trace_processing:
  relabel: true
  num_traces_as_training_base: 5000
  num_traces_as_testing_base: 100

Which models support tool calling, and which teachers need a constrained temperature, are on Task compatibility.

These four carry defaults and appear in every config the platform returns, but they do nothing:

  • evaluation.batch_size
  • synthgen.validation_max_answer_length
  • synthgen.parallel_llm_calls
  • tuning.awq_quantize_tuned_model

Leave them untouched in a config you override, and don’t add them to one you author.

An override replaces this file whole rather than merging into it, so read the parent’s config back before you edit one field. See How the platform works.