成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

人工智能 新聞
來自馬里蘭州大學、紐約大學等機構的研究人員提出了名為NEFT(une)的微調方式。這是一種新的正則化技術,可以用于提高微調監督(SFT)模型的性能。

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

在7B參數量的Llama 2上甚至出現了性能翻倍的結果,Mistral也有四分之一的增長。

雖然這種方法用在監督微調階段,但RLHF模型也能從中受益。

來自馬里蘭州大學、紐約大學等機構的研究人員提出了名為NEFT(une)的微調方式。

這是一種新的正則化技術,可以用于提高微調監督(SFT)模型的性能。

這種方法已經被HuggingFace收錄進了TRL庫,只要import再加一行代碼就能調用。

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

圖片

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

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

向模型中加入噪聲

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

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

圖片

具體而言,訓練數據庫中的文本首先會被token化,并轉化為嵌入向量。

然后,系統會隨機生成一個噪聲向量,并用縮放器將噪聲調節成所設置的強度。

經過縮放后的噪聲會加入到嵌入向量中,作為模型的輸入,然后開始訓練。

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

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函數中的形參noise_alpha就是噪聲強度(系數),mag_norm則為實際過程中的噪聲范圍。

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

訓練模式下,new_func函數的返回值即為加入噪聲后的嵌入層。

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

下面的代碼是微調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()

而數據集方面,開發者一共使用了Alpaca、ShareGPT等四種不同數據集進行了微調。

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

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

那么,用NEFT方法調校過后的大模型,表現到底怎么樣呢?

性能最高提升1倍

研究團隊主要測試了模型調校前后生成的文本質量和對話能力。

其中文本質量主要基于AplacaEval數據集,使用ChatGPT和GPT-4評估。

用作參照的模型是Text-Davinci-003,訓練后的模型勝過TD3的比例即為評價指標。

為了節約資源,研究團隊先用ChatGPT判斷是自己來評價還是調用GPT-4,部分情況下還會人工評判。

結果在不同的訓練數據集中,Llama 2調整后都有至少10%的性能提升,在Alpaca數據集上更是直接翻倍。

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

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

結果發現,NEFT調整后模型的聊天能力同樣相比Evol-Instruct有進一步提升。

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

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

實驗過程中,作者還發現,模型生成的文本和并不是照搬訓練數據,提示了模型具有一定泛化能力。

為了證實這一點,作者對模型損失進行了評估,結果發現測試數據集損失低于訓練數據,證實了這一觀點。

此外作者發現,經NEFT調整之后,模型生成的文本不僅質量提高,長度也有所增加,而且增加的并非重復內容。

為了確認文本質量的提高是加入噪聲的作用而不是由文本長度的增加所導致,研究人員又進行了消融實驗。

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

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

責任編輯:張燕妮 來源: 量子位
相關推薦

2020-08-12 14:54:00

Python代碼開發

2016-12-02 08:53:18

Python一行代碼

2013-07-09 14:53:06

編程

2024-12-30 09:03:09

2025-02-12 09:55:01

Java代碼性能

2015-07-31 09:58:12

360騰訊Windows 10

2019-04-10 09:39:42

代碼存儲系統RPC

2014-07-10 10:15:41

代碼代碼庫

2023-11-10 09:41:44

Python代碼

2012-05-21 22:04:02

Android

2015-08-18 11:05:47

EdgeWindows 10虛擬機

2014-02-12 13:43:50

代碼并行任務

2022-04-09 09:11:33

Python

2017-04-05 11:10:23

Javascript代碼前端

2021-05-11 20:46:17

Python代碼分類

2021-08-23 17:49:02

代碼開發模型

2011-07-19 09:51:32

性能優化Designing FAndroid

2011-07-10 00:29:18

PHP

2023-02-01 12:08:15

2012-03-07 09:41:01

Java
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 狠狠操狠狠干 | 国产在线www | 欧美一级免费黄色片 | 日韩在线免费电影 | 男人的天堂在线视频 | 国际精品久久 | 少妇一区在线观看 | 伊人精品视频 | 国产网站在线免费观看 | 一本一道久久a久久精品综合蜜臀 | 色就是色欧美 | 福利社午夜影院 | 欧美 日韩 国产 成人 在线 | www.黄色片视频 | 日韩在线小视频 | 羞羞视频在线网站观看 | 国产成人精品a视频一区www | 天天草天天干天天 | 九色www | 精久久久 | 久久久久久国产精品免费免费狐狸 | 亚洲天堂久久 | www.国产.com| 鲁一鲁资源影视 | 日韩欧美在线免费 | 欧美综合一区二区 | av中文字幕在线 | 91免费观看国产 | 精品久久久久久久久久久久 | 羞羞视频网站免费观看 | 久久综合一区二区三区 | www.一区二区三区 | 精品9999 | 午夜影院在线播放 | 97精品一区二区 | 国产9999精品 | www.jizzjizz| 国产9999精品 | 欧美中文字幕一区二区三区 | 亚洲精品日韩精品 | 国产色99 |