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

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

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

基于一個(gè)完整的 LLM 訓(xùn)練流程

深度學(xué)習(xí)自然語(yǔ)言處理 ? 來(lái)源:深度學(xué)習(xí)自然語(yǔ)言處理 ? 2023-06-29 10:08 ? 次閱讀

在這篇文章中,我們將盡可能詳細(xì)地梳理一個(gè)完整的 LLM 訓(xùn)練流程。包括模型預(yù)訓(xùn)練(Pretrain)、Tokenizer 訓(xùn)練、指令微調(diào)(Instruction Tuning)等環(huán)節(jié)。

文末進(jìn)群,作者答疑、不錯(cuò)過(guò)直播

1.預(yù)訓(xùn)練階段(Pretraining Stage)

工欲善其事,必先利其器。

當(dāng)前,不少工作選擇在一個(gè)較強(qiáng)的基座模型上進(jìn)行微調(diào),且通常效果不錯(cuò)(如:[alpaca]、[vicuna] 等)。

這種成功的前提在于:預(yù)訓(xùn)練模型和下游任務(wù)的差距不大,預(yù)訓(xùn)練模型中通常已經(jīng)包含微調(diào)任務(wù)中所需要的知識(shí)。

但在實(shí)際情況中,我們通常會(huì)遇到一些問(wèn)題,使得我們無(wú)法直接使用一些開源 backbone:

語(yǔ)言不匹配:大多數(shù)開源基座對(duì)中文的支持都不太友好,例如:[Llama]、[mpt]、[falcon] 等,這些模型在英文上效果都很優(yōu)秀,但在中文上卻差強(qiáng)人意。

1069384a-15cc-11ee-962d-dac502259ad0.png

專業(yè)知識(shí)不足:當(dāng)我們需要一個(gè)專業(yè)領(lǐng)域的 LLM 時(shí),預(yù)訓(xùn)練模型中的知識(shí)就尤為重要。由于大多數(shù)預(yù)訓(xùn)練模型都是在通用訓(xùn)練語(yǔ)料上進(jìn)行學(xué)習(xí),對(duì)于一些特殊領(lǐng)域(金融、法律等)中的概念和名詞無(wú)法具備很好的理解。我們通常需要在訓(xùn)練語(yǔ)料中加入一些領(lǐng)域數(shù)據(jù)(如:[xuanyuan 2.0]),以幫助模型在指定領(lǐng)域內(nèi)獲得更好的效果。

1070ee28-15cc-11ee-962d-dac502259ad0.png軒轅 2.0(金融對(duì)話模型)論文中所提及的訓(xùn)練語(yǔ)料分布,其中 Financial Pretraining 為金融語(yǔ)料

基于上述原因,我們?cè)谶M(jìn)行 SFT 步驟之前,先來(lái)看看預(yù)訓(xùn)練任務(wù)是如何做的。

1.1 Tokenizer Training

在進(jìn)行預(yù)訓(xùn)練之前,我們需要先選擇一個(gè)預(yù)訓(xùn)練的模型基座。

一個(gè)較為普遍的問(wèn)題是:大部分優(yōu)秀的語(yǔ)言模型都沒有進(jìn)行充分的中文預(yù)訓(xùn)練,

因此,許多工作都嘗試將在英語(yǔ)上表現(xiàn)比較優(yōu)秀的模型用中文語(yǔ)料進(jìn)行二次預(yù)訓(xùn)練,期望其能夠?qū)⒂⒄Z(yǔ)上的優(yōu)秀能力遷移到中文任務(wù)中來(lái)。

已經(jīng)有許多優(yōu)秀的倉(cāng)庫(kù)做過(guò)這件事情,比如:[Chinese-LLaMA-Alpaca]。

但在進(jìn)行正式的訓(xùn)練之前,我們還有一步很重要的事情去做:詞表擴(kuò)充。

通俗來(lái)講,tokenizer 的目的就是將一句話進(jìn)行切詞,并將切好詞的列表喂給模型進(jìn)行訓(xùn)練。

例如:

輸入句子>>>你好世界
切詞結(jié)果>>>['你','好','世','界']

通常,tokenizer 有 2 種常用形式:WordPiece 和 BPE。

WordPiece

WordPiece 很好理解,就是將所有的「常用字」和「常用詞」都存到詞表中,

當(dāng)需要切詞的時(shí)候就從詞表里面查找即可。

1077f48e-15cc-11ee-962d-dac502259ad0.pngbert-base-chinese tokenizer 可視化

上述圖片來(lái)自可視化工具 [tokenizer_viewer]。

如上圖所示,大名鼎鼎的 BERT 就使用的這種切詞法。

當(dāng)我們輸入句子:你好世界,

BERT 就會(huì)依次查找詞表中對(duì)應(yīng)的字,并將句子切成詞的組合。

1088c78c-15cc-11ee-962d-dac502259ad0.pngBERT 切詞測(cè)試圖

當(dāng)遇到詞表中不存在的字詞時(shí),tokenizer 會(huì)將其標(biāo)記為特殊的字符 [UNK]:

10a619ea-15cc-11ee-962d-dac502259ad0.pngOut of Vocabulary(OOV)情況

