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

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

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

如何將ChatGPT的能力蒸餾到另一個(gè)大模型

深度學(xué)習(xí)自然語言處理 ? 來源:深度學(xué)習(xí)自然語言處理 ? 2023-06-12 15:06 ? 次閱讀

如何將ChatGPT的能力蒸餾到另一個(gè)大模型,是當(dāng)前許多大模型研發(fā)的研發(fā)范式。當(dāng)前許多模型都是采用chatgpt來生成微調(diào)數(shù)據(jù),如self instruct,然后加以微調(diào),這其實(shí)也是一種數(shù)據(jù)蒸餾的模擬路線。

不過,這種數(shù)據(jù)蒸餾的方式,只是單向的,并沒有進(jìn)行數(shù)據(jù)反饋。

最近的一篇文章《Lion: Adversarial Distillation of Closed-Source Large Language Model》 提出了一個(gè)將知識從一個(gè)復(fù)雜的、閉源的大型語言模型(LLM)轉(zhuǎn)移到一個(gè)緊湊的、開源的LLM的做法,其中加入了數(shù)據(jù)反饋的閉環(huán)機(jī)制,將蒸餾的指令分成困難和簡單兩類指令,并且逐步來生成困難指令有偏的引導(dǎo)開源LLM模型的學(xué)習(xí),取得了較好的效果。

論文地址:https://arxiv.org/pdf/2305.12870.pdf

fc6930ae-08ea-11ee-962d-dac502259ad0.png

整體框架AKD的工作如圖2所示,在一個(gè)迭代中分成三個(gè)階段:1)模仿階段,使學(xué)生的反應(yīng)與教師的反應(yīng)保持一致;2)辨別階段,識別困難指令;3)生成階段,產(chǎn)生新的困難指令,以升級對學(xué)生模型的挑戰(zhàn)。

該對抗性知識蒸餾框架可以被解釋為一個(gè)動態(tài)的最小-最大游戲:在模仿階段,對學(xué)生進(jìn)行微調(diào),使其與教師在硬樣本上的模型差異最小;在辨別和生成階段,根據(jù)學(xué)生模型的學(xué)習(xí)進(jìn)度,制作新的困難樣本,使模型差異最大化。

從教育的角度上來看,這種框架推動了學(xué)生模型去發(fā)現(xiàn)原本隱藏的知識,為完全理解鋪平道路,隨著訓(xùn)練的進(jìn)行,經(jīng)過幾次迭代,系統(tǒng)能夠最好能達(dá)到平衡狀態(tài)。這時(shí),學(xué)生模型已經(jīng)掌握了所有的硬樣本,裁判員R不再能夠區(qū)分學(xué)生S和教師T的模型。

為了驗(yàn)證方法的有效性,該框架將ChatGPT的知識轉(zhuǎn)移到LLaMA上,選擇Alpaca的訓(xùn)練數(shù)據(jù)(僅由175條手動選擇的種子指令生成)作為初始訓(xùn)練指令,并執(zhí)行三次AKD的迭代,總共訓(xùn)練了70K數(shù)據(jù),最終得到模型Lion,實(shí)驗(yàn)結(jié)果表明,7B模型Lion都表現(xiàn)出較好的性能。

本文對該工作的具體算法思想進(jìn)行介紹,供大家一起參考,其中關(guān)于各種prompt,包括打分prompt,指令擴(kuò)充prompt都是可以關(guān)注的點(diǎn)。

一、算法思想方法

利用一個(gè)復(fù)雜的教師模型T(x; θT)的知識,目標(biāo)是制作一個(gè)更輕便的學(xué)生模型S(x; θS)。

理想情況下,如果模型差異的期望值(表示教師T和學(xué)生S之間的預(yù)測差異)在統(tǒng)一數(shù)據(jù)分布上達(dá)到最小,那么學(xué)生模型就是最優(yōu)的。

受對抗性知識提煉(AKD)的啟發(fā),該框架轉(zhuǎn)向優(yōu)化期望值的上限--"難樣本 "上的模型差異期望值,其中教師T和學(xué)生S的表現(xiàn)差距相對較大。

這些 "難樣本 "傾向于主導(dǎo)模型差異的期望值。因此,通過在這些 "難樣本 "上對學(xué)生模型S進(jìn)行優(yōu)化,可以有效和高效地重新控制整體預(yù)期模型差異。

其基本原理是相當(dāng)直接,可以類比于現(xiàn)實(shí)世界的教育場景:持續(xù)關(guān)注學(xué)生認(rèn)為難以掌握的 "難 "知識,是提高學(xué)生能力的最有效方法。

