Skip to main content

Config schema

A config is one YAML with a pipeline block (recipe, name, seed, output_dir, device, stages) and one section per concern. Every section rejects keys it does not know, so a typo is an error, not a silently ignored setting. The tables below come straight from the Pydantic classes; nested keys are written with dots.

data_speech​

KeyTypeDefaultDescription
recipestringrequiredWhich pipeline builds this model; see llmclick recipes
namestringrequired
seedinteger20260920
output_dirstring./output
devicecuda | mps | cpu | null
stageslist[string] | nullStages to run, in the recipe's order; default all
teacherKeyed | nullThe model generators ask; null when the generator asks none (passthrough)
teacher.namestringrequired
seedslist[SeedSpec]required
seeds.kindstringrequiredWhat the seeds are: topic, persona, document, instruction, ...; generators read it
seeds.valueslist[string] | nullInline seed texts
seeds.sourceKeyed | nullA row source (local_jsonl, huggingface, ...)
seeds.source.namestringrequired
seeds.fieldstring | nullWith source: the column that holds the seed text
seeds.limitinteger | null
promptsPromptSettingsrequired
prompts.generatorstringrequiredKey of GENERATORS: passthrough, topic_questions, persona_task, document_qa
prompts.per_seedinteger1Prompts to make from each seed
prompts.paramsobject (extra keys allowed)Generator parameters, e.g. skills for persona_task
prompts.constraintslist[string]Verifiable constraints; one is appended to every prompt
prompts.max_tokensinteger512
prompts.temperaturenumber1.0
voiceVoiceSettingsrequired
voice.modelHubFilerequiredA Piper voice (.onnx); its .onnx.json is taken from beside it
voice.model.namestringrequiredHub repository ID, or a local file or directory
voice.model.revisionstring | null40-character commit; with file, for a Hub repository
voice.model.filestring | nullPath of the file inside the Hub repository
voice.samplesinteger1Recordings per text; Piper's noise makes each one different
voice.speakerslist[integer] | integer | nullSpeakers of a multi-speaker voice, by id, or n for ids 0 to n-1; every text is read by each of them
voice.length_scalenumber | nullAbove 1 speaks slower; null: the voice's own
voice.noise_scalenumber | nullnull: the voice's own
voice.noise_w_scalenumber | nullnull: the voice's own
verifySpeechVerifySettings
verify.min_secondsnumber0.5
verify.max_secondsnumber15.0Piper trains on short clips; Whisper hears 30 s at most
verify.max_clippednumber0.001Share of samples at full scale
verify.max_silentnumber0.5Share of silent 20 ms frames
verify.asrAsrConfig | nullnull skips the listening check
verify.asr.namestringopenai/whisper-baseWhisper model on the Hub
verify.asr.revisionstringe37978b90ca9030d5170a5c07aadb050351a65bb40-character commit
verify.asr.languagestring | nullLanguage code (en, ko, ...); null lets Whisper detect it
verify.max_wernumber0.2Word error rate of the transcript against the text
selectSpeechSelectSettings
select.per_textinteger | null1Recordings kept per text, best heard first; null: all, for a wake word read by many speakers
select.max_rowsinteger | null
licencestringrequiredTerms of the voice, and so of every recording it makes; kept in the manifest

data_synthetic​

