# tinker_cookbook.supervised.Config ## *class* [**tinker_cookbook.supervised.Config**](https://github.com/thinking-machines-lab/tinker-cookbook/blob/main/tinker_cookbook/supervised/train.py#L43)() Configuration for supervised fine-tuning. This `chz` dataclass holds every knob for a supervised learning run: model selection, learning-rate schedule, checkpointing cadence, evaluation, and logging. ```python from tinker_cookbook.supervised import train config = train.Config( log_path="~/logs/sft-run", model_name="Qwen/Qwen3-8B", dataset_builder=my_dataset_builder, learning_rate=1e-4, ) asyncio.run(train.main(config)) ``` **Fields:** - [**log_path**](https://github.com/thinking-machines-lab/tinker-cookbook/blob/main/tinker_cookbook/supervised/train.py#L112) (*str*) - [**model_name**](https://github.com/thinking-machines-lab/tinker-cookbook/blob/main/tinker_cookbook/supervised/train.py#L113) (*str*) - [**recipe_name**](https://github.com/thinking-machines-lab/tinker-cookbook/blob/main/tinker_cookbook/supervised/train.py#L114) (*str*) - [**load_checkpoint_path**](https://github.com/thinking-machines-lab/tinker-cookbook/blob/main/tinker_cookbook/supervised/train.py#L115) (*str | None*, default: `None`) - [**renderer_name**](https://github.com/thinking-machines-lab/tinker-cookbook/blob/main/tinker_cookbook/supervised/train.py#L116) (*str | None*, default: `None`) - [**dataset_builder**](https://github.com/thinking-machines-lab/tinker-cookbook/blob/main/tinker_cookbook/supervised/train.py#L117) (*[SupervisedDatasetBuilder](https://tinker-docs.thinkingmachines.ai/cookbook/api-reference/supervised/superviseddatasetbuilder/index.md)*) - [**learning_rate**](https://github.com/thinking-machines-lab/tinker-cookbook/blob/main/tinker_cookbook/supervised/train.py#L120) (*float*, default: `0.0001`) - [**lr_schedule**](https://github.com/thinking-machines-lab/tinker-cookbook/blob/main/tinker_cookbook/supervised/train.py#L121) (*LRSchedule*, default: `'linear'`) - [**num_epochs**](https://github.com/thinking-machines-lab/tinker-cookbook/blob/main/tinker_cookbook/supervised/train.py#L122) (*int*, default: `1`) - [**lora_rank**](https://github.com/thinking-machines-lab/tinker-cookbook/blob/main/tinker_cookbook/supervised/train.py#L125) (*int*, default: `32`) - [**base_url**](https://github.com/thinking-machines-lab/tinker-cookbook/blob/main/tinker_cookbook/supervised/train.py#L128) (*str | None*, default: `None`) - [**evaluator_builders**](https://github.com/thinking-machines-lab/tinker-cookbook/blob/main/tinker_cookbook/supervised/train.py#L131) (*list[EvaluatorBuilder]*, default: `[]`) – Checkpointing and evaluation (0 = disabled for \*\_every fields) - [**infrequent_evaluator_builders**](https://github.com/thinking-machines-lab/tinker-cookbook/blob/main/tinker_cookbook/supervised/train.py#L132) (*list[EvaluatorBuilder]*, default: `[]`) - [**save_every**](https://github.com/thinking-machines-lab/tinker-cookbook/blob/main/tinker_cookbook/supervised/train.py#L134) (*int*, default: `20`) – Step-based periodic checkpoint cadence - [**save_every_tokens**](https://github.com/thinking-machines-lab/tinker-cookbook/blob/main/tinker_cookbook/supervised/train.py#L136) (*int*, default: `0`) – Token-based periodic checkpoint cadence - [**save_every_seconds**](https://github.com/thinking-machines-lab/tinker-cookbook/blob/main/tinker_cookbook/supervised/train.py#L138) (*float*, default: `0.0`) – Wall-clock periodic checkpoint cadence in seconds - [**eval_every**](https://github.com/thinking-machines-lab/tinker-cookbook/blob/main/tinker_cookbook/supervised/train.py#L139) (*int*, default: `10`) - [**infrequent_eval_every**](https://github.com/thinking-machines-lab/tinker-cookbook/blob/main/tinker_cookbook/supervised/train.py#L140) (*int*, default: `100`) - [**ttl_seconds**](https://github.com/thinking-machines-lab/tinker-cookbook/blob/main/tinker_cookbook/supervised/train.py#L142) (*int | None*, default: `604800`) – 7 days - [**rolling_save_every**](https://github.com/thinking-machines-lab/tinker-cookbook/blob/main/tinker_cookbook/supervised/train.py#L145) (*int*, default: `0`) – but skips the sampler-weight export, making it cheaper than periodic checkpoints. - [**rolling_ttl_seconds**](https://github.com/thinking-machines-lab/tinker-cookbook/blob/main/tinker_cookbook/supervised/train.py#L147) (*int*, default: `7200`) – 2 hours - [**async_periodic_saves**](https://github.com/thinking-machines-lab/tinker-cookbook/blob/main/tinker_cookbook/supervised/train.py#L151) (*bool*, default: `False`) – checkpoint always blocks regardless of this setting. - [**adam_beta1**](https://github.com/thinking-machines-lab/tinker-cookbook/blob/main/tinker_cookbook/supervised/train.py#L154) (*float*, default: `0.9`) - [**adam_beta2**](https://github.com/thinking-machines-lab/tinker-cookbook/blob/main/tinker_cookbook/supervised/train.py#L155) (*float*, default: `0.95`) - [**adam_eps**](https://github.com/thinking-machines-lab/tinker-cookbook/blob/main/tinker_cookbook/supervised/train.py#L156) (*float*, default: `1e-08`) - [**wandb_project**](https://github.com/thinking-machines-lab/tinker-cookbook/blob/main/tinker_cookbook/supervised/train.py#L159) (*str | None*, default: `None`) - [**wandb_name**](https://github.com/thinking-machines-lab/tinker-cookbook/blob/main/tinker_cookbook/supervised/train.py#L160) (*str | None*, default: `None`) - [**enable_trace**](https://github.com/thinking-machines-lab/tinker-cookbook/blob/main/tinker_cookbook/supervised/train.py#L162) (*bool*, default: `False`) - [**span_chart_every**](https://github.com/thinking-machines-lab/tinker-cookbook/blob/main/tinker_cookbook/supervised/train.py#L163) (*int*, default: `0`) - [**max_steps**](https://github.com/thinking-machines-lab/tinker-cookbook/blob/main/tinker_cookbook/supervised/train.py#L166) (*int | None*, default: `None`) – Maximum number of training steps. If None, train for num_epochs * n_batches. - [**submit_ahead**](https://github.com/thinking-machines-lab/tinker-cookbook/blob/main/tinker_cookbook/supervised/train.py#L171) (*int*, default: `1`) – 0 = no pipelining, 2+ = deeper pipeline.