精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

大模型微調(diào)樣本構(gòu)造的trick

深度學(xué)習(xí)自然語言處理 ? 來源:包包算法筆記 ? 2023-07-10 11:32 ? 次閱讀

開局一道面試題。

面試官:大模型微調(diào)如何組織訓(xùn)練樣本?

你:大模型訓(xùn)練一問一答,一指令一輸出,問題和指令可以作為prompt輸入,答案作為輸出,計算loss的部分要屏蔽掉pad token。

面試官:多輪對話如何組織訓(xùn)練樣本呢?

你:假設(shè)多輪為Q1A1/Q2A2/Q3A3,那么可以轉(zhuǎn)化成 Q1—>A1, Q1A1Q2->A2, Q1A1Q2A2Q3->A3三條訓(xùn)練樣本。

面試官:這樣的話一個session變成了三條數(shù)據(jù),并且上文有依次重復(fù)的情況,這樣會不會有啥問題?

你:數(shù)據(jù)中大部分都是pad token,訓(xùn)練數(shù)據(jù)利用效率低下。另外會有數(shù)據(jù)重復(fù)膨脹的問題,訓(xùn)練數(shù)據(jù)重復(fù)膨脹為 session數(shù)量*平均輪次數(shù),且上文有重復(fù)部分,訓(xùn)練效率也會低下。

面試官:你也意識到了,有什么改進(jìn)的方法嗎?

你:有沒有辦法能一次性構(gòu)造一個session作為訓(xùn)練樣本呢?(思索)

面試官:提示你下,限制在decoder-only系列的模型上,利用模型特性,改進(jìn)樣本組織形式。

對于這個問題,我們思考下decoder-only模型有啥特點(diǎn),第一點(diǎn)很關(guān)鍵的是其attention形式是casual的,casual簡單理解就是三角陣,單個token只能看到其上文的信息

如圖所示:

c57439aa-1ece-11ee-962d-dac502259ad0.png

其二是postion_id是只有token次序含義而無需特定指代信息,(區(qū)別于GLM模型需要postion_id來標(biāo)識生成span的位置等特殊的要求)。

有了這兩點(diǎn)我們就可以設(shè)想,如果構(gòu)造多輪對話樣本的input為 Q1 A1 Q2 A2 Q3 A3 ,在計算loss的時候,只需要計算 A1 A2 和 A3 部分,豈不是就可以進(jìn)行session級別的訓(xùn)練了?

嗯為什么原來的chatglm不能用這種形式呢,雖然prefix attention可以推廣為適應(yīng)多輪訓(xùn)練的prefix attention形式,如圖:

c58d526e-1ece-11ee-962d-dac502259ad0.jpg

但是由于其postition id 無法簡單按次序推廣,故不能高效訓(xùn)練,這也是chatglm初代的很大的一個問題,導(dǎo)致后續(xù)微調(diào)的效果都比較一般。

現(xiàn)在chatglm2的代碼針對這兩個問題已經(jīng)進(jìn)行了改善,可以認(rèn)為他就是典型的decoder-only模型了,具體表現(xiàn)為推斷時候attention 是casual attention的形式,position id也退化為token次序增長。

那么好了,萬事具備,只欠東風(fēng)。我們據(jù)此實現(xiàn)了chatglm2-6b的代碼微調(diào)。其核心代碼邏輯為處理樣本組織的邏輯,其他的就是大模型微調(diào),大同小異了。

conversation=''
input_ids = []
labels = []
eos_id = tokenizer.eos_token_id
turn_idx = 0
for sentence in examples[prompt_column][i]:
    sentence_from = sentence["from"].lower()
    sentence_value = '[Round {}]

問:'.format(turn_idx) + sentence["value"] + '

答:' if sentence_from == 'human' else sentence["value"]+'

'
    conversation += sentence_value
    sentence_ids = tokenizer.encode(sentence_value, add_special_tokens=False)  
    label = copy.deepcopy(sentence_ids) if sentence_from != 'human' else [-100] * len(sentence_ids)               
    input_ids += sentence_ids 
    labels += label
    if sentence_from != 'human':
        input_ids += [eos_id]
        labels += [eos_id]
        turn_idx += 1
