Gemma 指令调优 (IT) 模型是使用特定的格式化程序进行训练的,该格式化程序会在训练和推理时为所有指令调优示例添加额外信息。该格式化程序有两个用途:
- 指明对话中的角色,例如系统、用户或助理角色。
- 区分对话中的对话回合,尤其是在多轮对话中。
下面,我们将指定 Gemma 使用的控制令牌及其用例。请注意,控制令牌在我们的分词器中预留,并且仅适用于我们的分词器。
- 用于指示用户转弯的令牌:
user
- 用于指示模型转换的令牌:
model
- 用于指示对话转换开始的令牌:
<start_of_turn>
- 用于指示对话回合结束的令牌:
<end_of_turn>
以下是一个示例对话:
<start_of_turn>user
knock knock<end_of_turn>
<start_of_turn>model
who is there<end_of_turn>
<start_of_turn>user
Gemma<end_of_turn>
<start_of_turn>model
Gemma who?<end_of_turn>
令牌 "<end_of_turn>\n"
是相应转弯的分隔符,提示前缀为 "<start_of_turn>model\n"
。这意味着,如果您想用“什么是克拉默尔规则?”这样的问题提示模型,则应改为按如下方式向模型提供数据:
"<start_of_turn>user
What is Cramer's Rule?<end_of_turn>
<start_of_turn>model"
请注意,如果您想使用自己的数据微调预训练的 Gemma 模型,则可以将任何此类架构用作控制令牌,前提是训练和推理用例之间保持一致。
系统指令
Gemma 的指令调优模型仅适用于两个角色:user
和 model
。因此,不支持 system
角色或系统转弯。
请直接在初始用户提示中提供系统级说明,而不是使用单独的系统角色。借助模型指令跟随功能,Gemma 能够有效解读指令。例如:
<start_of_turn>user
Only reply like a pirate.
What is the answer to life the universe and everything?<end_of_turn>
<start_of_turn>model
Arrr, 'tis 42,<end_of_turn>