Byte Pair Encoder(BPE)

WordPiece 的方式很有效,但當(dāng)字詞數(shù)目過(guò)于龐大時(shí)這個(gè)方式就有點(diǎn)難以實(shí)現(xiàn)了。

對(duì)于一些多語(yǔ)言模型來(lái)講,要想窮舉所有語(yǔ)言中的常用詞(窮舉不全會(huì)造成 OOV),

既費(fèi)人力又費(fèi)詞表大小,為此,人們引入另一種方法:BPE。

BPE 不是按照中文字詞為最小單位,而是按照 unicode 編碼 作為最小粒度。

對(duì)于中文來(lái)講,一個(gè)漢字是由 3 個(gè) unicode 編碼組成的,

因?yàn)槠綍r(shí)我們不會(huì)拆開來(lái)看(畢竟中文漢字是不可拆分的),所以我一開始對(duì)這個(gè)概念也不太熟悉。

我們來(lái)看看 LLaMA 的 tokenizer(BPE)對(duì)中文是如何進(jìn)行 encode 的:

10b7d874-15cc-11ee-962d-dac502259ad0.png

上述圖片來(lái)自可視化工具 [tokenizer_viewer]。

可以看到,「編碼」兩個(gè)字能夠被正常切成 2 個(gè)字,

但「待」卻被切成了 3 個(gè) token,這里的每個(gè) token 就是 1 個(gè) unicode 編碼。

10c66a4c-15cc-11ee-962d-dac502259ad0.pngLLaMA tokenizer 查找結(jié)果,「待」不在詞表中,「編」「碼」在詞表中

通過(guò) token 查找功能,我們可以發(fā)現(xiàn)「編」「碼」在詞表中,但「待」不在詞表中。

但任何 1 個(gè)漢字都是可以由 unicode 表示(只是組合順序不同),因此「待」就被切成了 3 個(gè) token。

10e07c7a-15cc-11ee-962d-dac502259ad0.png

通常在模型訓(xùn)練不夠充足的時(shí)候,模型會(huì)輸出一些亂碼(不合法的 unicode 序列):

游泳池是杭州西湖的一個(gè)游泳池,???

詞表擴(kuò)充

為了降低模型的訓(xùn)練難度,人們通常會(huì)考慮在原來(lái)的詞表上進(jìn)行「詞表擴(kuò)充」,

也就是將一些常見的漢字 token 手動(dòng)添加到原來(lái)的 tokenizer 中,從而降低模型的訓(xùn)練難度。

我們對(duì)比 [Chinese-LLaMA] 和 [LLaMA] 之間的 tokenizer 的區(qū)別:

10fb2c32-15cc-11ee-962d-dac502259ad0.pngChinese LLaMA 和 原始LLaMA 之間 tokenizer 的區(qū)別

我們可以發(fā)現(xiàn):Chinese LLaMA 在原始 tokenizer 上新增了17953 個(gè) tokens,且加入 token 的大部分為漢字。

而在 [BELLE] 中也有同樣的做法:

在 120w 行中文文本上訓(xùn)練出一個(gè) 5w 規(guī)模的 token 集合,

并將這部分 token 集合與原來(lái)的 LLaMA 詞表做合并,

最后再在 3.2B 的中文語(yǔ)料上對(duì)這部分新擴(kuò)展的 token embedding 做二次預(yù)訓(xùn)練。

110eb2d4-15cc-11ee-962d-dac502259ad0.png《Towards Better Instruction Following Language Models for Chinese》 Page-4

1.2 Language Model PreTraining

在擴(kuò)充完 tokenizer 后,我們就可以開始正式進(jìn)行模型的預(yù)訓(xùn)練步驟了。

Pretraining 的思路很簡(jiǎn)單,就是輸入一堆文本,讓模型做 Next Token Prediction 的任務(wù),這個(gè)很好理解。

我們主要來(lái)討論幾種預(yù)訓(xùn)練過(guò)程中所用到的方法:數(shù)據(jù)源采樣、數(shù)據(jù)預(yù)處理、模型結(jié)構(gòu)。

數(shù)據(jù)源采樣

在 [gpt3] 的訓(xùn)練過(guò)程中,存在多個(gè)訓(xùn)練數(shù)據(jù)源,論文中提到:對(duì)不同的數(shù)據(jù)源會(huì)選擇不同采樣比例:

11290f62-15cc-11ee-962d-dac502259ad0.pngGPT3 Paper Page-9

通過(guò)「數(shù)據(jù)源」采樣的方式,能夠緩解模型在訓(xùn)練的時(shí)候受到「數(shù)據(jù)集規(guī)模大小」的影響。

從上圖中可以看到,相對(duì)較大的數(shù)據(jù)集(Common Crawl)會(huì)使用相對(duì)較大的采樣比例(60%),

這個(gè)比例遠(yuǎn)遠(yuǎn)小于該數(shù)據(jù)集在整體數(shù)據(jù)集中所占的規(guī)模(410 / 499 = 82.1%),

因此,CC 數(shù)據(jù)集最終實(shí)際上只被訓(xùn)練了 0.44(0.6 / 0.82 * (300 / 499))個(gè) epoch。