KeyTypeDefaultDescription
recipestringrequiredWhich pipeline builds this model; see llmclick recipes
namestringrequired
seedinteger20260920
output_dirstring./output
devicecuda | mps | cpu | null
stageslist[string] | nullStages to run, in the recipe's order; default all
teacherKeyedrequired
teacher.namestringrequired
seedslist[SeedSpec]required
seeds.kindstringrequiredWhat the seeds are: topic, persona, document, instruction, ...; generators read it
seeds.valueslist[string] | nullInline seed texts
seeds.sourceKeyed | nullA row source (local_jsonl, huggingface, ...)
seeds.source.namestringrequired
seeds.fieldstring | nullWith source: the column that holds the seed text
seeds.limitinteger | null
promptsPromptSettingsrequired
prompts.generatorstringrequiredKey of GENERATORS: passthrough, topic_questions, persona_task, document_qa
prompts.per_seedinteger1Prompts to make from each seed
prompts.paramsobject (extra keys allowed)Generator parameters, e.g. skills for persona_task
prompts.constraintslist[string]Verifiable constraints; one is appended to every prompt
prompts.max_tokensinteger512
prompts.temperaturenumber1.0
evolveEvolveSettings | null
evolve.roundsinteger1
evolve.operatorsdict[str, number]EVOLVERS keys and their draw weights
evolve.max_tokensinteger512
evolve.temperaturenumber1.0
evolve.judge_gainbooleanFalseAsk the teacher whether the evolved prompt adds information (Evol-Instruct rule 1)
respondRespondSettings
respond.answers_per_questioninteger1
respond.systemstring | null
respond.max_tokensinteger1024
respond.temperaturenumber0.7
verifyVerifySettings
verify.schema_recipestring | nullA modeling recipe whose check every assembled row must pass
verify.rewardKeyed | nullA REWARDS function scoring the answer against the prompt's answer
verify.reward.namestringrequired
verify.majoritylast_number | exact | nullKeep answers that agree with the majority of a prompt's answers
verify.judgeJudgeSettings | null
verify.judge.teacherKeyed | nullAnother model family than the generator; null: the generator
verify.judge.teacher.namestringrequired
verify.judge.rubricstringRate how helpful, correct and complete the answer is for the request.
verify.judge.min_scorenumber6
verify.judge.max_tokensinteger64
verify.sorry_wordsinteger80An answer with 'sorry' and fewer words than this is a failed prompt (Evol-Instruct rule 2)
selectSelectSettings
select.assemblesft | dpo | grpo | decisionsft
select.decisionDecisionQuestion | nullassemble: decision, or verify.schema_recipe: llm_decision_sft: the question every row asks
select.decision.namestringrouteThe question's key in the row's questions
select.decision.instructionsstringrequiredWhat the decision model is asked about the state
select.decision.criteriadict[str, string]requiredOption -> what it means; the labels are these options
select.dedupDedupSettings
select.dedup.nearnumber | null0.75Share of word n-grams shared with a kept row that makes a duplicate; null: exact only
select.dedup.ngraminteger5
select.leakLeakSettings | null
select.leak.againstlist[Keyed]requiredRow sources of the evaluation items the rows must not contain
select.leak.against.namestringrequired
select.leak.thresholdnumber0.5
select.leak.ngraminteger8
select.marginnumber1.0dpo: the judge-score gap a chosen and rejected answer must have
select.max_rowsinteger | null
budgetBudgetSettings
budget.max_usdnumber | nullStop before a teacher call would exceed this spend
trackerTrackerConfig
tracker.enabledbooleanFalse
tracker.projectstringllmclick
tracker.entitystring | null
tracker.tagslist[string]

embedding_contrastive​

KeyTypeDefaultDescription
recipestringrequiredWhich pipeline builds this model; see llmclick recipes
namestringrequired
seedinteger20260920
output_dirstring./output
devicecuda | mps | cpu | null
stageslist[string] | nullStages to run, in the recipe's order; default all
trackerTrackerConfig
tracker.enabledbooleanFalse
tracker.projectstringllmclick
tracker.entitystring | null
tracker.tagslist[string]
validationTuningValidationConfig
validation.mindict[str, number]metric -> lowest accepted value
validation.maxdict[str, number]metric -> highest accepted value
validation.batch_sizeinteger8
modelBackboneConfigrequired
model.architecturestringrequiredKey of the family's model catalog
model.namestringrequiredHugging Face model ID, or a local directory
model.revisionstring | null40-character commit; required unless name is a directory
model.initstring | nullStart from this checkpoint directory of an earlier experiment
dataDataConfigrequired
data.sourceslist[Keyed]required
data.sources.namestringrequired
data.validationnumber0.1Share of rows held out for the validate stage
trainingTrainingConfig
training.epochsinteger1
training.lrnumber1e-05
training.weight_decaynumber0.0
training.batch_sizeinteger8
training.accumulationinteger1Batches per optimizer step
training.warmup_rationumber0.05
training.max_grad_normnumber1.0
training.max_lengthinteger1024Tokens per sequence
training.overflowerror | skiperrorRows over max_length: stop before training, or leave them out
training.max_stepsinteger | nullPilot: stop after this many optimizer steps
training.resume_everyinteger | null200Steps between resume snapshots; null disables them
training.eval_everyinteger | nullSteps between evaluations on the held-out rows while training; null: only validate at the end
training.eval_rowsinteger | nullHow many held-out rows the in-training evaluation uses; null: all of them
training.adapterAdapterConfig | nullnull trains every weight; set it to train LoRA
training.adapter.nameloralora
training.adapter.rinteger16Rank of the update matrices
training.adapter.alphainteger32Update scale; the effective factor is alpha / r
training.adapter.dropoutnumber0.0
training.adapter.targetslist[string] | nullLayer names to adapt; default: the architecture's
methodConfig
method.temperaturenumber0.05
method.query_instructionstring | nullTask description prepended to every query

evaluation_benchmark​