fc79b1c2-08ea-11ee-962d-dac502259ad0.png

圖2描述了對抗性知識蒸餾的整個(gè)框架,它包含了一個(gè)迭代的三個(gè)階段:

1)模仿階段,使學(xué)生的反應(yīng)與教師的反應(yīng)相一致;

2)辨別階段,識別難樣本;

3)生成階段,產(chǎn)生新的硬樣本,以升級學(xué)生模型所面臨的挑戰(zhàn)。

1、初始化

如圖2所示,框架中建立了四個(gè)角色和兩個(gè)數(shù)據(jù)池,并使用使用LLaMA來初始化學(xué)生模型S。

通過使用ChatGPT來初始化教師模型T、裁判員R和生成器G,

該框架從一個(gè)給定的初始Train Pool XA = {xAi }i∈[1,NA]開始迭代,其中xAi是XA中的第i條指令,NA是XA中的樣本數(shù)。

Cache Pool XB的初始化與XA相同,由評估S和T性能的指令組成。

注意,這里的指令是由指令提示和實(shí)例輸入組成的,如下表所示:

fc92bb40-08ea-11ee-962d-dac502259ad0.png

2、模仿階段

損失函數(shù)采用Kullback-Leibler Divergence,即KL散度,用于量化教師模型T和學(xué)生模型S的輸出概率分布的差異。

因此,為了將教師的知識傳遞給學(xué)生,通過教師T向前傳播訓(xùn)練池XA中的指令,構(gòu)建訓(xùn)練數(shù)據(jù){xAi, T (xAi )}i∈[1,N A]。

有了這些訓(xùn)練數(shù)據(jù),其中xAi作為輸入,T(xAi )作為目標(biāo),通過最小化交叉熵?fù)p失來微調(diào)我們的學(xué)生模型S。

3、識別階段

圖2展示了從緩存池開始的判別階段,表示為XB。

大型語言模型如ChatGPT,有可能作為無偏見的裁判來衡量兩個(gè)不同的人工智能助手產(chǎn)生的回復(fù)質(zhì)量,也就是使用chatgpt進(jìn)行打分。

在具體實(shí)現(xiàn)上,將緩存池XB中的每條指令xBi通過教師T和學(xué)生S反饋,分別產(chǎn)生輸出T(xBi)和S(xBi)。然后要求裁判員R量化教師的響應(yīng)T(xBi)和學(xué)生的響應(yīng)S(xBi)之間的質(zhì)量差異,di用來表示這兩個(gè)分?jǐn)?shù)之間的差異。di的計(jì)算公司如下:

fcab5c36-08ea-11ee-962d-dac502259ad0.pngfcc29842-08ea-11ee-962d-dac502259ad0.png

上述過程是通過使用表2的提示模板來完成,該模板要求LLM考慮兩個(gè)回答的有用性、相關(guān)性、準(zhǔn)確性和詳細(xì)程度,并輸出兩個(gè)分?jǐn)?shù)。

兩個(gè)分?jǐn)?shù)之差,就是di,可以通過設(shè)置一個(gè)閾值τ(在實(shí)驗(yàn)中使用的是1.0),將困難的指令劃分為那些di≥τ的指令,而其他的則被識別為簡單的指令。

fcd02ad4-08ea-11ee-962d-dac502259ad0.png

圖3直觀地展示了在第一次迭代中哪些類型的指令被識別為困難指令。與cache池中的指令相比,被識別的羅曼指令的分布是非常不同的,它們更側(cè)重于復(fù)雜的任務(wù),如數(shù)學(xué)、編碼等。

4、生成階段

在仔細(xì)識別了困難指令之后,生成階段的目標(biāo)是產(chǎn)生反映這些困難指令所對應(yīng)的數(shù)據(jù)分布的樣本。

這個(gè)過程通過使用復(fù)雜的LLM作為生成器G來實(shí)現(xiàn),并從困難指令中隨機(jī)抽取一條指令,并提示生成器G生成一條新指令。新生成的指令需要與同一領(lǐng)域有關(guān),并與抽樣指令的任務(wù)類型相匹配,如下表3顯示了用于該提示的模板。

fcf065ba-08ea-11ee-962d-dac502259ad0.png

