【LLM 10大觀念-2】Good Data is All You Need

迎接2024年:10個必須要搞懂的LLM概念-2

倢愷 Oscar
23 min readJan 9, 2024

大家新年快樂XD,為了要保持寫作的好習慣,跨年時間就趕快來寫這個系列第二篇:Good data is all you need。如果還沒看過我上一篇的朋友,可以先回頭把前一篇:Scaling看完,這個系列我希望做一個完整的總結,幫助LLM相關從業者、研究員、企業用最短的時間把2023年最重要的LLM概念融會貫通,加速2024年個人與企業的發展。

今天是系列的第二篇,我特別把Data的重要性拿出來講,並且希望從多個角度,幫助大家建立一個對Data的全面理解。

看完這篇你將學習到:
1. Data 與 Transfer Learning 的關係
2. 一個好的Dataset的組成
3. Data Mixture
4. Data Quality

1. Data 與 Transfer Learning 的關係

當談及Data的重要性時,大家可能首先想到的是數據科學領域中廣為流傳的名言:"Garbage in, Garbage out",這句話深刻地揭示了一個事實:數據的品質直接影響到模型的輸出品質。這是每位從業者都知道的基本原則(我稍後會再次提到數據品質)。

然而,對於ML和DL的從業者來說,除了Data品質,還有許多其他方面需要考慮,其中極為重要的一點便是Transfer Learning。

Transfer Learning(遷移學習)的概念是:我們可以訓練模型在某一領域(A領域)學習知識,然後將這些知識在另一領域(B領域)中應用

先來回顧歷史,在我初學DL的時候,有兩張圖片對我理解Transfer Learning很有幫助,都是來自於FeiFei Li老師的cs231n課程(暫時找不到public的course website,之後如果有新版課程網站會馬上補上。)

第一:NN在學習的時候,在淺層會學會抽取較為"粗淺"(Low level)的特徵,而越深層則會學會越"複雜"(High level)的特徵。

image from cs231n

第二:我們可以藉由判斷Target domain跟Original domain的差異,來決定要Transfer(遷移)哪個層次的知識。
Ex: 如果差異很大的話,我們就只能Transfer Low level feature(基礎、粗淺的特徵),因此需要重新訓練較多層的Network,反之,如果差異很小,則可以Transfer High level feature(複雜的特徵),因此可以訓練較少層的Network。

image from cs231n

因此在很長一段時間(2016前後),CV任何任務的標準都是先拿一個在imagenet上pretrained好的resnet,來當作新任務的基準。在所有研究員心中,都知道"pretrain在足夠大的dataset(Ex: imagenet)上學習圖像分類,幾乎對所有視覺任務都有幫助"

而在2018年,CVPR的Best Paper [2],Stanford跟UCB共同提出了Taskonomy,更細顆粒度的思考到底"學什麼會得到那些可遷移(Transferable)的能力(Ability)",一次性討論26個CV的任務(包含2D, 2.5D和3D的任務)的Transfer關係。(如下圖)

Taskonomy

而後提出了1個我認為很重要的結論:

每個CV Task對於其他任務的Transfer效率有顯著的不同。每個任務只能提供某幾種特定的視覺能力,而我們如果能找到最佳的Transfer路徑,則能大幅提高最終效果或是訓練效率。

figure from Taskonomy

在2018年,NLP也開始進入了pretrain model的時代,AI2先提出了ELMo[2],說明pretrained在Language modeling上的LSTM可以更好的表達詞意,而後Google提出BERT[3],發現pretrained在Language modeling上的Transformer可以對幾乎所有NLP任務都得到顯著的提升。

但Pretrain Language Model的成功卻在NLP領域引起了超大的爭議:

“學習預測下一個字能不能讓模型學會任何(文意)知識?”

https://huggingface.co/spaces/banana-projects/meaning-mega-thread/blob/main/tree.png

這個爭論我想即便到今天,都還是很難有結論,但我們可以思考這個爭論的本質,其實是在思考,Language modeling到底帶給模型哪些Transferable ability(可遷移的能力)?

