进阶内容——BYOT(自带模板,Bring Your Own Template)(99)
进阶内容——BYOT(自带模板,Bring Your Own Template)
许多语言模型,尤其是规模较小的模型,早在指令微调普及之前就已开发完成,因此它们没有对话(chat)或指令(instruct)版本。但这并不意味着你无法自行微调这些模型,也不代表你不能设计专属模板。
最小可行模板(MVT,minimum viable template)必须包含一个非常特殊的标识:响应模板(response template)。正如我们此前多次提到的,它的作用是分隔用户提示(user’s prompt)与助手补全内容(assistant’s completion)。此外,建议在模板中补全内容的末尾添加结束标识(EOS token)。其余内容均为可选,但模板的结构越清晰,效果通常越好。
在“自带格式(BYOFF)”部分中,我们使用了常规词汇作为响应模板。不过,大多数模板会采用特定标识(例如 <|assistant|>
),以避免模型在推理或生成过程中产生混淆。
无论模板采用何种结构,你都需要应对一个挑战:将这些额外标识添加到分词器(tokenizer)的词汇表中,同时可能还需添加到模型的嵌入层(embedding layer)和输出头(head)中。毕竟,模型需要能够理解这些新标识,并最终生成其中部分标识。
这一操作过程并非毫无特殊注意事项与潜在问题,因此我们将结合一个早于大语言模型(LLM)热潮的模型——我们的“老朋友”OPT-350M,通过实践来演示具体步骤。