而對(duì)于規(guī)模比較小的數(shù)據(jù)集(Wikipedia),則將多被訓(xùn)練幾次(3.4 個(gè) epoch)。

這樣一來(lái)就能使得模型不會(huì)太偏向于規(guī)模較大的數(shù)據(jù)集,從而失去對(duì)規(guī)模小但作用大的數(shù)據(jù)集上的學(xué)習(xí)信息

數(shù)據(jù)預(yù)處理

數(shù)據(jù)預(yù)處理主要指如何將「文檔」進(jìn)行向量化。

通常來(lái)講,在 Finetune 任務(wù)中,我們通常會(huì)直接使用 truncation 將超過(guò)閾值(2048)的文本給截?cái)啵?/p>

但在 Pretrain 任務(wù)中,這種方式顯得有些浪費(fèi)。

以書籍?dāng)?shù)據(jù)為例,一本書的內(nèi)容肯定遠(yuǎn)遠(yuǎn)多余 2048 個(gè) token,但如果采用頭部截?cái)嗟姆绞剑?/p>

則每本書永遠(yuǎn)只能夠?qū)W習(xí)到開頭的 2048 tokens 的內(nèi)容(連序章都不一定能看完)。

因此,最好的方式是將長(zhǎng)文章按照 seq_len(2048)作分割,將切割后的向量喂給模型做訓(xùn)練。

模型結(jié)構(gòu)

為了加快模型的訓(xùn)練速度,通常會(huì)在 decoder 模型中加入一些 tricks 來(lái)縮短模型訓(xùn)練周期。

目前大部分加速 tricks 都集中在 Attention 計(jì)算上(如:MQA 和 Flash Attention [falcon] 等);

此外,為了讓模型能夠在不同長(zhǎng)度的樣本上都具備較好的推理能力,

通常也會(huì)在 Position Embedding 上進(jìn)行些處理,選用 ALiBi([Bloom])或 RoPE([GLM-130B])等。

具體內(nèi)容可以參考下面這篇文章[1]

1.3 數(shù)據(jù)集清理

中文預(yù)訓(xùn)練數(shù)據(jù)集可以使用 [悟道],數(shù)據(jù)集分布如下(主要以百科、博客為主):

113e1f2e-15cc-11ee-962d-dac502259ad0.png悟道-數(shù)據(jù)分布圖

但開源數(shù)據(jù)集可以用于實(shí)驗(yàn),如果想突破性能,則需要我們自己進(jìn)行數(shù)據(jù)集構(gòu)建。

在 [falcon paper] 中提到,

僅使用「清洗后的互聯(lián)網(wǎng)數(shù)據(jù)」就能夠讓模型比在「精心構(gòu)建的數(shù)據(jù)集」上有更好的效果,

一些已有的數(shù)據(jù)集和它們的處理方法如下:

11524da0-15cc-11ee-962d-dac502259ad0.png各種數(shù)據(jù)源 & 數(shù)據(jù)清理方法

有關(guān) Falcon 更多的細(xì)節(jié)可以看這里[2]

1.4 模型效果評(píng)測(cè)

關(guān)于 Language Modeling 的量化指標(biāo),較為普遍的有 [PPL],[BPC] 等,

可以簡(jiǎn)單理解為在生成結(jié)果和目標(biāo)文本之間的 Cross Entropy Loss 上做了一些處理。

這種方式可以用來(lái)評(píng)估模型對(duì)「語(yǔ)言模板」的擬合程度,

即給定一段話,預(yù)測(cè)后面可能出現(xiàn)哪些合法的、通順的字詞。

但僅僅是「生成通順句子」的能力現(xiàn)在已經(jīng)很難滿足現(xiàn)在人們的需求,

大部分 LLM 都具備生成流暢和通順語(yǔ)句能力,很難比較哪個(gè)好,哪個(gè)更好。

為此,我們需要能夠評(píng)估另外一個(gè)大模型的重要能力 —— 知識(shí)蘊(yùn)含能力。

C-Eval

一個(gè)很好的中文知識(shí)能力測(cè)試數(shù)據(jù)集是 [C-Eval],涵蓋1.4w 道選擇題,共 52 個(gè)學(xué)科。

覆蓋學(xué)科如下:

11780e64-15cc-11ee-962d-dac502259ad0.pngc-eval 數(shù)據(jù)集覆蓋學(xué)科圖

由于是選擇題的形式,我們可以通過(guò)將題目寫進(jìn) prompt 中,

并讓模型續(xù)寫 1 個(gè) token,判斷這個(gè)續(xù)寫 token 的答案是不是正確答案即可。

但大部分沒有精調(diào)過(guò)的預(yù)訓(xùn)練模型可能無(wú)法續(xù)寫出「A B C D」這樣的選項(xiàng)答案,

因此,官方推薦使用 5-shot 的方式來(lái)讓模型知道如何輸出答案:

以下是中國(guó)關(guān)于會(huì)計(jì)考試的單項(xiàng)選擇題,請(qǐng)選出其中的正確答案。

