自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一行代碼提高大模型10%性能,開發(fā)者:免費午餐

人工智能 新聞
來自馬里蘭州大學(xué)、紐約大學(xué)等機(jī)構(gòu)的研究人員提出了名為NEFT(une)的微調(diào)方式。這是一種新的正則化技術(shù),可以用于提高微調(diào)監(jiān)督(SFT)模型的性能。

大模型微調(diào)有“免費的午餐”了,只要一行代碼就能讓性能提升至少10%。

在7B參數(shù)量的Llama 2上甚至出現(xiàn)了性能翻倍的結(jié)果,Mistral也有四分之一的增長。

雖然這種方法用在監(jiān)督微調(diào)階段,但RLHF模型也能從中受益。

來自馬里蘭州大學(xué)、紐約大學(xué)等機(jī)構(gòu)的研究人員提出了名為NEFT(une)的微調(diào)方式。

這是一種新的正則化技術(shù),可以用于提高微調(diào)監(jiān)督(SFT)模型的性能。

這種方法已經(jīng)被HuggingFace收錄進(jìn)了TRL庫,只要import再加一行代碼就能調(diào)用。

NEFT不僅操作簡便,而且沒有顯著的成本增加,作者稱看起來是個“免費的午餐”。

圖片

有網(wǎng)友試著用這種方法微調(diào)了基于Guanaco(一種羊駝家族模型)的Mistral-7B,結(jié)果性能提升明顯。

那么,NEFTune是如何用一行代碼給一眾大模型“打雞血”的呢?

向模型中加入噪聲

NEFTune的全稱是Noisy Embedding Fine Tuning,即“帶噪聲的嵌入式微調(diào)”。

開發(fā)者認(rèn)為,過擬合現(xiàn)象是限制大模型性能的一大因素,因此采用在訓(xùn)練階段向嵌入層中加入噪聲的方式來避免過擬合的出現(xiàn),從而提高性能。

圖片

具體而言,訓(xùn)練數(shù)據(jù)庫中的文本首先會被token化,并轉(zhuǎn)化為嵌入向量。

然后,系統(tǒng)會隨機(jī)生成一個噪聲向量,并用縮放器將噪聲調(diào)節(jié)成所設(shè)置的強度。

經(jīng)過縮放后的噪聲會加入到嵌入向量中,作為模型的輸入,然后開始訓(xùn)練。

每次迭代訓(xùn)練時,都會生成新的噪聲并加入到嵌入層中。

from torch.nn import functional as F

def NEFTune(model, noise_alpha=5)
    def noised_embed(orig_embed, noise_alpha):
        def new_func(x):
            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
    model.base_model.model.model.embed_tokens.forward = noised_embed(model.base_model.model.model.embed_tokens, noise_alpha)
return model

這段代碼中,NEFTune函數(shù)中的形參noise_alpha就是噪聲強度(系數(shù)),mag_norm則為實際過程中的噪聲范圍。

而NEFT只有在訓(xùn)練過程中才會向模型中加入噪聲,推理階段無此過程,代碼中的if語句起到的就是這個作用。

訓(xùn)練模式下,new_func函數(shù)的返回值即為加入噪聲后的嵌入層。

貼出這段代碼是為了講解需要,如果只是想調(diào)用NEFT,可以不必使用上面的完整代碼,直接從TRL庫中調(diào)用就可以了。

下面的代碼是微調(diào)OPT-350M模型的一個示例:

from datasets import load_dataset
from trl import SFTTrainer

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

trainer = SFTTrainer(
    "facebook/opt-350m",
    train_dataset=dataset,
    dataset_text_field="text",
    max_seq_length=512,
)
trainer.train()

而數(shù)據(jù)集方面,開發(fā)者一共使用了Alpaca、ShareGPT等四種不同數(shù)據(jù)集進(jìn)行了微調(diào)。

作者介紹,選擇這些數(shù)據(jù)的原因包括它們比較著名、曾成為SOTA等等。