KeyTypeDefaultDescription
recipestringrequiredWhich pipeline builds this model; see llmclick recipes
namestringrequired
seedinteger20260920
output_dirstring./output
devicecuda | mps | cpu | null
stageslist[string] | nullStages to run, in the recipe's order; default all
evaluationEvaluationSettings
evaluation.batch_sizeinteger8
trackerTrackerConfig
tracker.enabledbooleanFalse
tracker.projectstringllmclick
tracker.entitystring | null
tracker.tagslist[string]
decodingDecoding
decoding.temperaturenumber0.00: greedy
decoding.max_new_tokensinteger1024
chat_templatebooleanFalseWrap prompts in the tokenizer's chat template (instruction-tuned models)
thinkingboolean | nullWith chat_template: pass enable_thinking to the template (Qwen3, Qwen3.5); true also splits answers at . null: the template's default
modelSourceModelrequired
model.experimentstring | nullExperiment directory (output/-) with its config.yaml
model.checkpointstringvalidatevalidate (passed validation), train (as trained), base (the weights the experiment started from), or a checkpoint directory
model.namestring | nullInstead of an experiment: a Hugging Face model ID or a local directory
model.revisionstring | null40-character commit of name; required unless it is a directory
model.architecturestring | nullWith name: the model catalog entry (e.g. bi_encoder) for recipes that load the model themselves
benchmarksBenchmarksrequired
benchmarks.presetstring | nullOne of ['korean', 'small_general']; tasks are added to it
benchmarks.taskslist[Task]
benchmarks.tasks.namestringrequiredAn lm-evaluation-harness task or group name
benchmarks.tasks.num_fewshotinteger | nullnull: the task's own default
benchmarks.tasks.limitinteger | nullItems per task; null: benchmarks.limit, then all
benchmarks.tasks.chat_templateboolean | nullOverrides chat_template for this task (multiple choice scored by likelihood often reads better without it); null: the config's
benchmarks.limitinteger | nullItems per task unless the task says otherwise; null: all (full runs take hours)

evaluation_compare​

KeyTypeDefaultDescription
recipestringrequiredWhich pipeline builds this model; see llmclick recipes
namestringrequired
seedinteger20260920
output_dirstring./output
devicecuda | mps | cpu | null
stageslist[string] | nullStages to run, in the recipe's order; default all
evaluationEvaluationSettings
evaluation.batch_sizeinteger8
trackerTrackerConfig
tracker.enabledbooleanFalse
tracker.projectstringllmclick
tracker.entitystring | null
tracker.tagslist[string]
decodingDecoding
decoding.temperaturenumber0.00: greedy
decoding.max_new_tokensinteger1024
chat_templatebooleanFalseWrap prompts in the tokenizer's chat template (instruction-tuned models)
thinkingboolean | nullWith chat_template: pass enable_thinking to the template (Qwen3, Qwen3.5); true also splits answers at . null: the template's default
runslist[Run]requiredThe checkpoints to compare; one of them checkpoint: base
runs.experimentstring | nullExperiment directory (output/-) with its config.yaml
runs.checkpointstringvalidatevalidate (passed validation), train (as trained), base (the weights the experiment started from), or a checkpoint directory
runs.namestring | nullInstead of an experiment: a Hugging Face model ID or a local directory
runs.revisionstring | null40-character commit of name; required unless it is a directory
runs.architecturestring | nullWith name: the model catalog entry (e.g. bi_encoder) for recipes that load the model themselves
runs.labelstringrequired
benchmarksBenchmarks | nullPublic benchmarks every run is scored on
benchmarks.presetstring | nullOne of ['korean', 'small_general']; tasks are added to it
benchmarks.taskslist[Task]
benchmarks.tasks.namestringrequiredAn lm-evaluation-harness task or group name
benchmarks.tasks.num_fewshotinteger | nullnull: the task's own default
benchmarks.tasks.limitinteger | nullItems per task; null: benchmarks.limit, then all
benchmarks.tasks.chat_templateboolean | nullOverrides chat_template for this task (multiple choice scored by likelihood often reads better without it); null: the config's
benchmarks.limitinteger | nullItems per task unless the task says otherwise; null: all (full runs take hours)
rowsEvaluationData | nullRows every run is scored on with its recipe's metrics
rows.sourceslist[Keyed]requiredRows in the format of the experiment's recipe
rows.sources.namestringrequired
decisionDecisionRows | nullDecision rows (or JevBench) every run answers, with think settings
decision.thinkoff | on | bothbothMeasure without reasoning (off), with it (on), or both
decision.max_thinkinteger | nullReasoning tokens per question; null: the experiment's method.max_think
decision.dataEvaluationDatarequired
decision.data.sourceslist[Keyed]requiredRows in the format of the experiment's recipe
decision.data.sources.namestringrequired
embeddingEmbeddingSettings | nullMTEB tasks every run is scored on
embedding.taskslist[string]requiredMTEB task names, e.g. STSBenchmark, NFCorpus, Banking77Classification
embedding.max_lengthinteger | nullTokens per text; null: the experiment's training.max_length
axesdict[str, list[string]]Chart axis -> entries averaged, each 0..1: a benchmark name, rows:<metric>, decision:<mode>:<metric> or embedding:<task>

evaluation_custom​

evaluation_custom: one model, any rows, the metrics of the recipe that trained it.

