交通运输部:10 月 3 日全社会跨区域人员流动量超 2.8 亿人次,同比增长 4.3%2024 年日本二手智能手机销量预计达 315 万部:同比增长 15.5%,连续 6 年创新高索尼 Headphones Connect 应用更名为 Sound ConnectElecom 宣布 12 月发布 USB4 2.0 Type-C 线:80Gbps 数据传输,最高 240W 充电闪送登陆纳斯达克:市值超11亿美元故意找人抹黑董宇辉?东方甄选辟谣:某主播家庭纠纷价格战、智驾战、盈利战,深蓝汽车如何打赢?国庆假期点燃科技消费热 146家京东3C数码新店开业人气爆棚安慕斯亮相第二届东城区“龙潭杯”中小学围棋棋王赛京东“天命人向西游”活动受热捧 打开京东搜“天命人”可一元抢万件联名好礼京东闪电新品季火热进行中 买科沃斯地宝T50 PRO可价保11.11安徽消费者领补贴后来京东买电脑更划算 惠普暗影精灵10主机立减1751元跟着京东打卡《黑神话:悟空》“现实版” 这份国庆出游路线请查收国际老年人日来京东为长辈办理联通“孝心卡” 手机位置实时提醒 看护更方便国庆假期来京东领厦门补贴买电脑更划算 ThinkBook 16p到手只要7199元京东带来路由器价保11.11权益 即日起买路由器来京东更划算真五折福利限时秒杀 京东采销带你云逛装备前线外设展联想YOGA AIPC系列新品亮相,引领智能办公新体验丰田比亚迪宝马领克smart等五大汽车品牌召回23万多辆车受邀参加云栖大会,Soul App构建人与AI共存的社交网络
  • 首页 > 云计算频道 > 大模型

    一行代码提高大模型10%性能,开发者:免费午餐

    2023年10月23日 16:27:08   来源:微信公众号量子位

      本文来自于微信公众号 量子位(ID:QbitAI),作者:克雷西。

      大模型微调有“免费的午餐”了,只要一行代码就能让性能提升至少10%。

      在7B参数量的Llama2上甚至出现了性能翻倍的结果,Mistral也有四分之一的增长。

      虽然这种方法用在监督微调阶段,但RLHF模型也能从中受益。

      来自马里兰州大学、纽约大学等机构的研究人员提出了名为NEFT(une)的微调方式。

      这是一种新的正则化技术,可以用于提高微调监督(SFT)模型的性能。

      这种方法已经被HuggingFace收录进了TRL库,只要import再加一行代码就能调用。

      NEFT不仅操作简便,而且没有显著的成本增加,作者称看起来是个“免费的午餐”。

      有网友试着用这种方法微调了基于Guanaco(一种羊驼家族模型)的Mistral-7B,结果性能提升明显。

      那么,NEFTune是如何用一行代码给一众大模型“打鸡血”的呢?向模型中加入噪声

      NEFTune的全称是Noisy Embedding Fine Tuning,即“带噪声的嵌入式微调”。

      开发者认为,过拟合现象是限制大模型性能的一大因素,因此采用在训练阶段向嵌入层中加入噪声的方式来避免过拟合的出现,从而提高性能。

      具体而言,训练数据库中的文本首先会被token化,并转化为嵌入向量。

      然后,系统会随机生成一个噪声向量,并用缩放器将噪声调节成所设置的强度。

      经过缩放后的噪声会加入到嵌入向量中,作为模型的输入,然后开始训练。

      每次迭代训练时,都会生成新的噪声并加入到嵌入层中。 fromtorch.nnimportfunctionalasF

      defNEFTune(model,noise_alpha=5)

      defnoised_embed(orig_embed,noise_alpha):

      defnew_func(x):

      ifmodel.training:

      embed_init=orig_embed(x)

      dims=torch.tensor(embed_init.size(1)*embed_init.size(2))

      mag_norm=noise_alpha/torch.sqrt(dims)

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

      else:

      returnorig_embed(x)

      returnnew_func

      model.base_model.model.model.embed_tokens.forward=noised_embed(model.base_model.model.model.embed_tokens,noise_alpha)

      returnmodel

      这段代码中,NEFTune函数中的形参noise_alpha就是噪声强度(系数),mag_norm则为实际过程中的噪声范围。

      而NEFT只有在训练过程中才会向模型中加入噪声,推理阶段无此过程,代码中的if语句起到的就是这个作用。

      训练模式下,new_func函数的返回值即为加入噪声后的嵌入层。

      贴出这段代码是为了讲解需要,如果只是想调用NEFT,可以不必使用上面的完整代码,直接从TRL库中调用就可以了。

      下面的代码是微调OPT-350M模型的一个示例: fromdatasetsimportload_dataset

      fromtrlimportSFTTrainer

      dataset=load_dataset("imdb",split="train")

      trainer=SFTTrainer(

      "facebook/opt-350m",

      train_dataset=dataset,

      dataset_text_field="text",

      max_seq_length=512,

      )

      trainer.train()

      而数据集方面,开发者一共使用了Alpaca、ShareGPT等四种不同数据集进行了微调。

      作者介绍,选择这些数据的原因包括它们比较著名、曾成为SOTA等等。

      此外出于硬件性能考虑,实验过程中所选择的都是单轮对话数据集。

      那么,用NEFT方法调校过后的大模型,表现到底怎么样呢? 性能最高提升1倍

      研究团队主要测试了模型调校前后生成的文本质量和对话能力。

      其中文本质量主要基于AplacaEval数据集,使用ChatGPT和GPT-4评估。

      用作参照的模型是Text-Davinci-003,训练后的模型胜过TD3的比例即为评价指标。

      为了节约资源,研究团队先用ChatGPT判断是自己来评价还是调用GPT-4,部分情况下还会人工评判。

      结果在不同的训练数据集中,Llama2调整后都有至少10%的性能提升,在Alpaca数据集上更是直接翻倍。

      推广到OPT和Llama1,NEFT方法同样可以带来一定的性能提升。

      而用于评估模型聊天能力的,则是OpenLLM Leadorboard中的任务。

      结果发现,NEFT调整后模型的聊天能力同样相比Evol-Instruct有进一步提升。

      在成本没有显著增加的情况下,提高文本质量和聊天能力,是否会导致其他能力的下降,作者对此也进行了评估。

      结果显示,NEFT方法在不同的数据集和模型上,对模型的其他能力均没有显著影响。

      实验过程中,作者还发现,模型生成的文本和并不是照搬训练数据,提示了模型具有一定泛化能力。

      为了证实这一点,作者对模型损失进行了评估,结果发现测试数据集损失低于训练数据,证实了这一观点。

      此外作者发现,经NEFT调整之后,模型生成的文本不仅质量提高,长度也有所增加,而且增加的并非重复内容。

      为了确认文本质量的提高是加入噪声的作用而不是由文本长度的增加所导致,研究人员又进行了消融实验。

      结果显示,只是强制模型生成更长的文本无法达到NEFT的效果。

      文章内容仅供阅读,不构成投资建议,请谨慎对待。投资者据此操作,风险自担。

    即时

    新闻

    敢闯技术无人区 TCL实业斩获多项AWE 2024艾普兰奖

    近日,中国家电及消费电子博览会(AWE 2024)隆重开幕。全球领先的智能终端企业TCL实业携多款创新技术和新品亮相,以敢为精神勇闯技术无人区,斩获四项AWE 2024艾普兰大奖。

    企业IT

    重庆创新公积金应用,“区块链+政务服务”显成效

    “以前都要去窗口办,一套流程下来都要半个月了,现在方便多了!”打开“重庆公积金”微信小程序,按照提示流程提交相关材料,仅几秒钟,重庆市民曾某的账户就打进了21600元。

    研究

    2024全球开发者先锋大会即将开幕

    由世界人工智能大会组委会、上海市经信委、徐汇区政府、临港新片区管委会共同指导,由上海市人工智能行业协会联合上海人工智能实验室、上海临港经济发展(集团)有限公司、开放原子开源基金会主办的“2024全球开发者先锋大会”,将于2024年3月23日至24日举办。