Cross-model Control: Improving Multiple Large Language Models in One-time Training
前言
一个很有想法的工作,直面当前低资源场景下微调迁移的困难及挑战,并采用一个小模型引导大模型的方式来实现跨模型的知识迁移。该工作中稿于NeurIPS 2024,并且获得了评审的一致好评。| Paper | https://arxiv.org/pdf/2410.17599 |
|---|---|
| Code | https://github.com/wujwyi/CMC |
| From | NeurIPS 2024 |
Abstract
LLMs之间知识的复用是一个挑战。本文提出CMC,采用一个轻量语言模型在一次训练中改进多个LLM。作者观察到微调前后不同模型的logit的偏移相似。基于此,作者整合了一个轻量级LLM,通过与冻结LLM一起训练,获得改变LLM输出的logits的能力。为了让这个模型适应不同词表,作者提出了一个新颖的token映射策略。作者对指令微调和遗忘任务进行了广泛的实验,证明了CMC的有效性。
Motivation
当前LLMs在pre-training过后,仍然面临着一些通用的优化需求,比如指令遵循,遗忘和去毒。但是:
- 现有的方法一次只能优化一个模型,更新的参数不能应用到不同结构的模型中。
- 有的方法可以实现同家族的模型共用,但是不能应用到不同词表的模型中。
这引出一个问题,当面临数据和计算资源匮乏的情况,如何复用其它模型的微调结果呢?

为此本文作者进行了实验观测,发现不同模型SFT后logits的偏移有极大相似性。这引出本文的Motivation:是否可以利用一个便携的模型来改变各种模型的输出逻辑,从而使各种模型能够通过该模型实现优化需求。
Solution

本文提出CMC,通过训练一个小语言模型提升多个LLMs。如上图所示。这个小语言模型和一个冻结的LLM一起训练,让其输出的logits能够改变LLM的logits分布。为了让该模型能够应用于不同词表的模型,本文提出了最小编辑距离前缀匹配策略,可以在token级别实现用户LLM和小语言模型词表的对齐。
CMC

在观测到不同LLM微调后logits偏移相似后,作者尝试采用一个delta模型来拟合LLM输出logits的偏移,如上图a所示。具体来说,作者将base模型冻结,训练delta模型的参数,在训练过程中,相同的prompt同时输入到两个模型中,然后将二者输出的logits相加,根据输出token的loss反传更新delta模型的参数。为了增强delta模型的适配性, 作者对LLM的logits应用LogSoftmax,以使LLM输出的logits映射到对数空间。
ζ t = M t ( x ) , ζ d = M d ( x ) ζ final = LogSoftmax ( ζ t ) + ζ d \begin{gathered} \zeta_t=\mathcal{M}_t(x), \quad \zeta_d=\mathcal{M}_d(x) \\ \zeta_{\text {final }}=\operatorname{LogSoftmax}\left(\zeta_t\right)+\zeta_d \end{gathered} ζt


3231

被折叠的 条评论
为什么被折叠?



