Skip to main content

Required Sections

[job]
[data]
[compute]
[training]
[hyperparameters]
[algorithm]   # optional metadata
[policy]      # optional policy overrides

Field Requirements (from synth_ai/train/configs/sft.py)

  • [job]
    • model (base or fine-tune target)
    • data or data_path (path to training JSONL)
    • Optional: poll_seconds
  • [data]
    • Optional topology block or validation_path
  • [compute]
    • Standard ComputeConfig fields (gpu_type, gpu_count, nodes, topology.reference_placement, etc.)
  • [training]
    • Optional: mode, use_qlora, nested [training.validation] settings, [training.lora]
  • [hyperparameters]
    • n_epochs (default 1)
    • Optional: batch_size, global_batch, per_device_batch, gradient_accumulation_steps, sequence_length, learning_rate, warmup_ratio, train_kind, weight_decay, parallelism.*
  • [algorithm] (optional metadata)
    • When present, ensure method = "sft" and set variety to describe the flavor (fft, qlora, etc.)
  • [policy] (optional)
    • Mirrors RL policy config for hosted inference overrides
  • [tags] (optional metadata)

Sample TOML

[job]
model = "meta-llama/Meta-Llama-3-8B"
data_path = "ft_data/my_dataset.jsonl"

[data]
validation_path = "ft_data/my_dataset_val.jsonl"

[compute]
gpu_type = "A100"
gpu_count = 4

[training]
mode = "sft_offline"
use_qlora = true

[training.validation]
enabled = true
evaluation_strategy = "steps"
eval_steps = 200

[hyperparameters]
n_epochs = 3
batch_size = 16
learning_rate = 2e-4
sequence_length = 2048

[algorithm]
method = "sft"
variety = "qlora"