KeyTypeDefaultDescription
recipestringrequiredWhich pipeline builds this model; see llmclick recipes
namestringrequired
seedinteger20260920
output_dirstring./output
devicecuda | mps | cpu | null
stageslist[string] | nullStages to run, in the recipe's order; default all
evaluationEvaluationSettings
evaluation.batch_sizeinteger8
trackerTrackerConfig
tracker.enabledbooleanFalse
tracker.projectstringllmclick
tracker.entitystring | null
tracker.tagslist[string]
modelSourceModelrequired
model.experimentstring | nullExperiment directory (output/-) with its config.yaml
model.checkpointstringvalidatevalidate (passed validation), train (as trained), base (the weights the experiment started from), or a checkpoint directory
model.namestring | nullInstead of an experiment: a Hugging Face model ID or a local directory
model.revisionstring | null40-character commit of name; required unless it is a directory
model.architecturestring | nullWith name: the model catalog entry (e.g. bi_encoder) for recipes that load the model themselves
dataEvaluationDatarequired
data.sourceslist[Keyed]requiredRows in the format of the experiment's recipe
data.sources.namestringrequired

evaluation_decision​

KeyTypeDefaultDescription
thinkoff | on | bothbothMeasure without reasoning (off), with it (on), or both
max_thinkinteger | nullReasoning tokens per question; null: the experiment's method.max_think
recipestringrequiredWhich pipeline builds this model; see llmclick recipes
namestringrequired
seedinteger20260920
output_dirstring./output
devicecuda | mps | cpu | null
stageslist[string] | nullStages to run, in the recipe's order; default all
evaluationEvaluationSettings
evaluation.batch_sizeinteger8
trackerTrackerConfig
tracker.enabledbooleanFalse
tracker.projectstringllmclick
tracker.entitystring | null
tracker.tagslist[string]
modelSourceModelrequired
model.experimentstring | nullExperiment directory (output/-) with its config.yaml
model.checkpointstringvalidatevalidate (passed validation), train (as trained), base (the weights the experiment started from), or a checkpoint directory
model.namestring | nullInstead of an experiment: a Hugging Face model ID or a local directory
model.revisionstring | null40-character commit of name; required unless it is a directory
model.architecturestring | nullWith name: the model catalog entry (e.g. bi_encoder) for recipes that load the model themselves
dataEvaluationDatarequired
data.sourceslist[Keyed]requiredRows in the format of the experiment's recipe
data.sources.namestringrequired

evaluation_embedding​

KeyTypeDefaultDescription
taskslist[string]requiredMTEB task names, e.g. STSBenchmark, NFCorpus, Banking77Classification
max_lengthinteger | nullTokens per text; null: the experiment's training.max_length
recipestringrequiredWhich pipeline builds this model; see llmclick recipes
namestringrequired
seedinteger20260920
output_dirstring./output
devicecuda | mps | cpu | null
stageslist[string] | nullStages to run, in the recipe's order; default all
evaluationEvaluationSettings
evaluation.batch_sizeinteger8
trackerTrackerConfig
tracker.enabledbooleanFalse
tracker.projectstringllmclick
tracker.entitystring | null
tracker.tagslist[string]
modelSourceModelrequired
model.experimentstring | nullExperiment directory (output/-) with its config.yaml
model.checkpointstringvalidatevalidate (passed validation), train (as trained), base (the weights the experiment started from), or a checkpoint directory
model.namestring | nullInstead of an experiment: a Hugging Face model ID or a local directory
model.revisionstring | null40-character commit of name; required unless it is a directory
model.architecturestring | nullWith name: the model catalog entry (e.g. bi_encoder) for recipes that load the model themselves

evaluation_wakeword​

KeyTypeDefaultDescription
recipestringrequiredWhich pipeline builds this model; see llmclick recipes
namestringrequired
seedinteger20260920
output_dirstring./output
devicecuda | mps | cpu | null
stageslist[string] | nullStages to run, in the recipe's order; default all
evaluationEvaluationSettings
evaluation.batch_sizeinteger8
trackerTrackerConfig
tracker.enabledbooleanFalse
tracker.projectstringllmclick
tracker.entitystring | null
tracker.tagslist[string]
modelWakewordModelrequired
model.experimentstring | nullA wakeword experiment directory (output/-)
model.checkpointstringvalidatevalidate or train (a stage of the experiment), or a bundle directory: wakeword.json beside the detector and the two feature models
dataWakewordEvaluationDatarequired
data.positivelist[Keyed]requiredRecordings of the phrase (audio, optional text), ideally by voices the detector never trained on
data.positive.namestringrequired
data.negativelist[Keyed]Short recordings that must not wake it (near misses, commands); the report counts them per text
data.negative.namestringrequired
data.ambientlist[string]Directories of WAVs that never say the phrase (speech, TV, music), hours of them: false accepts per hour
data.noiselist[string]Directories of noise WAVs mixed under the recordings in the noisy conditions; empty: Gaussian noise
conditionslist[number | null]Speech-to-noise ratios in dB every recording is tested at; null: clean
thresholdnumber0.5The operating point the headline numbers are read at
refractorynumber1.0Seconds after a firing in which another one is not counted
targetslist[number]False accepts per hour at which the miss rate is read off the threshold sweep

llm_decision_cispo​