下列關(guān)于稅法基本原則的表述中,不正確的是____。
A. 稅收法定原則包括稅收要件法定原則和稅務(wù)合法性原則
B. 稅收公平原則源于法律上的平等性原則
C. 稅收效率原則包含經(jīng)濟(jì)效率和行政效率兩個(gè)方面
D. 稅務(wù)機(jī)關(guān)按法定程序依法征稅,可以自由做出減征、停征或免征稅款的決定
答案:D

公司是國(guó)內(nèi)一家領(lǐng)先的新媒體、通信及移動(dòng)增值服務(wù)公司,由于遭受世界金融危機(jī),甲公司經(jīng)濟(jì)利潤(rùn)嚴(yán)重下滑,經(jīng)營(yíng)面臨困境,但為了穩(wěn)定職工隊(duì)伍,公司并未進(jìn)行裁員,而是實(shí)行高層管理人員減薪措施。甲公司此舉采用的收縮戰(zhàn)略方式是____。
A. 轉(zhuǎn)向戰(zhàn)略
B. 放棄戰(zhàn)略
C. 緊縮與集中戰(zhàn)略
D. 穩(wěn)定戰(zhàn)略
答案:C

... # 第 3, 4, 5 道樣例題

下列各項(xiàng)中,不能增加企業(yè)核心競(jìng)爭(zhēng)力的是____。
A. 產(chǎn)品差異化
B. 購(gòu)買生產(chǎn)專利權(quán)
C. 創(chuàng)新生產(chǎn)技術(shù)
D. 聘用生產(chǎn)外包商
答案:

通過(guò)前面的樣例后,模型能夠知道在「答案:」后面應(yīng)該輸出選項(xiàng)字母。

于是,我們獲得模型續(xù)寫后的第一個(gè) token 的概率分布(logits),

并取出「A B C D」這 4 個(gè)字母的概率,通過(guò) softmax 進(jìn)行歸一化:

probs=(
torch.nn.functional.softmax(
torch.tensor(
[
logits[self.tokenizer.encode(
"A",bos=False,eos=False)[0]],
logits[self.tokenizer.encode(
"B",bos=False,eos=False)[0]],
logits[self.tokenizer.encode(
"C",bos=False,eos=False)[0]],
logits[self.tokenizer.encode(
"D",bos=False,eos=False)[0]],
]
),
dim=0,
).detach().cpu().numpy()
)
pred={0:"A",1:"B",2:"C",3:"D"}[np.argmax(probs)]#將概率最大的選項(xiàng)作為模型輸出的答案

C-Eval 通過(guò)這種方式測(cè)出了許多模型在中文知識(shí)上的效果,

由于是 4 選項(xiàng)問(wèn)題,所以基線(隨機(jī)選擇)的正確率是 25%。

C-Eval 也再一次證明了 GPT-4 是個(gè)多么強(qiáng)大的知識(shí)模型:

1195cf76-15cc-11ee-962d-dac502259ad0.png各模型在 5-shot 下的得分排名

2. 指令微調(diào)階段(Instruction Tuning Stage)

在完成第一階段的預(yù)訓(xùn)練后,就可以開始進(jìn)到指令微調(diào)階段了。

由于預(yù)訓(xùn)練任務(wù)的本質(zhì)在于「續(xù)寫」,而「續(xù)寫」的方式并一定能夠很好的回答用戶的問(wèn)題。

例如:

11adeaa2-15cc-11ee-962d-dac502259ad0.png

因?yàn)橛?xùn)練大多來(lái)自互聯(lián)網(wǎng)中的數(shù)據(jù),我們無(wú)法保證數(shù)據(jù)中只存在存在規(guī)范的「一問(wèn)一答」格式,

這就會(huì)造成預(yù)訓(xùn)練模型通常無(wú)法直接給出人們想要的答案。

但是,這并不代表預(yù)訓(xùn)練模型「無(wú)知」,只是需要我們用一些巧妙的「技巧」來(lái)引導(dǎo)出答案:

11be5702-15cc-11ee-962d-dac502259ad0.png

不過(guò),這種需要用戶精心設(shè)計(jì)從而去「套」答案的方式,顯然沒有那么優(yōu)雅。

既然模型知道這些知識(shí),只是不符合我們?nèi)祟惖膶?duì)話習(xí)慣,那么我們只要再去教會(huì)模型「如何對(duì)話」就好了。

這就是 Instruction Tuning 要做的事情,即指令對(duì)齊。

OpenAI 在 [instruction-following] 中展示了 GPT-3 和經(jīng)過(guò)指令微調(diào)前后模型的區(qū)別:

11cce57e-15cc-11ee-962d-dac502259ad0.pngGPT-3 只是在做續(xù)寫任務(wù),InstructGPT 則能夠回答正確內(nèi)容

2.1 Self Instruction

既然我們需要去「教會(huì)模型說(shuō)人話」,

那么我們就需要去精心編寫各式各樣人們?cè)趯?duì)話中可能詢問(wèn)的問(wèn)題,以及問(wèn)題的答案。

在 [InstructGPT Paper] 中,使用了 1.3w 的數(shù)據(jù)來(lái)對(duì) GPT-3.5 進(jìn)行監(jiān)督學(xué)習(xí)(下圖中左 SFT Data):

11e2f68e-15cc-11ee-962d-dac502259ad0.pngInstructGPT Paper 訓(xùn)練數(shù)據(jù)集預(yù)覽