input_ids=tokenizer.encode('')+input_ids#addgmaskbos
labels =  [-100] * 2 + labels# #add padding
pad_len = max_seq_length - len(input_ids)
input_ids = input_ids + [eos_id] * pad_len 
labels = labels + [-100] * pad_len

其中有幾個關(guān)鍵的地方,就是在開頭要加上 bos和gmask,遵循模型原來的邏輯。問答提示詞和輪次prompt,還有兩個 保持和原模型保持一致,最后屏蔽掉pad部分的loss計算。

實測訓(xùn)練效果如下:

c5c0e598-1ece-11ee-962d-dac502259ad0.jpg

同樣的數(shù)據(jù)在chatglm1上 train loss只能降到2.x左右,同時評估測試集結(jié)果,在同樣的數(shù)據(jù)上rouge等指標(biāo)都有不小的提升。

我們再仔細(xì)回顧下,對話session級別訓(xùn)練和拆開訓(xùn)練從原理上有啥區(qū)別?

1.session級別訓(xùn)練,效果之一為等價batchsize變大(1個batch可以塞下更多樣本),且同一通對話產(chǎn)生的樣本在一個bs內(nèi)。

2. session級別的不同輪次產(chǎn)生的梯度是求平均的,拆開輪次構(gòu)造訓(xùn)練是求和的,這樣除了等價于lr會變大,還會影響不同輪次token權(quán)重的分配,另外還會影響norm的計算。

我們用一個簡化地例子定量分析下,我們假設(shè)兩條訓(xùn)練樣本分為 1.問:A 答:xx 2.問: A答:xx 問: B答:xx問: C答:xx 則session級別訓(xùn)練影響梯度為 (Ga+(Ga +Gb + Gc)/3)/2。對 A,B,C影響的權(quán)重分別為,2/3 1/6 1/6。 拆開訓(xùn)練為(Ga+Ga+ (Ga+Gb)/2+(Ga+Gb+ Gc)/3)/4。對 A,B,C影響的權(quán)重分別為,17/24 5/24 1/12。 從上面的權(quán)重分布來看,session級別靠后的輪次影響權(quán)重要比拆開更大。這也是更合理的,因為大部分場景下,開場白都是趨同和重復(fù)的。 一點(diǎn)小福利,以上面試題對應(yīng)的ChatGLM2-6B微調(diào)完整的代碼地址為: https://github.com/SpongebBob/Finetune-ChatGLM2-6B

實現(xiàn)了對于 ChatGLM2-6B 模型的全參數(shù)微調(diào),主要改進(jìn)點(diǎn)在多輪對話的交互組織方面,使用了更高效的session級別高效訓(xùn)練,訓(xùn)練效果相比原版ChatGLM-6B有較大提升。

這可能是目前全網(wǎng)效果最好的ChatGLM2-6B全參數(shù)微調(diào)代碼。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    6892

    瀏覽量

    88827
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4748

    瀏覽量

    68355
  • 大模型
    +關(guān)注

    關(guān)注

    2

    文章

    2328

    瀏覽量

    2483

原文標(biāo)題:大模型微調(diào)樣本構(gòu)造的trick