如圖3所示,指令要求新生成的硬性結(jié)構(gòu)的分布似乎與先前確定的硬性指令的分布相類似。為了減輕災(zāi)難性遺忘的問題并增加生成指令的多樣性,還從簡單指令中隨機(jī)抽出一條指令,并提示生成器G生成一條新的指令,該指令與抽出的指令屬于同一領(lǐng)域,但也呈現(xiàn)出更多的長尾分布,使用的指令模板如下所示:

fd112480-08ea-11ee-962d-dac502259ad0.png

為了控制迭代的比率,在每個(gè)迭代中,將N定義為新生成指令的總數(shù)量,然后在生成的困難指令和簡單指令之間保持1:1的比例。

為了保證多樣性,只有當(dāng)一條新指令與緩存池中任何現(xiàn)有結(jié)構(gòu)的ROUGE-L重疊度低于0.7時(shí),才會被視為有效。

最后,將對Train Pool進(jìn)行更新,用新生成的指令替換現(xiàn)有指令。同時(shí)通過加入這些新生成的指令來擴(kuò)充緩存池。

在具體訓(xùn)練過程中,該學(xué)生模型是用預(yù)先訓(xùn)練好的LLaMA 7B進(jìn)行初始化。Train Pool和Cache Pool用Alpaca的52K in-struction數(shù)據(jù)集進(jìn)行初始化。迭代總次數(shù)設(shè)置為3次,每次迭代增加6K新生成的指令,最終形成訓(xùn)練了70K數(shù)據(jù)。

在花費(fèi)方面,學(xué)生模型在8個(gè)A100 GPU上訓(xùn)練了3個(gè)epochs,請求使用gpt-3.5-turbo API大約36萬次,這個(gè)數(shù)字大約是WizardLM使用量624k的一半,產(chǎn)生了相當(dāng)大的費(fèi)用,接近500美元。

二、測試數(shù)據(jù)集與實(shí)驗(yàn)?zāi)P?/p>

1、數(shù)據(jù)集

評估LLM在各種任務(wù)中的功效是一個(gè)相當(dāng)大的挑戰(zhàn),因?yàn)椴煌娜蝿?wù)需要相當(dāng)不同的專業(yè)知識,而且許多任務(wù)不能用自動指標(biāo)來評估,在實(shí)驗(yàn)中采用了兩個(gè)著名的數(shù)據(jù)集:

Vicuna-Instructions:一個(gè)由GPT-4合成的數(shù)據(jù)集,包含80個(gè)基線模型認(rèn)為具有挑戰(zhàn)性的問題。該數(shù)據(jù)集橫跨九個(gè)不同的類別,即通用、知識、角色扮演、常識、費(fèi)米、反事實(shí)、編碼、數(shù)學(xué)和寫作。以用戶為導(dǎo)向的指導(dǎo)。

User oriented Instructions:一個(gè)人工組裝的數(shù)據(jù)集,包括252個(gè)結(jié)構(gòu),其動機(jī)是71個(gè)面向用戶的應(yīng)用,如Grammarly、StackOverflow、Overleaf。

2、對比模型

對比實(shí)驗(yàn)選用五個(gè)模型:

LLaMA:一個(gè)基礎(chǔ)語言模型的集合,參數(shù)范圍從7B到65B。它在公開可用的數(shù)據(jù)集上訓(xùn)練了數(shù)萬億個(gè)標(biāo)記,并被證明在多種基準(zhǔn)中優(yōu)于較大尺寸的LLM,如GPT-3(175B)。使用LLaMA 3的7B參數(shù)版本。

Alpaca:以LLaMA為基礎(chǔ),通過查詢OpenAI的text-davinci-003模型產(chǎn)生的52K個(gè)指令跟隨實(shí)例進(jìn)行微調(diào)。使用Alpaca 4的7B參數(shù)版本。

Vicuna:以LLaMA為基礎(chǔ),并根據(jù)從ShareGPT收集的7萬個(gè)用戶共享對話進(jìn)行了微調(diào)。使用FastChat 5的7B參數(shù)版本。

WizardLM:使用Evol-Instruct方法,將Alapca的52000條指令的例子引導(dǎo)到250000條更復(fù)雜的指令集中。使用WizardLM 6中的7B參數(shù)版本。

ChatGPT:通過監(jiān)督和強(qiáng)化學(xué)習(xí)技術(shù)進(jìn)行微調(diào),由人類培訓(xùn)師提供必要的反饋和指導(dǎo)。使用ChatGPT3.5 turbo版本。

3、評測結(jié)果

首先看自動化評估,使用GPT-4的方式進(jìn)行模型自動打分,用于評價(jià)在給定封閉集合上的性能表現(xiàn),對應(yīng)的prompt如下,采用與識別困難樣本的prompt一致。