可以觀察到,數(shù)據(jù)集中人工標(biāo)注(labeler)占大頭,

這還僅僅只是 InstructGPT,和 ChatGPT 遠(yuǎn)遠(yuǎn)不是一個(gè)量級(jí)。

非官方消息:ChatGPT 使用了百萬(wàn)量級(jí)的數(shù)據(jù)進(jìn)行指令微調(diào)。

可見,使用人工標(biāo)注是一件成本巨大的事情,只是找到人不夠,需要找到「專業(yè)」且「認(rèn)知一致」的標(biāo)注團(tuán)隊(duì)。

如果這件事從頭開始做自然很難(OpenAI 確實(shí)厲害),但今天我們已經(jīng)有了 ChatGPT 了,

我們讓 ChatGPT 來(lái)教我們自己的模型不就好了嗎?

這就是 Self Instruction 的思路,即通過(guò) ChatGPT 的輸入輸出來(lái)蒸餾自己的模型。

一個(gè)非常出名的項(xiàng)目是 [stanford_alpaca]。

如果從 ChatGPT 「套」數(shù)據(jù),那么我們至少需要「套」哪些數(shù)據(jù)。

Instruction Tuning 中的「輸入」(問(wèn)題)和「輸出」(答案)是訓(xùn)練模型的關(guān)鍵,

答案很好得到,喂給 ChatGPT 問(wèn)題根據(jù)返回結(jié)果就能獲得,

但「問(wèn)題」從哪里獲得呢?

(靠人想太累了,屏幕前的你不妨試試,看看短時(shí)間內(nèi)能想出多少有價(jià)值的問(wèn)題)

Alpaca 則是使用「種子指令(seed)」,使得 ChatGPT 既生成「問(wèn)題」又生成「答案」。

由于 Alpaca 是英文項(xiàng)目,為了便于理解,我們使用相同思路的中文項(xiàng)目 [BELLE] 作為例子。

通俗來(lái)講,就是人為的先給一些「訓(xùn)練數(shù)據(jù)樣例」讓 ChatGPT 看,

緊接著利用 ChatGPT 的續(xù)寫功能,讓其不斷地舉一反三出新的訓(xùn)練數(shù)據(jù)集:

你被要求提供10個(gè)多樣化的任務(wù)指令。這些任務(wù)指令將被提供給GPT模型,我們將評(píng)估GPT模型完成指令的能力。
以下是你提供指令需要滿足的要求:
1.盡量不要在每個(gè)指令中重復(fù)動(dòng)詞,要最大化指令的多樣性。
2.使用指令的語(yǔ)氣也應(yīng)該多樣化。例如,將問(wèn)題與祈使句結(jié)合起來(lái)。
3.指令類型應(yīng)該是多樣化的,包括各種類型的任務(wù),類別種類例如:brainstorming,open QA,closed QA,rewrite,extract,generation,classification,chat,summarization。
4.GPT語(yǔ)言模型應(yīng)該能夠完成這些指令。例如,不要要求助手創(chuàng)建任何視覺或音頻輸出。例如,不要要求助手在下午5點(diǎn)叫醒你或設(shè)置提醒,因?yàn)樗鼰o(wú)法執(zhí)行任何操作。例如,指令不應(yīng)該和音頻、視頻、圖片、鏈接相關(guān),因?yàn)镚PT模型無(wú)法執(zhí)行這個(gè)操作。
5.指令用中文書寫,指令應(yīng)該是1到2個(gè)句子,允許使用祈使句或問(wèn)句。
6.你應(yīng)該給指令生成適當(dāng)?shù)妮斎耄斎胱侄螒?yīng)包含為指令提供的具體示例,它應(yīng)該涉及現(xiàn)實(shí)數(shù)據(jù),不應(yīng)包含簡(jiǎn)單的占位符。輸入應(yīng)提供充實(shí)的內(nèi)容,使指令具有挑戰(zhàn)性。
7.并非所有指令都需要輸入。例如,當(dāng)指令詢問(wèn)一些常識(shí)信息,比如“世界上最高的山峰是什么”,不需要提供具體的上下文。在這種情況下,我們只需在輸入字段中放置“<無(wú)輸入>”。當(dāng)輸入需要提供一些文本素材(例如文章,文章鏈接)時(shí),就在輸入部分直接提供一些樣例。當(dāng)輸入需要提供音頻、圖片、視頻或者鏈接時(shí),則不是滿足要求的指令。
8.輸出應(yīng)該是針對(duì)指令和輸入的恰當(dāng)回答。
下面是10個(gè)任務(wù)指令的列表:

###
1.指令: 在面試中如何回答這個(gè)問(wèn)題?
1.輸入:當(dāng)你在車?yán)铼?dú)處時(shí),你會(huì)想些什么?
1.輸出:如果是在晚上,我通常會(huì)考慮我今天所取得的進(jìn)步,如果是在早上,我會(huì)思考如何做到最好。我也會(huì)嘗試練習(xí)感恩和活在當(dāng)下的狀態(tài),以避免分心駕駛。
###
2.指令: 按人口對(duì)這些國(guó)家進(jìn)行排名。
2.輸入:巴西,中國(guó),美國(guó),日本,加拿大,澳大利亞
2.輸出:中國(guó),美國(guó),巴西,日本,加拿大,澳大利亞
###
3.指令:

