AI魔法学院客服
NEFTune:在Embedding中加入噪⾳提⾼指令微调效果!
本文介绍了NEFTune技术,即在训练过程中向嵌入向量添加均匀随机噪声,以改善大型语言模型(LLM)的微调性能。研究结果显示,使用NEFTune技术可以显著提高LLM在对话任务上的性能,同时保持对其他任务性能的稳定性。NEFTune技术是一种简单而有效的正则化方法,可以缓解模型在指令微调阶段的过拟合现象,并更好地利用预训练阶段的知识内容。虽然研究还存在一些局限性,但NEFTune的成功表明了算法和正则化对LLM训练的重要性。
 2024-04-08
收藏 复制地址分享海报

通常情况下,我们使⽤更好的基础模型、更⼤的数据集⼤⼩以及更⾼质量的数据来提升⼤型语⾔模型(LLM微调性能。但在这篇NEFTune: Noisy Embeddings Improve Instruction Finetuning中,研究⼈员尝试了⼀种不同且更简单的⽅法:在训练过程中向嵌入向量添加均匀随机噪声,可以显著改善语⾔模型微调的效果!

 


 

.引用

LLaMA2-7B这样的原始LLM中使⽤带有噪⾳嵌入进⾏微调时,其在AlpacaEval上的性能从29.8%提⾼到64.7%(图1)NEFTune导致在对话任务的性能上出现了显著的⻜跃,同时保持了对事实性问题回答基线的性能

这种技术似乎对LLM微调来说是⼀个零代价的策略!

 

1LLaMA2-7B模型在数据集微调时,使⽤和不使⽤NEFTuneAlpacaEval胜率百分比。

 

. NEFTUNE: 

Noisy Embeddings Improve Instruction Finetuning

1. 核⼼⽅法:

输入经过Embedding层后,再加入⼀个均匀分布的噪声,噪声的采样范围为 $$ [-\frac{L}{\sqrt{d α}} ,\frac{L}{\sqrt{d α}}] $$ 其中,α为可调节参数,L为输入⻓度,dEmbedding层的维度,具体如下: $$热点文档2.mdX_{emb}^{‘}=X_{emb}+Uniform(-\frac{L}{\sqrt{d α}} ,\frac{L}{\sqrt{d α}}) $$ 算法1详细描述了此⽅法。

 

核⼼⽅法的代码如下:

 

from torch.nn import functional as F

def NEFTune(model, noise_alpha=5)

def noised_embed(orig_embed, noise_alpha):

def new_func(x):

# during training, we add noise to the embedding

# during generation, we don't add noise to the embedding if model.training:

embed_init = orig_embed(x)

dims = torch.tensor(embed_init.size(1) * embed_init.size(2)) mag_norm = noise_alpha/torch.sqrt(dims)

return embed_init + torch.zeros_like(embed_init).uniform_(- mag_norm, mag_norm)

else:

return orig_embed(x)

return new_func

##### NOTE: this is for a LLaMA model #####

##### For a different model, you need to change the attribute path to the embedding #####

model.base_model.model.model.embed_tokens.forward =

noised_embed(model.base_model.model.model.embed_tokens, noise_alpha) return model

 

 

2. NEFTune的评估结果:

改善了文本质量

从表1中可以看出,在7B规模下,所有数据集都有所增加,平均增幅为15.1%。这表明,通过AlpacaEval的评估,使⽤NEFT进⾏训练显著提⾼了对话能⼒和回答质量。此外,从图2中可以看出,我们还可以看到在LLaMA-1OPT等旧模型上也有改进。有趣的是,根据ChatGPT的评估,我们在ShareGPT上的改进程度较其他数据集低⼀些。然⽽,这在GPT-4的评估中并没有反映出来。从表2中可以看出,在70B参数的Evol-Instruct模型中添加NEFTune后,胜率从75.03%上升到88.81%(增加13.78%)。

 

 

可以改善对话模型

从表2中可以看出,进⼀步对LLaMA-2-Chat7B)模型在Evol-Instruct上进⾏指令微调可以提⾼LLaMA-2-Chat的性能3%。这个模型已经经过了⼴泛的调优,使⽤了多轮的RLHF。然⽽,通过NEFTune,我们看到了额外的10%的性能提升,尽管我们注意到这个检查点模型的⼀些能⼒可能会受到影响,比如避免输出有害⾏为的能⼒。

 

保留了模型的能⼒

⼀个潜在的担忧是,NEFTune只是以牺牲其他经典技能为代价来提⾼对话能⼒。作者使⽤MMLUARCHellaSwagTruthfulQAOpenLLM Leaderboard上进⾏评估。图3显⽰得分保持稳定,NEFTune保留了模型的能⼒

 

适⽤于QLORA