fd31651a-08ea-11ee-962d-dac502259ad0.png

實(shí)現(xiàn)結(jié)果如下,GBS評測來看,Lion除了與ChatGPT有差距外,均好于其他模型。fd496106-08ea-11ee-962d-dac502259ad0.png

再看使用人工評價(jià)的方式,進(jìn)行對齊能力,如果一個(gè)聊天助手的特點(diǎn)是樂于助人、誠實(shí)和無害(HHH),則被認(rèn)為是一致的。這些標(biāo)準(zhǔn)被用來衡量人工智能(AI)系統(tǒng)與人類價(jià)值觀一致的程度。結(jié)果如下:

fd61e35c-08ea-11ee-962d-dac502259ad0.png

我們可以看到,Lion也能得到一個(gè)與自動化評測一致的效果。

下面再看一個(gè)具體的模型預(yù)測效果,這是個(gè)比較好的case:

fd8698aa-08ea-11ee-962d-dac502259ad0.png

總結(jié)

本文對《Lion: Adversarial Distillation of Closed-Source Large Language Model》這一工作進(jìn)行了介紹。

與Alpaca和WizardLM這樣只對學(xué)生模型進(jìn)行一次微調(diào)的方法相比,該工作提出的對抗性知識蒸餾方法采用了對學(xué)生模型的迭代更新,得到了更好的效果。

不過這種迭代方法也有一些現(xiàn)實(shí)問題,例如:

首先,不可避免地導(dǎo)致了較慢的迭代速度。

其次,與傳統(tǒng)的對抗性知識蒸餾方法不同的是,該方法使用一個(gè)黑箱和參數(shù)凍結(jié)的ChatGPT來扮演這個(gè)角色,LLM的質(zhì)量在新指令的生成中相當(dāng)重要。

另外,在評估方面,盡管利用GPT-4進(jìn)行的自動評估在評估聊天機(jī)器人的表現(xiàn)方面展示了良好的前景,但該技術(shù)尚未達(dá)到成熟和準(zhǔn)確的水平,特別是考慮到大型語言模型容易產(chǎn)生不存在的或 "幻覺 "的信息。此外,缺乏一個(gè)統(tǒng)一的標(biāo)準(zhǔn)來評估大型語言模型,這降低了基于人類的評估的說服力。

最后,為聊天機(jī)器人創(chuàng)建一個(gè)全面的、標(biāo)準(zhǔn)化的評估系統(tǒng)是一個(gè)普遍的研究挑戰(zhàn),需要進(jìn)一步的探索和研究。當(dāng)前,已經(jīng)出現(xiàn)了很多魚龍混雜的各類榜單,而且排名的結(jié)果還不不一樣,這其實(shí)又是另一個(gè)混沌狀態(tài),這需要引起我們的重視,并擦亮眼睛。
責(zé)任編輯:彭菁

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

    關(guān)注

    8

    文章

    7224

    瀏覽量

    90194
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3418

    瀏覽量

    49482
  • ChatGPT
    +關(guān)注

    關(guān)注

    29

    文章

    1579

    瀏覽量

    8305

原文標(biāo)題:如何更好地蒸餾ChatGPT模型能力:Lion閉源大型語言模型的對抗性蒸餾模型原理及實(shí)驗(yàn)工作介紹

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