如上述例子所示,我們先給出 2 個(gè)樣例,并讓 ChatGPT 進(jìn)行續(xù)寫:

11f22b54-15cc-11ee-962d-dac502259ad0.pngChatGPT 續(xù)寫結(jié)果

關(guān)于 BELLE 的更多細(xì)節(jié)可以參考這篇文章[3]

2.2 開源數(shù)據(jù)集整理

在這一章中,我們將梳理一些開源的 Instruction Tuning 的數(shù)據(jù)集,

除了直接拿來(lái)用以外,我們期望通過(guò)分析這些已有數(shù)據(jù)集,從而學(xué)習(xí)如何構(gòu)建一個(gè)指令數(shù)據(jù)集。

Alpaca

[stanford_alpaca] 采用上述的 self instruction 的方式采集了 5200 條指令訓(xùn)練數(shù)據(jù)集。

數(shù)據(jù)樣例如下:

{
"instruction":"Arrangethewordsinthegivensentencetoformagrammaticallycorrectsentence.",
"input":"quicklythebrownfoxjumped",
"output":"Thequickbrownfoxjumpedquickly."
}

其中,instruction 代表要求模型做的任務(wù),input 代表用戶輸入, output 代表喂給模型的 label。

Alpaca 覆蓋了多種類型的指令,其數(shù)據(jù)分布如下:

121efce2-15cc-11ee-962d-dac502259ad0.pngAlpaca 數(shù)據(jù)分布圖

包含寫作、描述、分類、摘要等多種類型的任務(wù)集合。

BELLE

BELLE 開放了好幾種規(guī)模的數(shù)據(jù)集,[100萬(wàn)]、[200萬(wàn)]、[350萬(wàn)] 等。

訓(xùn)練數(shù)據(jù)集樣例如下:

{
"instruction":"判斷給定的文章是否符合語(yǔ)法規(guī)則。如果不符合,請(qǐng)?zhí)峁┬薷慕ㄗh。下面是一篇文章的開頭:‘為了探討這個(gè)主題,本文將提供一系列數(shù)據(jù)和實(shí)例,以證明這一觀點(diǎn)?!?,
"input":"",
"output":"這個(gè)開頭符合語(yǔ)法規(guī)則。"
}

由于數(shù)據(jù)量很大,我們無(wú)法統(tǒng)計(jì)出訓(xùn)練數(shù)據(jù)集中各任務(wù)的真實(shí)占比,

但從 [1000條評(píng)測(cè)集] 數(shù)據(jù)分布可以推測(cè)出,訓(xùn)練數(shù)據(jù)集中同樣包含:摘要、問(wèn)答、分類等任務(wù)。

1233c6fe-15cc-11ee-962d-dac502259ad0.pngBELLE - 評(píng)測(cè)集分布

我們按照類別對(duì)評(píng)測(cè)數(shù)據(jù)進(jìn)行采樣,結(jié)果如下:

1253f0a0-15cc-11ee-962d-dac502259ad0.png

2.3 模型的評(píng)測(cè)方法

比起預(yù)訓(xùn)練(Pretrain)環(huán)節(jié)里相對(duì)明確的評(píng)價(jià)指標(biāo)(如PPL、NLL等),

Instruction 環(huán)節(jié)中的評(píng)價(jià)指標(biāo)比較令人頭疼。

鑒于語(yǔ)言生成模型的發(fā)展速度,BLEU 和 ROUGH 這樣的指標(biāo)已經(jīng)不再客觀。

一種比較流行的方式是像 [FastChat] 中一樣,利用 GPT-4 為模型的生成結(jié)果打分,

我們也嘗試使用同樣的 Prompt 對(duì) 3 種開源模型:OpenLlama、ChatGLM、BELLE 進(jìn)行測(cè)試。

注意:下面的測(cè)試結(jié)果僅源自我們自己的實(shí)驗(yàn),不具備任何權(quán)威性。

對(duì)于每一個(gè)問(wèn)題,我們先獲得 ChatGPT 的回復(fù),以及另外 3 種模型的回復(fù),

接著我們將 「ChatGPT 答案 - 候選模型答案」這樣的 pair 喂給 GPT-4 打分(滿分為 10 分)。

得到的結(jié)果如下:

127ada30-15cc-11ee-962d-dac502259ad0.png測(cè)試結(jié)果 & 測(cè)試 prompt

我們對(duì)每個(gè)任務(wù)單獨(dú)進(jìn)行了統(tǒng)計(jì),并在最后一列求得平均值。

GPT-4 會(huì)對(duì)每一條測(cè)試樣本的 2 個(gè)答案分別進(jìn)行打分,并給出打分理由:

12929bfc-15cc-11ee-962d-dac502259ad0.pngGPT-Review 的結(jié)果

但是,我們發(fā)現(xiàn),GPT-4 打出的分?jǐn)?shù)和給出理由并不一定正確

如上圖所示,GPT-4 為右邊模型的答案打出了更高的分?jǐn)?shù),給出的理由是:

將「最長(zhǎng)時(shí)期」改為了「最長(zhǎng)時(shí)期之一」會(huì)更準(zhǔn)確。

但事實(shí)上,Instruction 中明確設(shè)定就是「最長(zhǎng)時(shí)期」,

這種「給高分」的理由其實(shí)是不正確的。

此外,我們還發(fā)現(xiàn),僅僅調(diào)換句子順序也會(huì)對(duì)最后打分結(jié)果產(chǎn)生影響,

針對(duì)這個(gè)問(wèn)題,我們考慮「調(diào)換句子順序并求和平均」來(lái)緩解。

但不管怎么樣,GPT-4 給出的分?jǐn)?shù)或許并沒有我們想象中的那么靠譜,

為此,我們通過(guò)人工的 Review 的方式對(duì)每個(gè)答案進(jìn)行了一次回掃,得到的結(jié)果和標(biāo)準(zhǔn)如下:

再次重申:我們只是期望指出 GPT-4 打分可能會(huì)和實(shí)際產(chǎn)生偏差的問(wèn)題,這里排名不具備任何權(quán)威性。

12b80be4-15cc-11ee-962d-dac502259ad0.png人工 Review 結(jié)果 & 打分原則

我們可以看到,

在 GPT-4 打分的結(jié)果中,已經(jīng)有模型的效果甚至超過(guò)了 ChatGPT(分?jǐn)?shù)為 1.02),

但再經(jīng)過(guò)人工 Review 后,ChatGPT 的答案是我們認(rèn)為更合理一些的。

當(dāng)然,最近陸陸續(xù)續(xù)的推出了許多新的評(píng)測(cè)方法,如:[PandaLM],

以及許多比較有影響力的評(píng)測(cè)集,如:[C-Eval]、[open_llm_leaderboard] 等,

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

    關(guān)注

    8

    文章

    6808

    瀏覽量

    88743
  • 編碼
    +關(guān)注

    關(guān)注

    6

    文章

    932

    瀏覽量

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

    關(guān)注

    1

    文章

    3112

    瀏覽量

    48658
  • LLM
    LLM
    +關(guān)注

    關(guān)注

    0

    文章

    264

    瀏覽量

    297