KeyTypeDefaultDescription
recipestringrequiredWhich pipeline builds this model; see llmclick recipes
namestringrequired
seedinteger20260920
output_dirstring./output
devicecuda | mps | cpu | null
stageslist[string] | nullStages to run, in the recipe's order; default all
trackerTrackerConfig
tracker.enabledbooleanFalse
tracker.projectstringllmclick
tracker.entitystring | null
tracker.tagslist[string]
validationTuningValidationConfig
validation.mindict[str, number]metric -> lowest accepted value
validation.maxdict[str, number]metric -> highest accepted value
validation.batch_sizeinteger8
modelLLMBackboneConfigrequired
model.architecturestringrequiredKey of the family's model catalog
model.namestringrequiredHugging Face model ID, or a local directory
model.revisionstring | null40-character commit; required unless name is a directory
model.initstring | nullStart from this checkpoint directory of an earlier experiment
model.templateobject (extra keys allowed)Extra chat-template arguments, e.g. enable_thinking
model.headstring | nullDecision head on top of the backbone; decision recipes only
dataDataConfigrequired
data.sourceslist[Keyed]required
data.sources.namestringrequired
data.validationnumber0.1Share of rows held out for the validate stage
trainingTrainingConfig
training.epochsinteger1
training.lrnumber1e-05
training.weight_decaynumber0.0
training.batch_sizeinteger8
training.accumulationinteger1Batches per optimizer step
training.warmup_rationumber0.05
training.max_grad_normnumber1.0
training.max_lengthinteger1024Tokens per sequence
training.overflowerror | skiperrorRows over max_length: stop before training, or leave them out
training.max_stepsinteger | nullPilot: stop after this many optimizer steps
training.resume_everyinteger | null200Steps between resume snapshots; null disables them
training.eval_everyinteger | nullSteps between evaluations on the held-out rows while training; null: only validate at the end
training.eval_rowsinteger | nullHow many held-out rows the in-training evaluation uses; null: all of them
training.adapterAdapterConfig | nullnull trains every weight; set it to train LoRA
training.adapter.nameloralora
training.adapter.rinteger16Rank of the update matrices
training.adapter.alphainteger32Update scale; the effective factor is alpha / r
training.adapter.dropoutnumber0.0
training.adapter.targetslist[string] | nullLayer names to adapt; default: the architecture's
methodConfig
method.head_lrnumber0.0001Learning rate of the head, which starts untrained
method.calibrationnumber0.1Share of training records kept for fitting the temperature
method.max_thinkinteger256Reasoning tokens per question before the model must decide
method.eval_thinkbooleanTrue
method.group_sizeinteger4Reasoning chains sampled per question
method.temperaturenumber1.0
method.rollout_weightnumber0.5Weight of the head loss after reasoning
method.anchor_weightnumber0.5Weight of the head loss without reasoning
method.length_hingeinteger | nullChains longer than this many tokens lose reward
method.length_penalty_capnumber0.1
method.iterationsinteger1Optimizer steps per sampled group of chains
method.clipnumber0.2The importance weight of a reused chain token is capped at 1 + clip

llm_decision_sft​

KeyTypeDefaultDescription
recipestringrequiredWhich pipeline builds this model; see llmclick recipes
namestringrequired
seedinteger20260920
output_dirstring./output
devicecuda | mps | cpu | null
stageslist[string] | nullStages to run, in the recipe's order; default all
trackerTrackerConfig
tracker.enabledbooleanFalse
tracker.projectstringllmclick
tracker.entitystring | null
tracker.tagslist[string]
validationTuningValidationConfig
validation.mindict[str, number]metric -> lowest accepted value
validation.maxdict[str, number]metric -> highest accepted value
validation.batch_sizeinteger8
modelLLMBackboneConfigrequired
model.architecturestringrequiredKey of the family's model catalog
model.namestringrequiredHugging Face model ID, or a local directory
model.revisionstring | null40-character commit; required unless name is a directory
model.initstring | nullStart from this checkpoint directory of an earlier experiment
model.templateobject (extra keys allowed)Extra chat-template arguments, e.g. enable_thinking
model.headstring | nullDecision head on top of the backbone; decision recipes only
dataDataConfigrequired
data.sourceslist[Keyed]required
data.sources.namestringrequired
data.validationnumber0.1Share of rows held out for the validate stage
trainingTrainingConfig
training.epochsinteger1
training.lrnumber1e-05
training.weight_decaynumber0.0
training.batch_sizeinteger8
training.accumulationinteger1Batches per optimizer step
training.warmup_rationumber0.05
training.max_grad_normnumber1.0
training.max_lengthinteger1024Tokens per sequence
training.overflowerror | skiperrorRows over max_length: stop before training, or leave them out
training.max_stepsinteger | nullPilot: stop after this many optimizer steps
training.resume_everyinteger | null200Steps between resume snapshots; null disables them
training.eval_everyinteger | nullSteps between evaluations on the held-out rows while training; null: only validate at the end
training.eval_rowsinteger | nullHow many held-out rows the in-training evaluation uses; null: all of them
training.adapterAdapterConfig | nullnull trains every weight; set it to train LoRA
training.adapter.nameloralora
training.adapter.rinteger16Rank of the update matrices
training.adapter.alphainteger32Update scale; the effective factor is alpha / r
training.adapter.dropoutnumber0.0
training.adapter.targetslist[string] | nullLayer names to adapt; default: the architecture's
methodConfig
method.head_lrnumber0.0001Learning rate of the head, which starts untrained
method.calibrationnumber0.1Share of training records kept for fitting the temperature
method.max_thinkinteger256Reasoning tokens per question before the model must decide
method.eval_thinkbooleanFalseAlso measure accuracy when the model reasons first
method.think_fractionnumber0.0Share of questions given a reasoning chain

