本文來自于微信公眾號 量子位(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的效果。
文章內容僅供閱讀,不構成投資建議,請謹慎對待。投資者據此操作,風險自擔。
海報生成中...
海藝AI的模型系統在國際市場上廣受好評,目前站內累計模型數超過80萬個,涵蓋寫實、二次元、插畫、設計、攝影、風格化圖像等多類型應用場景,基本覆蓋所有主流創作風格。
IDC今日發布的《全球智能家居清潔機器人設備市場季度跟蹤報告,2025年第二季度》顯示,上半年全球智能家居清潔機器人市場出貨1,2萬臺,同比增長33%,顯示出品類強勁的市場需求。