原文標(biāo)題:從零詳細(xì)地梳理一個(gè)完整的 LLM 訓(xùn)練流程

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    大型語(yǔ)言模型(LLM)的自定義訓(xùn)練:包含代碼示例的詳細(xì)指南

    近年來(lái),像 GPT-4 這樣的大型語(yǔ)言模型 (LLM) 因其在自然語(yǔ)言理解和生成方面的驚人能力而受到廣泛關(guān)注。但是,要根據(jù)特定任務(wù)或領(lǐng)域定制LLM,定制培訓(xùn)是必要的。本文提供了有關(guān)自定義訓(xùn)練
    發(fā)表于 06-12 09:35 ?2576次閱讀

    MLC-LLM的編譯部署流程

    MLC-LLM部署在各種硬件平臺(tái)的需求,然后我就開始了解MLC-LLM的編譯部署流程和RWKV World模型相比于MLC-LLM已經(jīng)支持的Raven系列模型的特殊之處。 MLC-
    的頭像 發(fā)表于 09-04 09:22 ?2797次閱讀
    MLC-<b class='flag-5'>LLM</b>的編譯部署<b class='flag-5'>流程</b>

    大語(yǔ)言模型(LLM)預(yù)訓(xùn)練數(shù)據(jù)集調(diào)研分析

    model 訓(xùn)練完成后,使用 instruction 以及其他高質(zhì)量的私域數(shù)據(jù)集來(lái)提升 LLM 在特定領(lǐng)域的性能;而 rlhf 是 openAI 用來(lái)讓model 對(duì)齊人類價(jià)值觀的種強(qiáng)大技術(shù);pre-training dat
    的頭像 發(fā)表于 09-19 10:00 ?1119次閱讀
    大語(yǔ)言模型(<b class='flag-5'>LLM</b>)預(yù)<b class='flag-5'>訓(xùn)練</b>數(shù)據(jù)集調(diào)研分析

    從原理到代碼理解語(yǔ)言模型訓(xùn)練和推理,通俗易懂,快速修煉LLM

    要理解大語(yǔ)言模型(LLM),首先要理解它的本質(zhì),無(wú)論預(yù)訓(xùn)練、微調(diào)還是在推理階段,核心都是next token prediction,也就是以自回歸的方式從左到右逐步生成文本。
    的頭像 發(fā)表于 09-19 16:25 ?1236次閱讀
    從原理到代碼理解語(yǔ)言模型<b class='flag-5'>訓(xùn)練</b>和推理,通俗易懂,快速修煉<b class='flag-5'>LLM</b>

    mlc-llm對(duì)大模型推理的流程及優(yōu)化方案

    在 MLC-LLM 部署RWKV World系列模型實(shí)戰(zhàn)(3B模型Mac M2解碼可達(dá)26tokens/s) 中提到要使用mlc-llm部署模型首先需要個(gè)編譯過(guò)程,將原始的基于Rea
    發(fā)表于 09-26 12:25 ?832次閱讀
    mlc-<b class='flag-5'>llm</b>對(duì)大模型推理的<b class='flag-5'>流程</b>及優(yōu)化方案

    基于NVIDIA Megatron Core的MOE LLM實(shí)現(xiàn)和訓(xùn)練優(yōu)化

    本文將分享阿里云人工智能平臺(tái) PAI 團(tuán)隊(duì)與 NVIDIA Megatron-Core 團(tuán)隊(duì)在 MoE (Mixture of Experts) 大語(yǔ)言模型(LLM)實(shí)現(xiàn)與訓(xùn)練優(yōu)化上的創(chuàng)新工作。
    的頭像 發(fā)表于 03-22 09:50 ?681次閱讀
    基于NVIDIA Megatron Core的MOE <b class='flag-5'>LLM</b>實(shí)現(xiàn)和<b class='flag-5'>訓(xùn)練</b>優(yōu)化

    人臉識(shí)別模型訓(xùn)練流程

    人臉識(shí)別模型訓(xùn)練流程是計(jì)算機(jī)視覺領(lǐng)域中的項(xiàng)重要技術(shù)。本文將詳細(xì)介紹人臉識(shí)別模型的訓(xùn)練流程,包括數(shù)據(jù)準(zhǔn)備、模型選擇、模型
    的頭像 發(fā)表于 07-04 09:19 ?755次閱讀

    llm模型和chatGPT的區(qū)別

    LLM(Large Language Model)是指大型語(yǔ)言模型,它們是類使用深度學(xué)習(xí)技術(shù)構(gòu)建的自然語(yǔ)言處理(NLP)模型。LLM模型可以處理各種語(yǔ)言任務(wù),如文本生成、文本分類、機(jī)器翻譯等。目前
    的頭像 發(fā)表于 07-09 09:55 ?848次閱讀

    llm模型有哪些格式

    LLM(Large Language Model,大型語(yǔ)言模型)是種深度學(xué)習(xí)模型,主要用于處理自然語(yǔ)言處理(NLP)任務(wù)。LLM模型的格式多種多樣,以下是些常見的
    的頭像 發(fā)表于 07-09 09:59 ?513次閱讀

    llm模型訓(xùn)練般用什么系統(tǒng)

    LLM(Large Language Model,大型語(yǔ)言模型)是近年來(lái)在自然語(yǔ)言處理領(lǐng)域取得顯著成果的種深度學(xué)習(xí)模型。它通常需要大量的計(jì)算資源和數(shù)據(jù)來(lái)進(jìn)行訓(xùn)練。以下是關(guān)于LLM模型
    的頭像 發(fā)表于 07-09 10:02 ?324次閱讀

    LLM預(yù)訓(xùn)練的基本概念、基本原理和主要優(yōu)勢(shì)

    在人工智能和自然語(yǔ)言處理(NLP)領(lǐng)域,大型語(yǔ)言模型(Large Language Model,簡(jiǎn)稱LLM)的興起極大地推動(dòng)了技術(shù)的進(jìn)步和應(yīng)用的發(fā)展。LLM通過(guò)在大規(guī)模文本數(shù)據(jù)上進(jìn)行預(yù)訓(xùn)練,獲得了
    的頭像 發(fā)表于 07-10 11:03 ?919次閱讀

    端到端InfiniBand網(wǎng)絡(luò)解決LLM訓(xùn)練瓶頸

    的,這需要大量的計(jì)算資源和高速數(shù)據(jù)傳輸網(wǎng)絡(luò)。端到端InfiniBand(IB)網(wǎng)絡(luò)作為高性能計(jì)算和AI模型訓(xùn)練的理想選擇,發(fā)揮著重要作用。在本文中,我們將深入探討大型語(yǔ)言模型(LLM訓(xùn)練的概念,并探索端到端InfiniBand
    的頭像 發(fā)表于 10-23 11:26 ?241次閱讀
    端到端InfiniBand網(wǎng)絡(luò)解決<b class='flag-5'>LLM</b><b class='flag-5'>訓(xùn)練</b>瓶頸

    LLM和傳統(tǒng)機(jī)器學(xué)習(xí)的區(qū)別

    訓(xùn)練方法 LLM: 預(yù)訓(xùn)練和微調(diào): LLM通常采用預(yù)訓(xùn)練(Pre-training)和微調(diào)(Fine-tuning)的方法。預(yù)
    的頭像 發(fā)表于 11-08 09:25 ?185次閱讀

    如何訓(xùn)練自己的LLM模型

    訓(xùn)練自己的大型語(yǔ)言模型(LLM)是個(gè)復(fù)雜且資源密集的過(guò)程,涉及到大量的數(shù)據(jù)、計(jì)算資源和專業(yè)知識(shí)。以下是訓(xùn)練
    的頭像 發(fā)表于 11-08 09:30 ?226次閱讀

    從零開始訓(xùn)練個(gè)大語(yǔ)言模型需要投資多少錢?

    ,前言 ? 在AI領(lǐng)域,訓(xùn)練個(gè)大型語(yǔ)言模型(LLM)是
    的頭像 發(fā)表于 11-08 14:15 ?77次閱讀
    從零開始<b class='flag-5'>訓(xùn)練</b><b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>大語(yǔ)言模型需要投資多少錢?