文章出處:【微信號:zenRRan,微信公眾號:深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    一種信息引導(dǎo)的量化后LLM微調(diào)新算法IR-QLoRA

    模型應(yīng)用開卷,連一向保守的蘋果,都已釋放出發(fā)展端側(cè)大模型的信號。 問題是,大語言模型(LLM)卓越的表現(xiàn)取決于“力大磚飛”,如何在資源有限的環(huán)境中部署大模型并保障性能,仍然頗具挑戰(zhàn)。
    的頭像 發(fā)表于 11-19 17:16 ?146次閱讀
    一種信息引導(dǎo)的量化后LLM<b class='flag-5'>微調(diào)</b>新算法IR-QLoRA

    大語言模型如何開發(fā)

    大語言模型的開發(fā)是一個復(fù)雜且細(xì)致的過程,涵蓋了數(shù)據(jù)準(zhǔn)備、模型架構(gòu)設(shè)計、訓(xùn)練、微調(diào)和部署等多個階段。以下是對大語言模型開發(fā)步驟的介紹,由AI部落小編整理發(fā)布。
    的頭像 發(fā)表于 11-04 10:14 ?86次閱讀

    示波器探頭補(bǔ)償微調(diào)旋鈕的作用

    示波器探頭補(bǔ)償微調(diào)旋鈕是一種用于調(diào)整示波器探頭性能的重要組件。 一、示波器探頭補(bǔ)償微調(diào)旋鈕的作用 校準(zhǔn)探頭性能 示波器探頭補(bǔ)償微調(diào)旋鈕的主要作用是校準(zhǔn)探頭的性能。由于探頭在生產(chǎn)過程中可能存在一定
    的頭像 發(fā)表于 08-09 11:31 ?574次閱讀

    模型為什么要微調(diào)?大模型微調(diào)的原理

    難以達(dá)到最佳性能。為了提升模型在特定任務(wù)上的表現(xiàn),微調(diào)(Fine-tuning)成為了一個關(guān)鍵步驟。本文將詳細(xì)探討大模型為什么要進(jìn)行微調(diào)以及微調(diào)
    的頭像 發(fā)表于 07-10 10:43 ?3554次閱讀

    【大語言模型:原理與工程實踐】大語言模型的應(yīng)用

    類任務(wù)上表現(xiàn)出色,甚至在零樣本條件下也能取得良好效果。另一類則需要逐步推理才能完成的任務(wù),類似于人類的系統(tǒng)2,如數(shù)字推理等。然而,隨著參數(shù)量的增加,大語言模型在這類任務(wù)上并未出現(xiàn)質(zhì)的飛躍,除非有精心
    發(fā)表于 05-07 17:21

    【大語言模型:原理與工程實踐】核心技術(shù)綜述

    其預(yù)訓(xùn)練和微調(diào),直到模型的部署和性能評估。以下是對這些技術(shù)的綜述: 模型架構(gòu): LLMs通常采用深層的神經(jīng)網(wǎng)絡(luò)架構(gòu),最常見的是Transformer網(wǎng)絡(luò),它包含多個自注意力層,能夠捕捉輸入數(shù)據(jù)中
    發(fā)表于 05-05 10:56

    基于雙級優(yōu)化(BLO)的消除過擬合的微調(diào)方法

    這篇論文試圖解決的問題是大型預(yù)訓(xùn)練模型在下游任務(wù)中進(jìn)行微調(diào)時出現(xiàn)的過擬合問題。盡管低秩適應(yīng)(LoRA)及其變體通過學(xué)習(xí)低秩增量矩陣有效地減少了與完全微調(diào)方法相比的可訓(xùn)練參數(shù)數(shù)量。
    的頭像 發(fā)表于 04-02 16:46 ?639次閱讀
    基于雙級優(yōu)化(BLO)的消除過擬合的<b class='flag-5'>微調(diào)</b>方法

    模型微調(diào)開源項目全流程

    對于所有“基座”(Base)模型,–template 參數(shù)可以是 default, alpaca, vicuna 等任意值。但“對話”(Chat)模型請務(wù)必使用對應(yīng)的模板。
    的頭像 發(fā)表于 03-13 14:56 ?817次閱讀
    大<b class='flag-5'>模型</b><b class='flag-5'>微調(diào)</b>開源項目全流程

    模型Reward Model的trick應(yīng)用技巧

    借助對比學(xué)習(xí)和元學(xué)習(xí)的方法。增加對比學(xué)習(xí)的loss,對比學(xué)習(xí)通過增強(qiáng)模型區(qū)分能力,來增強(qiáng)RM的對好壞的區(qū)分水平。元學(xué)習(xí)則使獎勵模型能夠維持區(qū)分分布外樣本的細(xì)微差異,這種方法可以用于迭代式的RLHF優(yōu)化。
    發(fā)表于 01-25 09:31 ?900次閱讀
    大<b class='flag-5'>模型</b>Reward Model的<b class='flag-5'>trick</b>應(yīng)用技巧

    2023年LLM大模型研究進(jìn)展

    作為做LLM應(yīng)用的副產(chǎn)品,我們提出了RLCD[11],通過同時使用正例和負(fù)例prompt,自動生成帶標(biāo)簽的生成樣本不需人工標(biāo)注,然后可以接大模型微調(diào),或者用于訓(xùn)練reward models
    發(fā)表于 01-19 13:55 ?470次閱讀

    教您如何精調(diào)出自己的領(lǐng)域大模型

    BERT和 GPT-3 等語言模型針對語言任務(wù)進(jìn)行了預(yù)訓(xùn)練。微調(diào)使它們適應(yīng)特定領(lǐng)域,如營銷、醫(yī)療保健、金融。在本指南中,您將了解 LLM 架構(gòu)、微調(diào)過程以及如何為 NLP 任務(wù)微調(diào)自己
    的頭像 發(fā)表于 01-19 10:25 ?1092次閱讀
    教您如何精調(diào)出自己的領(lǐng)域大<b class='flag-5'>模型</b>

    商湯科技與庫醇科技達(dá)成合作 為垂域大模型構(gòu)建高質(zhì)量大規(guī)模的領(lǐng)域微調(diào)數(shù)據(jù)

    數(shù)字化轉(zhuǎn)型,為垂域大模型構(gòu)建高質(zhì)量大規(guī)模的領(lǐng)域微調(diào)數(shù)據(jù)。 ? 本次合作將基于商湯通用大模型進(jìn)行二次開發(fā),給模型注入領(lǐng)域知識, 訓(xùn)練一個專門根據(jù)葡萄酒愛好者問題生成關(guān)鍵詞的大
    的頭像 發(fā)表于 01-10 09:46 ?678次閱讀
    商湯科技與庫醇科技達(dá)成合作 為垂域大<b class='flag-5'>模型</b>構(gòu)建高質(zhì)量大規(guī)模的領(lǐng)域<b class='flag-5'>微調(diào)</b>數(shù)據(jù)

    四種微調(diào)模型的方法介紹

    微調(diào)(Full Fine-tuning):全微調(diào)是指對整個預(yù)訓(xùn)練模型進(jìn)行微調(diào),包括所有的模型參數(shù)。在這種方法中,預(yù)訓(xùn)練
    發(fā)表于 01-03 10:57 ?2.4w次閱讀
    四種<b class='flag-5'>微調(diào)</b>大<b class='flag-5'>模型</b>的方法介紹

    模型微調(diào)數(shù)據(jù)選擇和構(gòu)造技巧

    比如我們會經(jīng)常遇到下面幾種情況: 1.數(shù)據(jù)要不要都去標(biāo)注,標(biāo)的比較慢咋辦? 2.我已經(jīng)有一批標(biāo)好的數(shù)據(jù)了,再去選哪些數(shù)據(jù)送標(biāo)注比較好? 3.能不能總結(jié)出一套數(shù)據(jù)構(gòu)造方面自動化的方法?
    的頭像 發(fā)表于 12-20 14:39 ?786次閱讀
    大<b class='flag-5'>模型</b><b class='flag-5'>微調(diào)</b>數(shù)據(jù)選擇和<b class='flag-5'>構(gòu)造</b>技巧

    一種新穎的大型語言模型知識更新微調(diào)范式

    我們使用LLAMA2-7B作為實驗的基礎(chǔ)模型。我們主要評估將舊知識更新為新知識的能力,因此模型將首先在舊知識上進(jìn)行為期3個時期的微調(diào)。表1中F-Learning中設(shè)置的超參數(shù)λ分別取值為0.3、0.7、0.1和1.5。
    發(fā)表于 12-01 15:10 ?422次閱讀
    一種新穎的大型語言<b class='flag-5'>模型</b>知識更新<b class='flag-5'>微調(diào)</b>范式