LLM中如何添加special_token,并且尽可能保持原模型的训练效果
在SFT(Supervised Fine-Tuning)阶段为LLM添加special_token(例如用于分隔用户和助手的<|user|>,<|assistant|>
等)是一个非常常见的操作,但如果处理不当,确实会严重影响模型原有的性能。
核心问题在于:新添加的token在模型的词向量矩阵(Embedding Matrix)和输出层(LM Head)中没有对应的、经过预训练的向量,它们是“从零开始”的,这会给模型带来巨大的扰动。
为了尽可能保持原模型的训练效果,你需要遵循一套系统性的策略,核心思想是:让新token的初始状态尽可能“平滑”地融入现有模型,并通过高效的微调方式让模型“温柔”地学会其用法。
以下是详细的步骤、策略和代码示例:
参考链接:https://mp.weixin.qq.com/s/pmgKnMXrP9J01ocfe3zauA