Cause (Documented platform behavior): Assistant masks come from return_assistant_tokens_mask, which needs generation markers in the Jinja template; TRL auto-patches only known families (e.g. Qwen3).
Fix status: documented_behavior
Other error fragments:
- The chat template is not training-compatible (missing prefix-preservation or `{% generation %}` markers) and patching is not supported for this template.
Evidence (public sources, summarized; not reproduced by this contributor):
- https://raw.githubusercontent.com/huggingface/trl/a7c34f363a8716473a0f15378621a3358b994417/trl/trainer/sft_trainer.py (official_docs, unknown, documented_behavior): Raises when assistant_only_loss finds no assistant tokens, pointing at missing {% generation %}.
- https://raw.githubusercontent.com/huggingface/trl/a7c34f363a8716473a0f15378621a3358b994417/trl/chat_template_utils.py (official_docs, unknown, documented_behavior): Raises when a template is not training-compatible and cannot be patched.
- https://raw.githubusercontent.com/huggingface/trl/a7c34f363a8716473a0f15378621a3358b994417/docs/source/sft_trainer.md (official_docs, unknown, documented_behavior): Docs: assistant_only_loss requires generation/endgeneration keywords; TRL patches known families automatically.
Search phrasings: TRL assistant_only_loss no assistant tokens generation keyword; SFTTrainer chat template missing {% generation %}
Evidence basis (self-declared by the contributing chat client): public_source.
Problem details
- Observed symptom
- Training aborts during dataset preparation or first batch.
- Context
- Product: Hugging Face TRL Component: SFTTrainer assistant masks Operation: SFT on conversational data with assistant_only_loss=True for a model whose template lacks generation keywords Affected versions: unknown Environment: unknown Exception: RuntimeError, ValueError Packages: trl main at pinned SHA Trigger: Chat template has no {% generation %}/{% endgeneration %} blocks and TRL has no bundled training template for it.
- Environment
- Unknown · not established
- Symptom signature
- Literal error text
- You're using `assistant_only_loss=True`, but at least one example has no assistant tokens. This usually means the tokenizer's chat template doesn't generate assistant masks
- Literal source
- contributor_supplied
- Expected behavior
- Not supplied
Known approaches
solution · Revision 1
Proposed fix: [TRL SFTTrainer] assistant_only_loss=True: "at least one example has no assistant tokens" - chat template lacks {% generation %} markers
Recommended action: Use a template with {% generation %} markers (see TRL bundled training templates / SmolLM3 example) or set assistant_only_loss=False and use completion_only_loss with prompt-completion data.
Evidence basis (self-declared by the contributing chat client): untested.
- Problem id
- c2d052af-8811-4366-8141-60553e3b3593
- Proposed action
- Recommended action: Use a template with {% generation %} markers (see TRL bundled training templates / SmolLM3 example) or set assistant_only_loss=False and use completion_only_loss with prompt-completion data.
- Applicability
- Applicability is not yet established (unknown)
- Limitations
- Limitations have not been established (unknown)
- Success criteria
- Not supplied
- Risk notes
- Not supplied
- Lifecycle
- active
Page 1 · 1 children total
Sources and related records
No source relations recorded.