llm_dpo​

KeyTypeDefaultDescription
recipestringrequiredWhich pipeline builds this model; see llmclick recipes
namestringrequired
seedinteger20260920
output_dirstring./output
devicecuda | mps | cpu | null
stageslist[string] | nullStages to run, in the recipe's order; default all
trackerTrackerConfig
tracker.enabledbooleanFalse
tracker.projectstringllmclick
tracker.entitystring | null
tracker.tagslist[string]
validationTuningValidationConfig
validation.mindict[str, number]metric -> lowest accepted value
validation.maxdict[str, number]metric -> highest accepted value
validation.batch_sizeinteger8
modelLLMBackboneConfigrequired
model.architecturestringrequiredKey of the family's model catalog
model.namestringrequiredHugging Face model ID, or a local directory
model.revisionstring | null40-character commit; required unless name is a directory
model.initstring | nullStart from this checkpoint directory of an earlier experiment
model.templateobject (extra keys allowed)Extra chat-template arguments, e.g. enable_thinking
model.headstring | nullDecision head on top of the backbone; decision recipes only
dataDataConfigrequired
data.sourceslist[Keyed]required
data.sources.namestringrequired
data.validationnumber0.1Share of rows held out for the validate stage
trainingTrainingConfig
training.epochsinteger1
training.lrnumber1e-05
training.weight_decaynumber0.0
training.batch_sizeinteger8
training.accumulationinteger1Batches per optimizer step
training.warmup_rationumber0.05
training.max_grad_normnumber1.0
training.max_lengthinteger1024Tokens per sequence
training.overflowerror | skiperrorRows over max_length: stop before training, or leave them out
training.max_stepsinteger | nullPilot: stop after this many optimizer steps
training.resume_everyinteger | null200Steps between resume snapshots; null disables them
training.eval_everyinteger | nullSteps between evaluations on the held-out rows while training; null: only validate at the end
training.eval_rowsinteger | nullHow many held-out rows the in-training evaluation uses; null: all of them
training.adapterAdapterConfig | nullnull trains every weight; set it to train LoRA
training.adapter.nameloralora
training.adapter.rinteger16Rank of the update matrices
training.adapter.alphainteger32Update scale; the effective factor is alpha / r
training.adapter.dropoutnumber0.0
training.adapter.targetslist[string] | nullLayer names to adapt; default: the architecture's
methodConfig
method.betanumber0.1How strongly the policy may move away from the base model

llm_grpo​

KeyTypeDefaultDescription
recipestringrequiredWhich pipeline builds this model; see llmclick recipes
namestringrequired
seedinteger20260920
output_dirstring./output
devicecuda | mps | cpu | null
stageslist[string] | nullStages to run, in the recipe's order; default all
trackerTrackerConfig
tracker.enabledbooleanFalse
tracker.projectstringllmclick
tracker.entitystring | null
tracker.tagslist[string]
validationTuningValidationConfig
validation.mindict[str, number]metric -> lowest accepted value
validation.maxdict[str, number]metric -> highest accepted value
validation.batch_sizeinteger8
modelLLMBackboneConfigrequired
model.architecturestringrequiredKey of the family's model catalog
model.namestringrequiredHugging Face model ID, or a local directory
model.revisionstring | null40-character commit; required unless name is a directory
model.initstring | nullStart from this checkpoint directory of an earlier experiment
model.templateobject (extra keys allowed)Extra chat-template arguments, e.g. enable_thinking
model.headstring | nullDecision head on top of the backbone; decision recipes only
dataDataConfigrequired
data.sourceslist[Keyed]required
data.sources.namestringrequired
data.validationnumber0.1Share of rows held out for the validate stage
trainingTrainingConfig
training.epochsinteger1
training.lrnumber1e-05
training.weight_decaynumber0.0
training.batch_sizeinteger8
training.accumulationinteger1Batches per optimizer step
training.warmup_rationumber0.05
training.max_grad_normnumber1.0
training.max_lengthinteger1024Tokens per sequence
training.overflowerror | skiperrorRows over max_length: stop before training, or leave them out
training.max_stepsinteger | nullPilot: stop after this many optimizer steps
training.resume_everyinteger | null200Steps between resume snapshots; null disables them
training.eval_everyinteger | nullSteps between evaluations on the held-out rows while training; null: only validate at the end
training.eval_rowsinteger | nullHow many held-out rows the in-training evaluation uses; null: all of them
training.adapterAdapterConfig | nullnull trains every weight; set it to train LoRA
training.adapter.nameloralora
training.adapter.rinteger16Rank of the update matrices
training.adapter.alphainteger32Update scale; the effective factor is alpha / r
training.adapter.dropoutnumber0.0
training.adapter.targetslist[string] | nullLayer names to adapt; default: the architecture's
methodConfig
method.group_sizeinteger4Completions sampled per prompt
method.max_new_tokensinteger32
method.temperaturenumber1.0
method.rewardKeyed
method.reward.namestringrequired
method.iterationsinteger1Optimizer steps per sampled group
method.clipnumber0.2The policy ratio is held within 1 +- clip when a group is reused
method.betanumber0.0Weight of the KL penalty towards the base model; needs training.adapter

