TRL documentation
Chat şablonu yardımcıları
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
< source >( 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 (
intveyaNone, isteğe bağlı, varsayılan64) — Gömme katmanı yeni sözlük boyutuna yeniden boyutlandırılır. Bu değerNonedeğ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
< source >( processing_class: transformers.tokenization_utils_base.PreTrainedTokenizerBase | transformers.processing_utils.ProcessorMixin ) → bool
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
< source >( 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 (
PreTrainedTokenizerBaseveyaProcessorMixin) — Kontrol edilecek tokenizer veya processor örneği. - require_prefix_preservation (
bool, isteğe bağlı, varsayılanTrue) — 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,SFTTrainerbunuFalseolarak 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'