吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

大模型微調樣本構造的trick

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

開局一道面試題。

面試官:大模型微調如何組織訓練樣本?

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

面試官:多輪對話如何組織訓練樣本呢?

你:假設多輪為Q1A1/Q2A2/Q3A3,那么可以轉化成 Q1—>A1, Q1A1Q2->A2, Q1A1Q2A2Q3->A3三條訓練樣本。

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

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

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

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

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

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

如圖所示:

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

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

有了這兩點我們就可以設想,如果構造多輪對話樣本的input為 Q1 A1 Q2 A2 Q3 A3 ,在計算loss的時候,只需要計算 A1 A2 和 A3 部分,豈不是就可以進行session級別的訓練了?

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

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

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

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

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

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

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

實測訓練效果如下:

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

同樣的數據在chatglm1上 train loss只能降到2.x左右,同時評估測試集結果,在同樣的數據上rouge等指標都有不小的提升。

我們再仔細回顧下,對話session級別訓練和拆開訓練從原理上有啥區別?

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

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

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

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

這可能是目前全網效果最好的ChatGLM2-6B全參數微調代碼。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    7145

    瀏覽量

    89587
  • 代碼
    +關注

    關注

    30

    文章

    4828

    瀏覽量

    69058
  • 大模型
    +關注

    關注

    2

    文章

    2551

    瀏覽量

    3172

原文標題:大模型微調樣本構造的trick

文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    【「基于大模型的RAG應用開發與優化」閱讀體驗】+大模型微調技術解讀

    今天學習<基于大模型的RAG應用開發與優化>這本書。大模型微調是深度學習領域中的一項關鍵技術,它指的是在已經預訓練好的大型深度學習模型基礎上,使用新的、特定任務相關的數據
    發表于 01-14 16:51

    《具身智能機器人系統》第7-9章閱讀心得之具身智能機器人與大模型

    的應用。MAML算法通過二階優化找到對任務變化敏感的模型參數,實現了快速適應。上下文學習則引入了注意力機制,使模型能夠根據當前場景動態調整行為策略。在預訓練-微調范式中,我們要注意任務表示的重要性:好的表示
    發表于 12-24 15:03

    名單公布!【書籍評測活動NO.52】基于大模型的RAG應用開發與優化

    你需要開發一個在線的自助產品咨詢工具,允許客戶使用自然語言進行交互式的產品問答,比如“請介紹一下您公司這款產品與××產品的不同之處”。為了讓客戶有更好的體驗,你決定使用大模型構造這樣的咨詢功能并將其嵌入
    發表于 12-04 10:50

    一種信息引導的量化后LLM微調新算法IR-QLoRA

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

    大語言模型如何開發

    大語言模型的開發是一個復雜且細致的過程,涵蓋了數據準備、模型架構設計、訓練、微調和部署等多個階段。以下是對大語言模型開發步驟的介紹,由AI部落小編整理發布。
    的頭像 發表于 11-04 10:14 ?214次閱讀

    chatglm2-6b在P40上做LORA微調

    背景: 目前,大模型的技術應用已經遍地開花。最快的應用方式無非是利用自有垂直領域的數據進行模型微調。chatglm2-6b在國內開源的大模型上,效果比較突出。本文章分享的內容是用
    的頭像 發表于 08-13 17:12 ?560次閱讀
    chatglm2-6b在P40上做LORA<b class='flag-5'>微調</b>

    示波器探頭補償微調旋鈕的作用

    示波器探頭補償微調旋鈕是一種用于調整示波器探頭性能的重要組件。 一、示波器探頭補償微調旋鈕的作用 校準探頭性能 示波器探頭補償微調旋鈕的主要作用是校準探頭的性能。由于探頭在生產過程中可能存在一定
    的頭像 發表于 08-09 11:31 ?799次閱讀

    模型為什么要微調?大模型微調的原理

    難以達到最佳性能。為了提升模型在特定任務上的表現,微調(Fine-tuning)成為了一個關鍵步驟。本文將詳細探討大模型為什么要進行微調以及微調
    的頭像 發表于 07-10 10:43 ?4574次閱讀

    【大語言模型:原理與工程實踐】大語言模型的應用

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

    【大語言模型:原理與工程實踐】大語言模型的評測

    大語言模型的評測是確保模型性能和應用適應性的關鍵環節。從基座模型微調模型,再到行業模型和整體能
    發表于 05-07 17:12

    【大語言模型:原理與工程實踐】大語言模型的基礎技術

    特定任務對模型進行微調。這種方法的成功不僅是自然語言處理發展的一個轉折點,還為許多現實世界的應用場帶來了前所未有的性能提升。從廣為人知的GPT到BERT,預訓練的模型參數量越來越大預訓練數據越來越多
    發表于 05-05 12:17

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

    其預訓練和微調,直到模型的部署和性能評估。以下是對這些技術的綜述: 模型架構: LLMs通常采用深層的神經網絡架構,最常見的是Transformer網絡,它包含多個自注意力層,能夠捕捉輸入數據中
    發表于 05-05 10:56

    基于雙級優化(BLO)的消除過擬合的微調方法

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

    揭秘大語言模型可信能力的五個關鍵維度

    不同于上述工作從待干預模型自身抽取引導向量,我們意在從LLMs預訓練過程的切片中構建引導向量來干預指令微調模型(SFT Model),試圖提升指令微調
    發表于 03-15 09:42 ?640次閱讀
    揭秘大語言<b class='flag-5'>模型</b>可信能力的五個關鍵維度

    模型微調開源項目全流程

    對于所有“基座”(Base)模型,–template 參數可以是 default, alpaca, vicuna 等任意值。但“對話”(Chat)模型請務必使用對應的模板。
    的頭像 發表于 03-13 14:56 ?983次閱讀
    大<b class='flag-5'>模型</b><b class='flag-5'>微調</b>開源項目全流程
    百家乐官网有诈吗| 如何看百家乐官网路| 有百家乐的棋牌游戏| 欢乐谷百家乐的玩法技巧和规则| 大发888 代充| 中金时时彩平台| 百家乐官网最新投注方法| 百家乐官网常用公式| 百家乐有好的投注法吗| 大发888鸿博博彩| 科技| 百家乐官网最佳注码法| 百家乐如何看面| 百家乐必赢| 新时代娱乐城| 网上百家乐官网骗钱| 百家乐庄闲的冷热| 百家乐真钱游戏下载| 大发888全球顶级游戏平台| 百家乐官网千术道具| 丽星百家乐官网的玩法技巧和规则 | 线上百家乐的玩法技巧和规则| 云鼎娱乐城信誉度| 百家乐官网赌博娱乐城大全| 百家乐娱乐城体育| 大发888在线客服| 百家乐官网如何稳赢| 百家乐官网免费改| 全讯网365| 怎么玩百家乐官网能赢钱| 百家乐视频软件下载| 真人娱乐场注册送现金| 百家乐官网赌博牌路分析| 现场百家乐牌路分析| 足球改单| 百家乐美女荷官| 棋牌新闻| 先锋百家乐官网的玩法技巧和规则| 太子百家乐娱乐城| 澳门百家乐官网游戏皇冠网| 百家乐游戏资料网|