llm_instruction​

KeyTypeDefaultDescription
recipestringrequiredWhich pipeline builds this model; see llmclick recipes
namestringrequired
seedinteger20260920
output_dirstring./output
devicecuda | mps | cpu | null
stageslist[string] | nullStages to run, in the recipe's order; default all
trackerTrackerConfig
tracker.enabledbooleanFalse
tracker.projectstringllmclick
tracker.entitystring | null
tracker.tagslist[string]
validationTuningValidationConfig
validation.mindict[str, number]metric -> lowest accepted value
validation.maxdict[str, number]metric -> highest accepted value
validation.batch_sizeinteger8
modelLLMBackboneConfigrequired
model.architecturestringrequiredKey of the family's model catalog
model.namestringrequiredHugging Face model ID, or a local directory
model.revisionstring | null40-character commit; required unless name is a directory
model.initstring | nullStart from this checkpoint directory of an earlier experiment
model.templateobject (extra keys allowed)Extra chat-template arguments, e.g. enable_thinking
model.headstring | nullDecision head on top of the backbone; decision recipes only
dataDataConfigrequired
data.sourceslist[Keyed]required
data.sources.namestringrequired
data.validationnumber0.1Share of rows held out for the validate stage
trainingTrainingConfig
training.epochsinteger1
training.lrnumber1e-05
training.weight_decaynumber0.0
training.batch_sizeinteger8
training.accumulationinteger1Batches per optimizer step
training.warmup_rationumber0.05
training.max_grad_normnumber1.0
training.max_lengthinteger1024Tokens per sequence
training.overflowerror | skiperrorRows over max_length: stop before training, or leave them out
training.max_stepsinteger | nullPilot: stop after this many optimizer steps
training.resume_everyinteger | null200Steps between resume snapshots; null disables them
training.eval_everyinteger | nullSteps between evaluations on the held-out rows while training; null: only validate at the end
training.eval_rowsinteger | nullHow many held-out rows the in-training evaluation uses; null: all of them
training.adapterAdapterConfig | nullnull trains every weight; set it to train LoRA
training.adapter.nameloralora
training.adapter.rinteger16Rank of the update matrices
training.adapter.alphainteger32Update scale; the effective factor is alpha / r
training.adapter.dropoutnumber0.0
training.adapter.targetslist[string] | nullLayer names to adapt; default: the architecture's
methodConfig
method.systemstring | nullSystem prompt put in front of every instruction

llm_sft​

KeyTypeDefaultDescription
recipestringrequiredWhich pipeline builds this model; see llmclick recipes
namestringrequired
seedinteger20260920
output_dirstring./output
devicecuda | mps | cpu | null
stageslist[string] | nullStages to run, in the recipe's order; default all
trackerTrackerConfig
tracker.enabledbooleanFalse
tracker.projectstringllmclick
tracker.entitystring | null
tracker.tagslist[string]
validationTuningValidationConfig
validation.mindict[str, number]metric -> lowest accepted value
validation.maxdict[str, number]metric -> highest accepted value
validation.batch_sizeinteger8
modelLLMBackboneConfigrequired
model.architecturestringrequiredKey of the family's model catalog
model.namestringrequiredHugging Face model ID, or a local directory
model.revisionstring | null40-character commit; required unless name is a directory
model.initstring | nullStart from this checkpoint directory of an earlier experiment
model.templateobject (extra keys allowed)Extra chat-template arguments, e.g. enable_thinking
model.headstring | nullDecision head on top of the backbone; decision recipes only
dataDataConfigrequired
data.sourceslist[Keyed]required
data.sources.namestringrequired
data.validationnumber0.1Share of rows held out for the validate stage
trainingTrainingConfig
training.epochsinteger1
training.lrnumber1e-05
training.weight_decaynumber0.0
training.batch_sizeinteger8
training.accumulationinteger1Batches per optimizer step
training.warmup_rationumber0.05
training.max_grad_normnumber1.0
training.max_lengthinteger1024Tokens per sequence
training.overflowerror | skiperrorRows over max_length: stop before training, or leave them out
training.max_stepsinteger | nullPilot: stop after this many optimizer steps
training.resume_everyinteger | null200Steps between resume snapshots; null disables them
training.eval_everyinteger | nullSteps between evaluations on the held-out rows while training; null: only validate at the end
training.eval_rowsinteger | nullHow many held-out rows the in-training evaluation uses; null: all of them
training.adapterAdapterConfig | nullnull trains every weight; set it to train LoRA
training.adapter.nameloralora
training.adapter.rinteger16Rank of the update matrices
training.adapter.alphainteger32Update scale; the effective factor is alpha / r
training.adapter.dropoutnumber0.0
training.adapter.targetslist[string] | nullLayer names to adapt; default: the architecture's
methodConfig