收藏 人收藏

    評論

    相關(guān)推薦

    請問如何將例程中的includes中的文件夾,拷貝另一個(gè)工程的includes下面?怎么操作?

    本帖最后由 只耳朵怪 于 2018-6-14 08:48 編輯 如圖所示,請問如何將例程中的includes中的文件夾,拷貝另一個(gè)工程的includes下面
    發(fā)表于 06-13 12:57

    如何將PIC引腳的合成頻率輸出到另一個(gè)設(shè)備?

    執(zhí)行數(shù)學(xué)來轉(zhuǎn)換比率。我把輸入的TMR1H,TMR1L值乘以1000,然后DIVID。E 24位的結(jié)果是1787。數(shù)字在LCD顯示器上都OK,但是如何將另一個(gè)PIC引腳(0~111.88 88赫茲
    發(fā)表于 10-23 15:55

    怎么個(gè)7系列收發(fā)器同步另一個(gè)

    嗨,如何將個(gè)7系列收發(fā)器轉(zhuǎn)移到另一個(gè)7系列收發(fā)器?我正在使用12G SDI視頻收發(fā)器,它在個(gè)
    發(fā)表于 10-30 18:03

    如何將信號從個(gè)示意頁面另一個(gè)

    如何將信號從個(gè)示意頁面另一個(gè)?我知道我可以使紙張更大,但是我知道連接器的符號,所以我想知道如何使用它。肖恩 以上來自于百度翻譯 以下
    發(fā)表于 03-22 12:51

    CAL數(shù)據(jù)復(fù)制另一個(gè)頻道

    CAL數(shù)據(jù)復(fù)制另一個(gè)頻道
    發(fā)表于 07-03 10:25

    如何將MHC設(shè)置從個(gè)項(xiàng)目復(fù)制/傳輸?shù)?b class='flag-5'>另一個(gè)項(xiàng)目?

    我有三套PCB代碼:生產(chǎn)、工廠測試和實(shí)驗(yàn)。這三套都應(yīng)該有相同的MHC設(shè)置。我如何將MHC設(shè)置從個(gè)項(xiàng)目復(fù)制/傳輸?shù)?b class='flag-5'>另一個(gè)項(xiàng)目?我試著導(dǎo)出/導(dǎo)入,但是似乎只傳遞了
    發(fā)表于 07-23 06:28

    如何將數(shù)據(jù)從個(gè)總線傳輸?shù)?b class='flag-5'>另一個(gè)總線?

    大家好, 我數(shù)據(jù)從個(gè)總線傳輸?shù)?b class='flag-5'>另一個(gè)總線,雖然它是直接映射,但它沒有正確傳輸,存在誤碼。任何人都可以給我這個(gè)問題的解決方案嗎?問候,
    發(fā)表于 11-06 09:47

    如何將數(shù)據(jù)從個(gè)SDI通道路由另一個(gè)SDI通道

    嗨,KC705評估板中有4個(gè)SDI通道。我想知道如何將個(gè)通道上的SDI數(shù)據(jù)作為RX通過MGT收發(fā)器引腳路由
    發(fā)表于 05-20 14:52

    如何將Virtex 5 LVPECL_25連接到另一個(gè)設(shè)備的3.3v lvpecl?

    如何將Virtex 5 LVPECL_25連接到另一個(gè)設(shè)備的3.3v lvpecl?謝謝!
    發(fā)表于 06-12 09:07

    可以個(gè)TouchGFX項(xiàng)目之間的屏幕、對象和交互復(fù)制另一個(gè)項(xiàng)目嗎?

    您可以個(gè) TouchGFX 項(xiàng)目之間的屏幕、對象和交互復(fù)制另一個(gè)項(xiàng)目嗎?我嘗試了 Ctrl + C 對象,但它們似乎只在同
    發(fā)表于 01-10 06:08

    如何將yocto從個(gè)版本升級另一個(gè)版本?

    ),您將如何逐步完成?我是否需要從個(gè)版本另一個(gè)版本手動執(zhí)行?(必須有更有效的方法)。應(yīng)用程序呢。如果需要,將如何更新它們?并查看所需的依賴項(xiàng)。
    發(fā)表于 03-23 07:52

    怎樣個(gè)CAD圖插到另一個(gè)CAD圖中?

    要將個(gè)CAD圖插入另一個(gè)圖中,我估計(jì)有幾種不同需求,種是整圖插入,種是部分插入,
    發(fā)表于 10-24 15:38 ?2.5w次閱讀

    GPU礦機(jī)的用戶很快就能尋求另一個(gè)有利可圖的用途

    目前的熊市用GPU礦機(jī)挖礦的礦工受到了很大的打擊 。但是,擁有GPU礦機(jī)的用戶可能很快就能將產(chǎn)能較低的GPU礦機(jī)硬件用于另一個(gè)有利可圖的用途:挖礦顯卡高性能的渲染能力出租給那些希望在低功耗電腦上體驗(yàn)高質(zhì)量PC游戲的用戶。
    發(fā)表于 03-19 15:00 ?1397次閱讀

    若干蒸餾方法之間的細(xì)節(jié)以及差異

    以往的知識蒸餾雖然可以有效的壓縮模型尺寸,但很難teacher模型能力蒸餾
    的頭像 發(fā)表于 05-12 11:39 ?1596次閱讀

    盤古大模型ChatGPT4的區(qū)別

    中表現(xiàn)出色的模型。但是,這兩個(gè)模型之間存在著些區(qū)別,這些區(qū)別可能使其中
    的頭像 發(fā)表于 08-30 18:27 ?6692次閱讀