有一种新的有前景的方法可以在不修改 LLM 权重的情况下对其进行微调,称为代理调优(Liu 等人arxiv.org/abs/2401.08565 )。
它是如何工作的?这是一种简单的解码时方法,您可以在其中修改目标 LLM 的 logits。特别是,您可以计算较小的基础模型和微调模型之间的 logits 差异,然后将该差异应用于目标模型的 logits。
更具体地说,假设目标是改进大目标模型 (M1)。
主要思想是采用两个小模型:
- 小型基础型号(M2)
- 微调的基础模型 (M3)
然后,您只需将较小模型的预测(输出词汇表的对数)的差异应用于目标模型 M1。
改进后的目标模型的输出计算为 M1 *(x) = M1 (x) + [M3 (x) - M2 (x)]
根据实验结果,这种方法效果出奇的好。作者对此进行了测试
A. 指令调优
B. 领域适应
C. 针对特定任务的微调
为了简洁起见,只关注A点,下面是一个具体的例子:
-
目标是将 Llama 2 70B Base 模型改进到 Llama 2 70B Chat 的水平,但不执行任何 RLHF 从 Base -> Chat 获取模型。
-
他们采用了小 10 倍的 Llama 2 7B 模型,并对其进行了指令微调。
-
微调后,他们计算了 7B Base 和 7B Finetuned 之间输出词汇的 logits 差异
-
他们将 3) 的差异应用到 Llama 2 70B 基础模型。这使得 70B Base 模型的性能非常接近 70B Chat。
当然,这种方法唯一的警告是,较小的模型必须使用与较大模型相同的词汇进行训练。理论上,如