此外出于硬件性能考慮,實驗過程中所選擇的都是單輪對話數(shù)據(jù)集。

那么,用NEFT方法調(diào)校過后的大模型,表現(xiàn)到底怎么樣呢?

性能最高提升1倍

研究團(tuán)隊主要測試了模型調(diào)校前后生成的文本質(zhì)量和對話能力。

其中文本質(zhì)量主要基于AplacaEval數(shù)據(jù)集,使用ChatGPT和GPT-4評估。

用作參照的模型是Text-Davinci-003,訓(xùn)練后的模型勝過TD3的比例即為評價指標(biāo)。

為了節(jié)約資源,研究團(tuán)隊先用ChatGPT判斷是自己來評價還是調(diào)用GPT-4,部分情況下還會人工評判。

結(jié)果在不同的訓(xùn)練數(shù)據(jù)集中,Llama 2調(diào)整后都有至少10%的性能提升,在Alpaca數(shù)據(jù)集上更是直接翻倍。

推廣到OPT和Llama 1,NEFT方法同樣可以帶來一定的性能提升。

而用于評估模型聊天能力的,則是OpenLLM Leadorboard中的任務(wù)。

結(jié)果發(fā)現(xiàn),NEFT調(diào)整后模型的聊天能力同樣相比Evol-Instruct有進(jìn)一步提升。

在成本沒有顯著增加的情況下,提高文本質(zhì)量和聊天能力,是否會導(dǎo)致其他能力的下降,作者對此也進(jìn)行了評估。

結(jié)果顯示,NEFT方法在不同的數(shù)據(jù)集和模型上,對模型的其他能力均沒有顯著影響。

實驗過程中,作者還發(fā)現(xiàn),模型生成的文本和并不是照搬訓(xùn)練數(shù)據(jù),提示了模型具有一定泛化能力。

為了證實這一點,作者對模型損失進(jìn)行了評估,結(jié)果發(fā)現(xiàn)測試數(shù)據(jù)集損失低于訓(xùn)練數(shù)據(jù),證實了這一觀點。

此外作者發(fā)現(xiàn),經(jīng)NEFT調(diào)整之后,模型生成的文本不僅質(zhì)量提高,長度也有所增加,而且增加的并非重復(fù)內(nèi)容。

為了確認(rèn)文本質(zhì)量的提高是加入噪聲的作用而不是由文本長度的增加所導(dǎo)致,研究人員又進(jìn)行了消融實驗。

結(jié)果顯示,只是強制模型生成更長的文本無法達(dá)到NEFT的效果。

論文地址:https://arxiv.org/abs/2310.05914

責(zé)任編輯:張燕妮 來源: 量子位
相關(guān)推薦

2020-08-12 14:54:00

Python代碼開發(fā)

2016-12-02 08:53:18

Python一行代碼

2025-02-12 09:55:01

Java代碼性能

2024-12-30 09:03:09

2013-07-09 14:53:06

編程

2019-04-10 09:39:42

代碼存儲系統(tǒng)RPC

2015-07-31 09:58:12

360騰訊Windows 10

2023-11-10 09:41:44

Python代碼

2014-07-10 10:15:41

代碼代碼庫

2021-08-23 17:49:02

代碼開發(fā)模型

2014-02-12 13:43:50

代碼并行任務(wù)

2022-04-09 09:11:33

Python

2017-04-05 11:10:23

Javascript代碼前端

2021-05-11 20:46:17

Python代碼分類

2012-05-21 22:04:02

Android

2015-08-18 11:05:47

EdgeWindows 10虛擬機(jī)

2011-07-10 00:29:18

PHP

2011-07-19 09:51:32

性能優(yōu)化Designing FAndroid

2023-02-01 12:08:15

2023-07-04 09:00:00

開發(fā)SPACE框架
點贊
收藏

51CTO技術(shù)棧公眾號