而到了2022年,NLP領域也出現了對標Taskonomy的Paper <Not All Tasks Are Born Equal> [4],更進一步討論,不同NLP的任務分別又能夠帶給模型哪些能力的增強。

說了這麼多,其實就想提一個重點,對於ML/DL的Data,最重要的問題是:每個Dataset能讓模型學會哪些類型的Transferable Ability(可遷移的能力)?有些Dataset、任務能夠讓模型學會常識(Common Sense)、有些可以讓模型學會推理、有些可以讓模型學會對話,而我們在收集資料集時,就應該像是在準備料理的食譜一樣,精心的針對我們想要的最終結果去準備食材。

2. 一個好的Dataset的組成

第一段花了很多篇幅講了Data跟Transfer Learning的關係,提到了每個Dataset、任務都有可能讓模型學會某些類型的Transferable Ability。只要接受了這個結論,就馬上會想到我的下個結論:

一個好的Training Dataset應該同時包含兩種類型的Dataset:

  1. 目標任務的Training data
  2. 能帶給模型重要的Transferable Ability的相關Training data。
好的Dataset示意圖

更形象一點,如果我們要做一個UberEat的客服機器人。

我們的資料集除了要有UberEat的客服對話資料(目標任務)以外,最好能教會模型基礎對話能力日常生活常識。而這個概念就是Data Mixture,是我認為在LLM pretraining跟finetuning中最重要的關鍵。

Data Mixture: 我們應該在Training dataset中以多少比例包含哪些資料。

3. Data Mixture

Data Mixture在LLM的pretraining跟instruction tuning階段都至關重要。
這個段落就希望把2023年最重要的關於Data Mixture的知識都梳理一遍。

Data Mixture = 在Training Data中我們要混進去哪些"種類"的資料,藉此帶給LLM那些特定的能力。

一般來說,我們會在三個階段思考關於Data Mixture這個問題,這些階段分別是Pretraining、Continual Pretraining和Supervised Finetuning。在每個階段,我們都需要仔細考慮我們所使用的Data Mixture。

A. Pretraining 階段

Pretraining在我心中是LLM訓練中最重要的過程,因為他耗費了巨大的運算量跟訓練量,LLaMa-2就已經做到2T的tokens,Qwen用了3T的tokens,未來更多Pretraining的模型很有可能也會運用更大量的token,或是更好的資料來進行pretraining。因為訓練量極大,所以這個階段也是LLM學習到最多能力的階段。

Meta AI跟PSL University [5]在23年6月就做了一個非常有趣的實驗,在GPT2的Pretraining過程中隨著時間會學習到越來越多不一樣的語言能力(如下圖),而這甚至只在GPT2 * 48GB的訓練資料而已。

figure from [5]

因為Pretraining階段LLM會學到最多基礎能力,所以就像是要教小孩一樣,打好基礎的重點是:甚麼都要學到,並且不要過於偏科。

在過去我們已知幾件事

  1. 從GPT2 openAI僅用WikiText就讓模型學會相對robust的語言能力 [5]。
  2. Chinchilla跟LLaMa1套用了遠比GPT2更diverse的Data Mixture [6]。有Common Crawl跟C4兩個大範圍Web crawling + cleaning的資料集強化語言能力跟大部分的知識、常識,也有Wikipedia這種提供較正式的知識內容,The Pile包含大量文學類型的書籍,StackExchange跟Github提供coding內容,Arxiv提供進階的學術知識。(非常建議每個從業人員最少從這些Data source中認真做分析,更了解training data。)
  3. 單獨train在Common Crawl就提供LLM相對強勁的基礎常識 [7],在MMLU上可以比混了Wikipedia的Data mixture達到更好的分數,但差距不明顯。
  4. Galactica [8] 跟Minerva [9] 使用更多的論文比重,全方位的提升了LLM的理解能力以及自然科學的相關知識。
  5. 加入Code data 可能可以提升 LLM的理解能力 [10, 11]。
  6. LLaMa2之後Meta為了提升模型的coding能力,又額外訓練了500B的coding data才得到code-llama。[12]
  7. LLaMa1的訓練資料中,89.7%是英文,中文只有不到0.13%,所以中文能力很差。[13]
  8. Baichuan2跟Qwen分別用了2.6T跟3T tokens,並且絕大多數都是中文跟英文的資料,才把模型做成足夠強的雙語模型。[14, 15]

