TRL documentation

Utilitaires de gabarits de discussion

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v1.17.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Utilitaires de gabarits de discussion

Pour un aperçu des modèles de conversation inclus avec TRL et de la logique derrière les correctifs d’entraînement, consultez Chat Templates.

clone_chat_template

trl.clone_chat_template

< >

( model: PreTrainedModeltokenizer: PreTrainedTokenizerBasesource_tokenizer_path: strresize_to_multiple_of: int | None = 64 ) → model (PreTrainedModel)

Paramètres

  • model (PreTrainedModel) — Modèle à mettre à jour.
  • tokenizer (PreTrainedTokenizerBase) — Tokenizer à mettre à jour.
  • source_tokenizer_path (str) — Chemin ou identifiant du tokenizer pré-entraîné à cloner.
  • resize_to_multiple_of (int ou None, facultatif, par défaut 64) — La couche d’embedding sera redimensionnée à la nouvelle taille du vocabulaire. Si cette valeur n’est pas None, la nouvelle taille du vocabulaire sera arrondie au multiple supérieur de cette valeur.

Retourne

modèle (PreTrainedModel)

Modèle mis à jour avec des embeddings de tokens redimensionnés et le token EOS configuré. tokenizer (PreTrainedTokenizerBase) : Tokenizer mis à jour avec le modèle de chat et les tokens spéciaux appliqués. added_tokens (list[int]) : Liste des tokens ajoutés au tokenizer à partir du tokenizer source.

Clone un modèle de chat d'un tokenizer source vers le tokenizer cible et met à jour le modèle en conséquence.

Cette fonction :

  • Copie le modèle de discussion du tokenizer source vers le tokenizer cible.
  • Ajoute les nouveaux jetons du tokeniseur source au tokeniseur cible.
  • Définit et synchronise le jeton EOS entre le tokenizer et le modèle.
  • Redimensionne les embeddings de jetons du modèle pour correspondre à la nouvelle taille du vocabulaire, en l'arrondissant éventuellement vers le haut à un multiple d'une valeur spécifiée. Dans de tels cas, des jetons fictifs sont ajoutés au tokenizer pour garantir que la taille du vocabulaire correspond aux dimensions des embeddings.

Exemple :

>>> from transformers import AutoModelForCausalLM, AutoTokenizer
>>> from trl import clone_chat_template

>>> model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3.2-1B")
>>> tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-3.2-1B")
>>> model, tokenizer, added_tokens = clone_chat_template(model, tokenizer, "Qwen/Qwen3-0.6B")

is_chat_template_prefix_preserving

trl.chat_template_utils.is_chat_template_prefix_preserving

< >

( processing_class: transformers.tokenization_utils_base.PreTrainedTokenizerBase | transformers.processing_utils.ProcessorMixin ) → bool

Paramètres

  • processing_class (PreTrainedTokenizerBase ou ProcessorMixin) — Instance de tokenizer ou de processeur à vérifier.

Retourne

bool

True si le modèle de chat conserve les préfixes, False sinon.

Vérifiez si le modèle de chat conserve les préfixes lorsqu'il est appliqué.

Un modèle de chat préservant le préfixe affiche les messages antérieurs de manière identique, indépendamment des messages qui suivent. Cette propriété est requise par _get_tool_suffix_ids, qui extrait les jetons de formatage des réponses d’outils en comparant les tokenisations avec et sans les messages d’outils ajoutés.

get_training_chat_template

trl.get_training_chat_template

< >

( processing_class: transformers.tokenization_utils_base.PreTrainedTokenizerBase | transformers.processing_utils.ProcessorMixin | None = Nonetokenizer: transformers.tokenization_utils_base.PreTrainedTokenizerBase | None = Nonerequire_prefix_preservation: bool = True ) → str or None

Paramètres

  • processing_class (PreTrainedTokenizerBase ou ProcessorMixin) — Instance de tokenizer ou de processeur à vérifier.
  • require_prefix_preservation (bool, facultatif, valeur par défaut True) — Indique si un modèle sans modèle d’entraînement stocké doit également préserver le préfixe pour être renvoyé tel quel. La perte uniquement sur l’assistant n’a besoin que des marqueurs, SFTTrainer le définit donc à False.

Retourne

str ou None

Modèle de conversation compatible avec l'entraînement, ou None si aucun correctif n'est nécessaire.

Obtenez un modèle de conversation compatible avec l'entraînement, si nécessaire.

Retourne un modèle de chat modifié qui préserve le préfixe et inclut les marqueurs {%% generation %%} / {%% endgeneration %%} pour le masquage de la perte uniquement sur les réponses de l'assistant. Un modèle avec un modèle d'entraînement stocké en reçoit toujours un, même s'il possède ses propres marqueurs. Retourne None si un autre modèle satisfait déjà les exigences. Les modèles pris en charge sont répertoriés dans Training templates.

Exemple :

>>> from trl.chat_template_utils import get_training_chat_template
>>> from transformers import AutoTokenizer

>>> tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen3-0.6B")
>>> messages1 = [
...     {"role": "user", "content": "What is 2 * 3?"},
...     {
...         "role": "assistant",
...         "content": "",
...         "tool_calls": [{"type": "function", "function": {"name": "multiply", "arguments": {"a": 2, "b": 3}}}],
...     },
... ]
>>> messages2 = messages1 + [
...     {"role": "tool", "name": "multiply", "content": "6"},
... ]
>>> tokenizer.apply_chat_template(messages1, tokenize=False)
'<|im_start|>user\nWhat is 2 * 3?<|im_end|>\n<|im_start|>assistant\n<think>\n\n</think>\n\n<tool_call>\n{"name": "multiply", "arguments": {"a": 2, "b": 3}}\n</tool_call><|im_end|>\n'

>>> tokenizer.apply_chat_template(messages2, tokenize=False, add_generation_prompt=True)
'<|im_start|>user\nWhat is 2 * 3?<|im_end|>\n<|im_start|>assistant\n<tool_call>\n{"name": "multiply", "arguments": {"a": 2, "b": 3}}\n</tool_call><|im_end|>\n<|im_start|>user\n<tool_response>\n6\n</tool_response><|im_end|>\n<|im_start|>assistant\n'

>>> #                                                        ^ think tags missing
>>> chat_template = get_training_chat_template(tokenizer)
>>> tokenizer.apply_chat_template(messages1, tokenize=False, chat_template=chat_template)
'<|im_start|>user\nWhat is 2 * 3?<|im_end|>\n<|im_start|>assistant\n<think>\n\n</think>\n\n<tool_call>\n{"name": "multiply", "arguments": {"a": 2, "b": 3}}\n</tool_call><|im_end|>\n'

>>> tokenizer.apply_chat_template(
...     messages2, tokenize=False, add_generation_prompt=True, chat_template=chat_template
... )
'<|im_start|>user\nWhat is 2 * 3?<|im_end|>\n<|im_start|>assistant\n<think>\n\n</think>\n\n<tool_call>\n{"name": "multiply", "arguments": {"a": 2, "b": 3}}\n</tool_call><|im_end|>\n<|im_start|>user\n<tool_response>\n6\n</tool_response><|im_end|>\n<|im_start|>assistant\n'
Update on GitHub