1a8198011d
* Add `TrainConfig.eval_batch_size` (`int | None`, default `None`) with a validator rejecting values below 1; `None` inherits the resolved training batch size, so no existing run changes shape. * Add `RFDETRDataModule._resolve_eval_batch_size()` and route the validation, test and predict dataloaders through it; the training dataloader and its `grad_accum_steps` alignment padding are untouched. * An explicit `eval_batch_size` is returned without consulting `batch_size`, so it stays usable on the `batch_size="auto"` path where `_resolve_batch_size()` raises; leaving it unset preserves that error for eval loaders too. * Change the `grad_accum_steps` default from 4 to 1, moving the default effective batch size from 16 to 4. This is a training-semantics change, not a throughput-only one: the optimization trajectory differs and convergence may differ with it. Set `grad_accum_steps=4` explicitly to restore the previous behaviour. Runs using `batch_size="auto"` are unaffected because the auto-batch probe overwrites the field with its own recommendation. * Rewrite the batch and gradient-accumulation guidance across `docs/learn/train/training-parameters.md`, `docs/faq.md`, `docs/learn/train/index.md` and `docs/root-static/llms-full.txt` to recommend raising `batch_size` first and accumulating only when memory caps it, and to correct the published default that still read 4. * Add config tests for the new validator and datamodule tests covering default inheritance, an explicit override applied to all three eval loaders, and the training loader's independence from it. --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Codex <codex@openai.com>