Gemma 格式和系统说明

Gemma 指令调优 (IT) 模型是使用特定的格式化程序进行训练的,该格式化程序会在训练和推理时为所有指令调优示例添加额外信息。该格式化程序有两个用途:

  1. 指明对话中的角色,例如系统用户助理角色。
  2. 区分对话中的对话回合,尤其是在多轮对话中。

下面,我们将指定 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 的指令调优模型仅适用于两个角色:usermodel。因此,不支持 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>