第1跟第2點,建立了基準的Pretraining data,而3~6則是可以幫助思考"文理平衡",就像我們以前國中小,文科理科都要學習,3~6點我則把文科跟理科分別的代表Pretraining data列出來,而7跟8則是考慮多語言。

上面我只有真的列最基礎的知識,具體怎麼配比、怎麼樣去做訓練,建議大家還是多參考我上面分享的論文以及各種Foundation model的論文。

目前國內真的有能力做Pretraining的公司寥寥無幾,因此大多時候我們都是使用國外Pretrained好的大模型,Ex: LLaMa-2, Mistral, Baichuan, Qwen, Yi …等。

因此對大部份組織而言,我認為需要學會的是:

  1. 知道如何解讀Public Benchmark的分數,不同分數分別可以代表LLM的哪些基礎能力。
  2. 更進一步回頭判斷,今天是哪些Pretraining data帶給LLM這些你想要的基礎能力。

B. Continual Pretraining 階段

相較於pretraining,Continual pretraining的重點是在已有基礎能力的模型上加強在模型domain的知識。一般而言是使用10B~100 tokens的資料來繼續做pretraining,因此我們稱為continual pretraining。

在Continual pretraining的過程中,最害怕的其實就是模型在學新知識的過程中把舊的知識接連忘掉,也就是俗稱的Forgetting。

Harvard跟Stanford就曾發表論文驗證LLM training的過程中的Forgetting問題。隨著LLM學習新的知識,最一開始學習的知識會不斷的遺忘。[16](如下圖)

forgetting figure from [16]

因此在continual pretraining這個階段通常我們會「混入帶給模型通用知識的資料」,讓模型不斷「複習」這些重要知識。

BloomBergGPT在訓練時用了金融資料跟通用資料1:1的比例[17],ChatHome則進行ablation study發現領域資料跟通用資料大概在1:5~1:10之間[18]。(如下圖)

figure from ChatHome

不過關鍵不是「哪個比例最好?」,而是在進行Continual pretraining的時候,一定要藉由loss來觀測Forgetting的狀況,並且運用Scaling law來找出最好的data配比。

C. Supervised finetuning 階段

Supervised finetuning階段,我們有兩個目標:1. 希望模型學會對話、解決任務,而不是單純預測下一個字。2. 額外再讓模型學會特定領域的任務能力。

我們一樣要考量Forgetting的問題,我們依然重視的是「讓LLM學會專業任務的前提下,也要兼顧基礎能力,不要變成一個只會解任務的專家。

很多公司會收集完一包特定任務的SFT data就直接丟下去finetune,結果finetune 3~5個epoch後發現LLM完全忘記怎麼講話。這就是典型的把模型訓練成只會解特定任務的專家了。

Google在2022年提出Flan v2[19] dataset,用來讓LLM學會解決通用任務跟對話,而Flan v2中顯現出,當我們把越來越多種類的supervised data包含進我們的SFT data後,可以顯著提升我們模型全方面的能力

Finetuning data mixture from Flan v2 [19]
results from Flan v2 [19]

MAmmoTH [20]採取類似概念,在訓練模型數學理解能力時,也混入大量不同方面的數學理解finetuning data,並構建出MathInstruct,包含大部分的數學通用能力。(如下圖)。

MathInstruct Data mi

帶來的是不論在in-domain還是out-domain的測試集上,都遠優於原本的SOTA(如下圖)

MAMMOTH results

因此當我們要進行SFT的時候,我們不只要特定任務的data,還要盡量混一些跟這個任務相關的其他supervised finetuning data,讓模型變成一個大範圍任務都通用的通才,而非學會特定任務就忘記基礎能力。

SFT Dataset的3種邏輯

4. Data Quality

前面花了大量篇幅說明Data mixture的重要性,最後無法避免的還是要提到Data本身的品質(Quality)。