tts_piper​

KeyTypeDefaultDescription
recipestringrequiredWhich pipeline builds this model; see llmclick recipes
namestringrequired
seedinteger20260920
output_dirstring./output
devicecuda | mps | cpu | null
stageslist[string] | nullStages to run, in the recipe's order; default all
trackerTrackerConfig
tracker.enabledbooleanFalse
tracker.projectstringllmclick
tracker.entitystring | null
tracker.tagslist[string]
validationPiperValidationConfig
validation.mindict[str, number]metric -> lowest accepted value
validation.maxdict[str, number]metric -> highest accepted value
validation.asrAsrConfig
validation.asr.namestringopenai/whisper-baseWhisper model on the Hub
validation.asr.revisionstringe37978b90ca9030d5170a5c07aadb050351a65bb40-character commit
validation.asr.languagestring | nullLanguage code (en, ko, ...); null lets Whisper detect it
validation.rowsinteger | null50Held-out rows to synthesize and transcribe; null: all of them
validation.phrasesdict[str, string]Fixed replies the agent plays (name -> text), e.g. web_search: Searching Reference.; the best-heard take is kept as phrases/.wav and must be understood
validation.phrase_takesinteger3Takes of each phrase; Piper's unseeded noise makes each one different, and Whisper picks the best
modelVoiceModelConfigrequired
model.qualitymedium | highmediumPiper's model size; init must have the same
model.espeak_voicestringrequiredespeak-ng voice that turns text into phonemes, e.g. en-us, en-gb-x-rp
model.sample_rateinteger22050
model.initHubFilerequiredPiper checkpoint (.ckpt) whose weights training starts from
model.init.namestringrequiredHub repository ID, or a local file or directory
model.init.revisionstring | null40-character commit; with file, for a Hub repository
model.init.filestring | nullPath of the file inside the Hub repository
dataDataConfigrequired
data.sourceslist[Keyed]required
data.sources.namestringrequired
data.validationnumber0.1Share of rows held out for the validate stage
trainingPiperTrainingConfig
training.epochsinteger100Epochs over the training rows from the starting weights
training.batch_sizeinteger16
training.argsdict[str, string | integer | number | boolean]More piper.train fit options, e.g. model.learning_rate: 1.0e-4

wakeword​

KeyTypeDefaultDescription
recipestringrequiredWhich pipeline builds this model; see llmclick recipes
namestringrequired
seedinteger20260920
output_dirstring./output
devicecuda | mps | cpu | null
stageslist[string] | nullStages to run, in the recipe's order; default all
trackerTrackerConfig
tracker.enabledbooleanFalse
tracker.projectstringllmclick
tracker.entitystring | null
tracker.tagslist[string]
validationWakewordValidation
validation.mindict[str, number]metric -> lowest accepted value
validation.maxdict[str, number]metric -> highest accepted value
validation.thresholdnumber0.5Score at or above which the detector fires
validation.snrnumber | null20.0Speech-to-noise ratio of the test streams, dB; null: clean
phrasestringrequiredWhat wakes the agent, e.g. 'Jarvis, wake up'; names the model file
dataWakewordDatarequired
data.positivelist[Keyed]requiredRow sources of recordings of the phrase (audio, optional text)
data.positive.namestringrequired
data.negativelist[Keyed]requiredRow sources of anything else: near misses, commands, speech
data.negative.namestringrequired
data.backgroundlist[string]Directories of noise WAVs mixed under every window; empty: Gaussian noise
data.validationnumber0.2Share of each class held out for the streaming test
augmentAugmentConfig
augment.roundsinteger4Windows cut from every training recording, each with its own noise
augment.snrlist[any][5.0, 25.0]Range of speech-to-noise ratio, dB
augment.gainlist[any][-12.0, 0.0]Range of gain on the whole window, dB
augment.tailnumber0.3Most seconds of noise after a recording's end in its window
augment.followedinteger2Negative windows per phrase recording where other speech follows the phrase, so the detector fires as the phrase ends and not again
augment.noiseinteger200Windows of noise alone, as more negatives
trainingWakewordTraining
training.stepsinteger3000
training.batch_sizeinteger256Half positive windows, half negative
training.learning_ratenumber0.001
training.layer_diminteger32Width of openWakeWord's DNN head
training.blocksinteger1Hidden blocks after the first layer
training.negative_weightnumber1.0Loss weight of a negative window against a positive one; above 1 trades unused recall for fewer false accepts
training.scheduleconstant | cosineconstantLearning rate over the steps; cosine decays it to zero, so the detector does not depend on where training stops