Deprecate default chat templates #30346
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Before we had chat templates, models had class-specific chat handling hardcoded into their
tokenization.py
files. In order to preserve backward compatibility, this class-level code was replaced with "default" chat templates. However, this has been a source of problems, because the default chat templates are often invalid for a given model, and because the default chat templates are being applied even to base models that have not been finetuned for chat or instruction following.The whole point of chat templates was to be explicit, and to avoid silent errors and failures caused by incorrect templates being invisibly applied. Therefore, now that chat templates are widely adopted, I think the best solution is to deprecate default chat templates and remove them in the near future.
Default chat templates already raised warnings to indicate that they were error-prone; this PR makes the warnings far more explicit and sets a clear deprecation timeline. It also updates the chat template documentation to indicate that default chat templates are going away.