<address id="rrvlh"></address>
<noframes id="rrvlh">

<noframes id="rrvlh"><form id="rrvlh"></form>
<address id="rrvlh"><listing id="rrvlh"></listing></address>

      <form id="rrvlh"></form>

          <address id="rrvlh"><address id="rrvlh"></address></address>
          <address id="rrvlh"></address>
          歡迎您來到廣州益夫辦公家具回收公司!

          手機版

          廣州GDYF辦公設備回收公司:一行代碼抬高大模型10%性能,開發者免費午餐
          時間:2023-10-24   編輯:admin

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

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

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

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

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

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

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

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

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

          向模型中擴大噪聲

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

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

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

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

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

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

          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模型的一個示例:

          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的效果。

          論文地址:

          https://arxiv.org/abs/2310.05914

          (投訴)

          AI正版系統源碼推薦:小狐貍GPT-AI付費創作系統+對接大陸各大接口

          上一篇:廣州GDYF辦公設備回收公司:近期小紅書7條運營心得,哪個行業博主更好變現?達人投放節奏?      下一篇:廣州GDYF辦公設備回收公司:“以舊換新”推動廢舊家電回收處理
          點擊這里給我發消息 點擊這里給我發消息
          免费乱理伦片在线观看