Data Quality因為知識也很多,我之後應該也會額外用一篇進行更詳細的介紹,不過這邊就提幾個最重要的研究。

在提到細節前,要先了解的是Data Quality在LLM的training、finetuning過程中通常包含兩種涵義:
微觀層面:每一筆Data本身format是好的(Ex: 好學、包含足夠多資訊)
巨觀層面:Dataset整體沒有contain任何會讓LLM學壞或是學不起來的性質(Ex: 重複資料太多、過多情色或暴力內容…等)

先來講微觀層面:每一筆Data本身format是好的。

Lee et al. [22]發現,當我們要讓模型學會基礎的加減乘除,如果只是單純的把128+367=495這樣的等式放進訓練資料,模型學習會有一個明顯的天花板,並且學習速率也較慢。但是如果我們把更多的運算過程,包含中間逐位運算以及進位的過程都加入訓練資料,這種時候模型就會以更短的時間、更少的訓練資料學會基礎數學運算。(如下圖)

figure from [22] 可以明顯看到,當我們資料中推理過程越齊全,整個模型越好訓練

在前面我們提到的MAmmoTH[20],其實也採用CoT跟PoT來構建他的Supervised Finetuning dataset,以達到更好的效果。如果不清楚CoT跟PoT的話,我後面也會用一篇來說明,不過核心思想就是讓模型(Ex: GPT4)盡量詳細說明自己的思考過程,藉此得到更完整的訓練資料。

因此微觀層面,其實影響模型學習的一個因素,就是你的訓練資料中,有沒有足夠詳盡的推理過程。這其實也很好理解,如果模型都只看「問題-答案」,那很多時候可能只是在背答案,如果給模型看「問題-答案-解題過程」,那模型就能更清楚整個學習的重點、邏輯。

Meta也提出了LIMA [23],說明微觀層面上,如果Data的品質夠高,我們可以用很少量的SFT data,就讓模型學會跟人對話。在LIMA論文中,他們只使用1,000個sample就達到了比其他SOTA更強的效果。

我想很多人都知道LIMA,也知道「SFT Data的品質比SFT Data的數量更重要」這個結論,但是LIMA具體Data有多好,可能是大家比較沒有注意的。我想要特別提兩點。

第一、LIMA裡面Task Diversity超高

跟我前面提的SFT要盡量加大diversity一致,LIMA在緊緊1,000筆資料,就cover的STEM, wiki, code, …等領域

Data mixture from LIMA [23]

而且如果你逐一去看裡面的資料,STEM就包含了75種不一樣的領域,而Other則更包含了99種不同的問題領域(英文問題、廚藝問題...等)。所以LIMA即便只用1000筆資料,還是保證了Task diversity。

第二、LIMA裡面過半資料有完整的解釋,而不是單純的回答問題而已。

推薦大家去逐一筆看LIMA的資料品質有多高,不過以下拿一筆資料作為範例。LIMA的資料大多遵循類似的風格,回答問題時包含「基礎回答、引經據典、詳細的說明、最後再次總結」。

Data sample from LIMA

這種格式其實也跟我們前面的數學運算例子一樣,在學習數學運算中我們希望看到每一位的運算過程跟進位的過程。而在LIMA中,每次回答問題,都提供思考跟推理過程,以及完整的論述,這才是所謂「高品質的資料」。

巨觀層面的問題又更多了,我打算留到之後用其他篇幅來進行說明。

結語

Data是幾乎所有公司在開發自己的LLM時都會遇到的問題。Data需要考量的面相又多又複雜,我自己最重視的就是兩點:Data Mixture跟Data Quality。

Data Mixture思考的是:我們要在Training data中加入哪些種類的Data?帶給LLM哪些能力?

Data Quality則要從微觀跟巨觀考量,圍觀考量每一個Data point是否可學、好學?巨觀則考量整的Dataset是否有某些糟糕的性質沒有被處理好?

這篇我提供一些過去半年對我很有幫助的思考脈絡及研究,即便如此依然還有很多東西沒辦法完整敘述,建議有興趣的人再從Reference paper中去深入思考更多的問題,以及期待我這個系列之後的更新。

