TRL documentation

Chat şablonu yardımcıları

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Chat şablonu yardımcıları

TRL ile birlikte gelen sohbet şablonlarının genel bir bakışını ve eğitim yamalarının arkasındaki gerekçeyi görmek için Sohbet Şablonları bölümüne bakın.

clone_chat_template

trl.clone_chat_template

< >

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

Parametreler

  • model (PreTrainedModel) — Model to update.
  • tokenizer (PreTrainedTokenizerBase) — Güncellenecek tokenizer.
  • source_tokenizer_path (str) — Klonlanacak önceden eğitilmiş tokenizer'ın yolu veya tanımlayıcısı.
  • resize_to_multiple_of (int veya None, isteğe bağlı, varsayılan 64) — Gömme katmanı yeni sözlük boyutuna yeniden boyutlandırılır. Bu değer None değilse, yeni sözlük boyutu bu değerin en yakın katına yuvarlanır.

Dönüş değeri

model (PreTrainedModel)

Boyutlandırılmış token gömme ve yapılandırılmış EOS token ile güncellenmiş model. tokenizer (PreTrainedTokenizerBase): Sohbet şablonu ve özel tokenlar uygulanan güncellenmiş tokenizer. added_tokens (list[int]): Kaynak tokenizer'dan tokenizer'a eklenen tokenların listesi.

Bir kaynak tokenizer'dan hedef tokenizer'a bir sohbet şablonu klonlar ve modeli buna göre günceller.

Bu fonksiyon:

  • Kaynak tokenizer'dan hedef tokenizer'a sohbet şablonunu kopyalar.
  • Kaynak belirteç ayrıştırıcıdaki (tokenizer) yeni belirteçleri hedef belirteç ayrıştırıcıya ekler.
  • EOS belirteçini belirleyici ve model arasında ayarlar ve senkronize eder.
  • Modelin token gömme katmanlarını yeni sözlük boyutuyla eşleşecek şekilde yeniden boyutlandırır; isteğe bağlı olarak bu boyutu, belirtilen bir değerin katına yuvarlar. Bu durumlarda, sözlük boyutunun gömme boyutlarıyla eşleşmesini sağlamak için tokenizatora sahte tokenlar eklenir.

Örnek:

>>> 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

Parametreler

  • processing_class (PreTrainedTokenizerBase veya ProcessorMixin) — Kontrol edilecek tokenizer veya processor örneği.

Dönüş değeri

bool

Sohbet şablonu önekleri koruyorsa True, aksi halde False.

Uygulandığında sohbet şablonunun önekleri koruyup korumadığını kontrol edin.

Önek koruyucu sohbet şablonu, ardından gelen mesajlardan bağımsız olarak önceki mesajları aynı şekilde işler. Bu özellik, _get_tool_suffix_ids tarafından gereklidir; bu fonksiyon, araç yanıt biçimlendirme belirteçlerini, araç mesajları eklenmiş ve eklenmemiş biçimlendirmeleri karşılaştırarak çıkarır.

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

Parametreler

  • processing_class (PreTrainedTokenizerBase veya ProcessorMixin) — Kontrol edilecek tokenizer veya processor örneği.
  • require_prefix_preservation (bool, isteğe bağlı, varsayılan True) — Depolanmış bir eğitim şablonu olmayan bir şablonun, olduğu gibi döndürülebilmesi için ayrıca önek koruyucu (prefix-preserving) olması gerekip gerekmediğini belirtir. Yalnızca asistan kaybı (assistant-only loss) işaretçileri (markers) gerektirdiğinden, SFTTrainer bunu False olarak ayarlar.

Dönüş değeri

str veya None

Eğitimle uyumlu sohbet şablonu, yama gerekmiyorsa None.

Gerekirse, eğitimle uyumlu bir sohbet şablonu alın.

Önek koruyucu ve yalnızca asistan için kayıp maskelenmesi için {%% generation %%} / {%% endgeneration %%} işaretçilerini içeren yamalı bir sohbet şablonu döndürür. Kayıtlı bir eğitim şablonu olan bir şablon, kendi işaretçilerine sahip olsa bile her zaman bunu alır. Gereksinimleri zaten karşılayan başka bir şablon varsa None döndürür. Desteklenen şablonlar Eğitim şablonları bölümünde listelenmiştir.

Örnek:

>>> 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