【專欄】ckip-llama-2真的有這麼爛嗎?淺談LLMs的training與data的關係。

倢愷 Oscar
12 min readOct 9, 2023

--

雙十連假FB上討論熱度最高的一個議題就是中研院推出的ckip-llama-2在各種政治、國家相關問題上的大翻車,問他自己屬於哪個國家會回中國,問國慶日會回10/1 … 等(ckip-llama-2已於連假下架,我們可以期待中研院做出一版更好的LLMs)。

先講結論,我認為ckip-llama-2並沒有這麼差,他們在解決一個非常重要的問題,也走對了方向,只是目前才剛開始走而已。

要理解我上面這個論點,要先理解LLMs的training的不同階段。

slides from Andrej Karpathy State of GPT: https://karpathy.ai/stateofgpt.pdf

一般而言LLMs training可以分3個階段:

  • Pretraining(預訓練):目的是利用極為大量的Text data,來學習基礎的語言邏輯、常識與知識。
  • Instruction (Supervised) Tuning(指令微調):藉由問答的pair,來讓LLMs學會回答人類的問題,依循人類的指令。
  • RLHF(Reinforcement Learning from Human Feedback):利用人類或是Reward model的feedback來加強安全性...等各方面。

我們今天先專注討論前兩部分Pretraining及Instruction Tuning,理解ckip-llama-2遇到的困境及提出來的解決方案。

Pretraining(預訓練)

Pretraining目前所有LLMs都是使用Language modeling(預測下一個字)這個訓練方法,因此決定Pretraining好壞的其實關鍵就是Data。

Data在Pretraining這塊主要有幾個面向要思考:1.Data的量要多少?、2.Data的品質如何?、3.Data中蘊含的知識?

這三個問題都非常非常的困難,之後有機會再額外開一個專欄來詳細說明。這邊就先簡述。

一、Data的量要多少?

2022年Google Deepmind提出了Chinchilla optimal [1],指出在一樣的computation量下,Data跟Parameters的關係應該要依據一個特定比例,可以訓練的最好,也是俗稱的Chinchilla scaling law。

chinchilla scaling law

Chinchilla optimal是在固定的computation下最佳的比例,但是很多時候computation雖然很稀少,但是我們還是希望盡量讓我們的model越強越好,因此Harm de Vries [2]指出我們可以藉由 "浪費computation,給模型過多的訓練資料" 變得比chinchilla optimal更好。這很直覺,訓練越久、越多資料,模型本來就該越好。目前在Pretraining這塊我認為共識都還是資料越多越好,所以從llama 1的1.4T到llama 2變成2T的資料。

二、Data的品質如何?

Data的品質是第二個大家重視的點,從傳統Data sciense大家就一直講"Garbage in, Garbage out"。在LLM這塊最典型的就是Falcon [3] 的作者,在Falcon的paper [3] 中提出:「我們是靠資料清理贏過LLaMa的」(雖然我認為並沒有真的贏)。

falcon data cleaning pipeline [3]

從上圖可以看到他們做了非常大量的資料清理工作,從基礎的語言識別到各式各樣的去重複,藉此讓LLMs學習diverse且高品質的文本。對LLM Pretraining而言,品質一直都是最重要的一個點之一。

三、Data中蘊含的知識?

Pretraining階段中,如果你在Training data中放入不同知識的Data,LLM就會學會對應的知識。

讓我們來看Falcon、MPT跟LLaMa的pretraining data mixture。

我特別標出來他們pretraining data中包含了多少比例的code data,從少到多分別是Falcon < LLaMa < MPT,而這也直接影響到了downstream performance。

從上圖可以看到Programming的能力也依序是Falcon-7B < LLaMa-7B < MPT-7B。

這是一個最直接顯現不同pretraining會導致不同的LLMs能力的一個簡單範例。

Instruction Tuning(指令微調)

Instruction Tuning的關鍵是讓LLMs學會跟人對話,讓人滿意。如果一個LLM只經過Pretraining而沒有instruction tuning,最直接的結果就是他可能每個問題都用接龍的形式下去,偶爾會續問下一個問題,偶爾會直接回幾個字就結束而不解釋。

因此,如何構建出對應的Instruction tuning dataset變得也相當重要。

在Instruction Tuning Data這邊最少也有兩個點要考慮:1. Data Diversity、2. Data Quality。

一、Data Diversity

Google於2022年提出的Flan2022 instruction tuning dataset [5]總共包含了1,836個不一樣的task。

極為Diverse的dataset讓LLMs學習到不同任務、不同問題的解決方法、回答方式。從實驗上我們也可以看到加入越多不一樣的任務,LLMs在downstream的performance也就越好。

因此Instruction tuning dataset的發展,其實沿著一條明顯的軸在進行,就是包含越來越多的任務,我們的LLM就會越好。btw 雖然flan2022包含了非常多的任務,但是在instruction tuning這個階段的training tokens總量跟pretraining相比就是九牛一毛,大多都在幾十B tokens這個levels。

二、Data Quality

Data Quality是幾個月前被LLaMa-2提起並引起大家重視,Meta也發了一篇論文說明在instruction tuning這個階段Quality(品質)比Quantity(數量)更重要,Lima: Less is more for alignment. [6]。

Lima顯現了,只要1,000條instruction tuning data,就可以比很多訓練更久的LLMs表現更好。

