TRL documentation
Utilitas template chat
Utilitas template chat
Untuk ringkasan tentang template chat yang disertakan dengan TRL dan alasan di balik patch pelatihan, lihat Template Chat.
clone_chat_template
trl.clone_chat_template
< source >( model: PreTrainedModeltokenizer: PreTrainedTokenizerBasesource_tokenizer_path: strresize_to_multiple_of: int | None = 64 ) → model (PreTrainedModel)
Parameter
- model (PreTrainedModel) — Model yang akan diperbarui.
- tokenizer (PreTrainedTokenizerBase) — Tokenizer yang akan diperbarui.
- source_tokenizer_path (
str) — Path atau identifier dari pretrained tokenizer yang akan dikloning. - resize_to_multiple_of (
intatauNone, opsional, default64) — Lapisan embedding akan di-resize ke ukuran kosakata baru. Jika ini bukanNone, ukuran kosakata baru akan dibulatkan ke atas ke kelipatan terdekat dari nilai ini.
Mengembalikan
model (PreTrainedModel)
Model diperbarui dengan token embeddings yang di-resize dan token EOS yang dikonfigurasi.
tokenizer (PreTrainedTokenizerBase):
Tokenizer diperbarui dengan chat template dan special tokens yang diterapkan.
added_tokens (list[int]):
Daftar token yang ditambahkan ke tokenizer dari tokenizer sumber.
Mengklon template chat dari tokenizer sumber ke tokenizer target dan memperbarui model secara sesuai.
Fungsi ini:
- Menyalin template chat dari tokenizer sumber ke tokenizer target.
- Menambahkan token baru apa pun dari tokenizer sumber ke tokenizer target.
- Mengatur dan menyinkronkan token EOS di antara tokenizer dan model.
- Mengubah ukuran token embeddings model agar sesuai dengan ukuran kosakata baru, dengan opsi pembulatan ke atas menjadi kelipatan dari nilai yang ditentukan. Dalam kasus seperti itu, token dummy ditambahkan ke tokenizer untuk memastikan ukuran kosakata sesuai dengan dimensi embedding.
Contoh:
>>> 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
Periksa apakah template chat mempertahankan prefiks saat diterapkan.
Template chat yang mempertahankan prefiks merender pesan-pesan sebelumnya secara identik terlepas dari pesan apa pun yang mengikutinya. Sifat ini diperlukan oleh _get_tool_suffix_ids, yang mengekstrak token format respons alat dengan membandingkan tokenisasi dengan dan tanpa pesan alat yang ditambahkan.
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 = None ) → str or None
Dapatkan template chat yang kompatibel dengan pelatihan, jika diperlukan.
Mengembalikan template chat yang telah di-patch, bersifat prefix-preserving, dan mencakup penanda {%% generation %%} / {%% endgeneration %%} untuk masking loss khusus asisten. Mengembalikan None jika template sudah memenuhi kedua persyaratan tersebut.
Template yang didukung tercantum dalam Training templates.
Contoh:
>>> 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'