本文亦展⽰了NEFTune通过使⽤Quantized Low Rank Adapters (QLORA) 在受限资源环境中提⾼性能的能⼒。表3显⽰,当使⽤QLORA进⾏训练时,AlpacaEval的性能在所有研究的模型规模和数据集上都有提升。

 

降低过拟合程度

将重点放在LLaMA-2-7B模型上,这些模型在Alpaca数据集上进⾏了使⽤和不使⽤NEFTune的训练。检查了这两个模型在Alpaca数据集上的训练损失(都没有添加噪声),以及在Evol-Instruct数据集上的测试损失。如图4所⽰,与没有使⽤NEFTune的基础模型相比,NEFTune模型的训练损失显著更⾼,但测试损失略低。这表明使⽤NEFTune时过拟合程度较低,泛化能⼒更好。

 

⻓度与标记多样性的比较

在表4和表6中,我们可以看到NEFT模型⽣成的输出比其对应的模型更⻓。然⽽,我们还可以看到,使⽤NEFT和不使⽤NEFT训练的模型的2-gram重复率以及整体的标记对数多样性⼏乎相同,这提供了证据表明更⻓的回答并没有以重复为代价,⽽是提供了额外的细节。

 

 

研究⻓度与性能之间的关联性

迫使标准模型⽣成与NEFT⼀样⻓的答案可以导致相对于标准微调的微⼩改进,⻅表5。对NEFT算法中使⽤均匀噪声和⾼斯噪声进⾏了消融实验,发现⾼斯噪声会导致更⻓的输出,但并不会带来性能上的改进,⻅表6。虽然更⻓的⽣成语句得分更⾼,但我们可以看到在⽣成过程中没有任何策略能够接近NEFTune模型的性能。

 

⼈⼯研究

作者还进⾏了⼀项⼩规模的⼈⼯研究。对于来⾃AlpacaEval140个指令的⼦样本,以随机顺序向注释者展⽰了⼀个由使⽤NEFTAlpaca数据上微调的LLaMA-2模型⽣成的回答,以及⼀个由不使⽤NEFT训练的模型⽣成的回答。⼈⼯注释者在88个实例中更喜欢NEFT22个实例则是平局。这相当于使⽤AlpacaEval公式(88/140-22))得出的74.6%的胜率得分。接下来,进⾏了⼀次修改版的AlpacaEval测试,这次测试呈现了标准微调模型和相同模型的NEFT版本的回答对,胜率得分⾼达92.80%


结论和局限性

NEFTune⽅法可以缓解模型在指令微调阶段的过拟合现象,可以更好的利⽤预训练阶段的知识内容。NEFTune的成功指出了算法和正则化LLM训练的重要性但此研究还存在⼀些局限性,比如:受到单个评判者(GPT-4)的偏⻅影响,计算资源有限导致未在多个数据集上验证NEFTune在更⼤的70B变体上的成功等。

 

参考链接:

论文链接:https://arxiv.org/pdf/2310.05914v2.pdf

代码链接: https://github.com/neelsjain/NEFTune

 

-End-

 

 

 

出自:https://mp.weixin.qq.com/s/C2Fcz-MTLWWBsf0qgKDU6A

本文档由网友提供,仅限参考学习,如有不妥或产生版权问题,请联系我们及时删除。 客服请加微信:skillupvip
评论
1 评论
包打听2024/4/10 17:23:44
**网友回帖**:

看到这篇关于NEFTune技术的文章,觉得挺有意思的。但是,有几个点想提一下。

首先,文章中提到NEFTune可以显著提高LLM在对话任务上的性能,这点很吸引人。但是,对于其他任务性能的稳定性保持,文章并没有给出具体的数值或比较,只是笼统地说保持稳定性,这点感觉不够说服力。

其次,文章提到NEFTune可以缓解模型在指令微调阶段的过拟合现象,但具体的实验对比和理论分析还不够深入。只是简单说是一种有效的正则化方法,没有深入解释为什么加入均匀随机噪声就能达到这个效果。

最后,虽然文章指出了研究的局限性,但整体上看,对NEFTune的评价似乎过于乐观了。算法和正则化对LLM训练的重要性毋庸置疑,但这篇文章似乎没有完全展示出NEFTune技术的全面性和普适性。

总之,文章提出了一个有趣的方法,但还需要更深入的研究和更全面的实验验证来支持其结论。
20秒读懂全文
伴读
**文章摘要**:
本文介绍了一种名为NEFTune的新技术,该技术通过在训练过程中向嵌入向量添加均匀随机噪声,显著改善了大型语言模型(LLM)的微调效果。实验表明,在LLaMA2-7B等原始LLM中使用带有噪声嵌入的微调,可以显著提高在AlpacaEval等数据集上的性能。这种技术似乎对LLM微调来说是一个零代价的策略,同时保持了模型的其他经典技能。

**关键词**:
One More Thing
One More Thing again ...

找组织,加入AI魔法学院群