這個結論我相信很多相關領域從業者都知道,但是我想特別提,很少人真的去一行一行看Lima的data,了解所謂的"好的Data Quality"到底有多好。

首先在diversity這塊,Lima也做得非常好,光是其中stack exchange這個部分(179題),就包含了174種不一樣類型的問題,如果你真的去一筆一筆看,裡面真的每一題都是完全不一樣的domain。

再來,如果仔細看Lima裡面的data,大多data都包含3個性質:1. step by step回答問題、2. 提供詳細解釋、3. 補充額外知識。我想這三個性質的任何一個性質,都很難簡單的label出來。這邊就不截圖了,推薦大家去Lima的dataset裡面一筆一筆看。

講完pretraining跟instruction tuning的基礎知識,我們來思考看看ckip-llama-2面對的問題。

  1. 純台灣的pretraining繁體中文語料不足
  2. 純台灣的instruction tuning data不論是quality還是quantity都不足。

而第二點我想就是ckip-llama-2今天翻車的原因。

第一點,pretraining的繁體中文語料,我相信中研院過去的累積,應該有一些較高品質的語料,用common-crawl也可以爬一些資料下來,雖然有進步空間,但是我認為應該可以解決。

Instruction tuning語料就很困難了,回頭看flan2022跟lima,lima使用的是美國各大「問答論壇(Stack exchange, wikihow)」的資料。問答論壇的好處是裡面不只是「天然的問答形式」,還有各種評分機制幫你篩選出最好的答案。而flan2022則是使用了各種NLP傳統任務(QA、NLI、…)的dataset。

這兩類型的data在台灣都非常稀少,台灣問答論壇最有名的恐怕就是大家小時候都用過的Yahoo 知識+但是Yahoo知識+ 有幾個原生很大的問題,1. 回答品質很低(大家應該小時候都知道,作業從知識+找答案一定出問題),2. 資料的年份過期,大概2012以後就沒多少人在使用Yahoo知識+了。

有些人可能會想到,可以訓練PTT的資料阿,PTT也是發問+回答的類型。但是只要稍微熟悉PTT的人就知道,PTT裡面的資料只會比Yahoo知識+更髒,因為PTT的生態跟互動模式裡面,回答問題的比例只占其中很少一部份(不論是好是壞)。

Dcard可能是一個台灣的instruction tuning data的來源,我想這也是各大機構可以認真思考的事情,台灣現在有一個以大學生以上為主的問答論壇,也有評分機制,如果能夠拿Dcard的資料來訓練,說不定會是一個很好的來源。

撇除問答論壇,台灣本土的NLP任務集就更少了。我想這也是因為過去大家要發論文,就要去做各種英文的任務集

而我認為中研院就是希望能夠維持Instruction tuning的data quality、diversity及quantity,因為這些性質從研究進展上證明對LLMs的能力非常關鍵。因此其實一個最直接的方法,就是翻譯外來的instruction tuning data,因此他們翻譯了COIG。

不會有人不知道翻譯過來的training data會包含中國的知識,尤其中研院ckip team,從早期切詞到後來的中文BERT都貢獻許多。我想翻譯只是目前他們的權宜之計。

比起train中國的語料,不train好的instruction tuning dataset恐怕是更糟糕的一件事,這樣LLMs就只是一個接龍機器而已,不要說做各式各樣的NLP任務,跟人對話恐怕都有困難。

而CKIP-llama-2也正好,提醒了整個台灣業界、研究界,台灣目前有多缺乏各式各樣的繁體中文data。這個起因包含了台灣在Yahoo知識+跟dcard之間,缺乏一個有規模、有系統的問答論壇(PTT顯然不是),也包含台灣過去的NLP任務集發展較缺乏,更包含台灣各種文本的電子化程度過低,像是台灣的出版社,台灣的各類型作者跟翻譯在一大段時期品質都是遠高於中國的,但是到現在我們卻無法取得大量的繁體中文電子化的文本。這些都是台灣在LLMs這個賽道上的天生缺陷,這恐怕也需要政府或是一個足夠體量的企業才能解決,而也必須解決。

結語

我認為ckip-llama-2的確有不好的地方,但是他們的目的是好的,也就是要找出高quality、diversity的instruction tuning dataset。他們方法我認為也是沒有問題的,先從翻譯入手,中國的COIG裡面也包含了大量的從英文翻譯過來的資料。

下一步要做的就是更精準的data cleaning,盡量把敏感議題過濾掉,跟從本土的文本構建出本土的flan-Taiwan ? 如果有任何機構正在嘗試這塊也歡迎聯繫我交流想法,我認為這也是現階段最應該做的事情之一。

Reference

[1] Hoffmann, Jordan, et al. “Training compute-optimal large language models.” arXiv preprint arXiv:2203.15556 (2022).

[2] Harm de Vries. “Go smol or go home. Why we should train smaller LLMs on more tokens” 2023

[3] 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).

[4] Introducing MPT-7B: A New Standard for Open-Source, Commercially Usable LLMs https://www.mosaicml.com/blog/mpt-7b

[5] Chung, Hyung Won, et al. “Scaling instruction-finetuned language models.” arXiv preprint arXiv:2210.11416 (2022).

[6] Zhou, Chunting, et al. “Lima: Less is more for alignment.” arXiv preprint arXiv:2305.11206 (2023).

[7] Chinese Open Instruction Generalist(COIG) https://huggingface.co/datasets/BAAI/COIG

--

--

倢愷 Oscar

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