Reference

  1. Zamir, Amir R., et al. “Taskonomy: Disentangling task transfer learning.” Proceedings of the IEEE conference on computer vision and pattern recognition. 2018.
  2. Sarzynska-Wawer, Justyna, et al. “Detecting formal thought disorder by deep contextualized word representations.” Psychiatry Research 304 (2021): 114135.
  3. Devlin, Jacob, et al. “Bert: Pre-training of deep bidirectional transformers for language understanding.” arXiv preprint arXiv:1810.04805 (2018).
  4. Zhou, Jing, et al. “Not All Tasks Are Born Equal: Understanding Zero-Shot Generalization.” The Eleventh International Conference on Learning Representations. 2022.
  5. Evanson, Linnea, Yair Lakretz, and Jean-Rémi King. “Language acquisition: do children and language models follow similar learning stages?.” arXiv preprint arXiv:2306.03586 (2023).
  6. Touvron, Hugo, et al. “Llama: Open and efficient foundation language models.” arXiv preprint arXiv:2302.13971 (2023).
  7. Shen, Zhiqiang, et al. “SlimPajama-DC: Understanding Data Combinations for LLM Training.” arXiv preprint arXiv:2309.10818 (2023).
  8. Taylor, Ross, et al. “Galactica: A large language model for science.” arXiv preprint arXiv:2211.09085 (2022).
  9. Lewkowycz, Aitor, et al. “Solving quantitative reasoning problems with language models.” Advances in Neural Information Processing Systems 35 (2022): 3843–3857.
  10. Yang, Ke, et al. “If LLM Is the Wizard, Then Code Is the Wand: A Survey on How Code Empowers Large Language Models to Serve as Intelligent Agents.” arXiv preprint arXiv:2401.00812 (2024).
  11. Hao Fu, Yao; Peng and Tushar Khot. 2022. How does gpt obtain its ability? tracing emergent abilities of language models to their sources. Yao Fu’s Notion.
  12. Roziere, Baptiste, et al. “Code llama: Open foundation models for code.” arXiv preprint arXiv:2308.12950 (2023).
  13. Touvron, Hugo, et al. “Llama 2: Open foundation and fine-tuned chat models.” arXiv preprint arXiv:2307.09288 (2023).
  14. Bai, Jinze, et al. “Qwen technical report.” arXiv preprint arXiv:2309.16609 (2023).
  15. Yang, Aiyuan, et al. “Baichuan 2: Open large-scale language models.” arXiv preprint arXiv:2309.10305 (2023).
  16. Kleiman, Anat, et al. “Predicting Task Forgetting in Large Language Models.” (2023).
  17. Wu, Shijie, et al. “Bloomberggpt: A large language model for finance.” arXiv preprint arXiv:2303.17564 (2023).
  18. Wen, Cheng, et al. “ChatHome: Development and Evaluation of a Domain-Specific Language Model for Home Renovation.” arXiv preprint arXiv:2307.15290 (2023).
  19. Chung, Hyung Won, et al. “Scaling instruction-finetuned language models.” arXiv preprint arXiv:2210.11416 (2022).
  20. Yue, Xiang, et al. “Mammoth: Building math generalist models through hybrid instruction tuning.” arXiv preprint arXiv:2309.05653 (2023).
  21. Penedo, Guilherme, et al. “The RefinedWeb dataset for Falcon LLM: outperforming curated corpora with web data, and web data only.” arXiv preprint arXiv:2306.01116 (2023).
  22. Lee, Nayoung, et al. “Teaching arithmetic to small transformers.” arXiv preprint arXiv:2307.03381 (2023).
  23. Zhou, Chunting, et al. “Lima: Less is more for alignment.” arXiv preprint arXiv:2305.11206 (2023).

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

倢愷 Oscar
倢愷 Oscar

Written by 倢愷 Oscar

我是倢愷,CTO at TeraThinker an AI Adaptive Learning System Company。AI/HCI研究者,超過100場的ML、DL演講、workshop經驗。主要學習如何將AI落地於業界。 有家教、演講合作,可以email跟我聯絡:axk51013@gmail.com

Responses (2)

Write a response