作者:算力魔方創(chuàng)始人/英特爾創(chuàng)新大使劉力
《用PaddleNLP在4060單卡上實(shí)踐大模型預(yù)訓(xùn)練技術(shù)》發(fā)布后收到讀者熱烈反響,很多讀者要求進(jìn)一步講解更多的技術(shù)細(xì)節(jié)。本文主要針對大語言模型的預(yù)訓(xùn)練流程,使用PaddleNLP將FineWeb數(shù)據(jù)集中文本形式的數(shù)據(jù),經(jīng)過分詞化(Tokenize),轉(zhuǎn)換為大語言模型能直接使用的二進(jìn)制數(shù)據(jù),以便提升訓(xùn)練效果。
ChatGPT發(fā)布后,當(dāng)代大語言模型(LLM)的訓(xùn)練流程基本遵循OpenAI提出的”預(yù)訓(xùn)練+后訓(xùn)練”的訓(xùn)練范式。
預(yù)訓(xùn)練:將海量知識通過無監(jiān)督學(xué)習(xí)的方式壓縮到大語言模型的權(quán)重中,使其具備基本的通用能力,能預(yù)測下一個(gè)分詞。預(yù)訓(xùn)練得到的模型叫基礎(chǔ)大模型。
后訓(xùn)練:通過監(jiān)督微調(diào)(SFT)和強(qiáng)化學(xué)習(xí)(RL)等方式,讓大模型按人類專家的方式輸出知識,使其具備專業(yè)能力。
一,PaddleNLP簡介
PaddleNLP是一款基于飛槳深度學(xué)習(xí)框架的大語言模型(LLM)開發(fā)套件,支持在多種硬件上進(jìn)行高效的大模型訓(xùn)練、無損壓縮以及高性能推理。PaddleNLP 具備簡單易用和性能極致的特點(diǎn),致力于助力開發(fā)者實(shí)現(xiàn)高效的大模型產(chǎn)業(yè)級應(yīng)用。
Github: https://github.com/PaddlePaddle/PaddleNLP
使用PaddleNLP實(shí)現(xiàn)訓(xùn)練文本分詞化僅需三行代碼,如下所示:
# 導(dǎo)入PaddleNLP庫中的GPTTokenizer類 from paddlenlp.transformers import GPTTokenizer # 使用預(yù)訓(xùn)練的"gpt2-en"模型初始化GPTTokenizer,并設(shè)置bos_token為空字符串 tokenizer = GPTTokenizer.from_pretrained("gpt2-en", bos_token="") # 打印使用tokenizer對字符串"Hello, world!"進(jìn)行編碼后的結(jié)果 print(tokenizer.encode("Hello, world!"))
進(jìn)入:
https://tiktokenizer.vercel.app/?model=gpt2
可以對比PaddleNLP的GPTTokenzier對“Hello,World!”的分詞結(jié)果。
二,F(xiàn)ineWeb簡介
FineWeb是由Hugging Face團(tuán)隊(duì)于2024年推出的超大規(guī)模語言模型預(yù)訓(xùn)練數(shù)據(jù)集。作為目前最大的開源預(yù)訓(xùn)練數(shù)據(jù)集之一,F(xiàn)ineWeb數(shù)據(jù)集包含來自 CommonCrawl 的超過 15T 經(jīng)過清理和重復(fù)數(shù)據(jù)刪除的英文網(wǎng)絡(luò)數(shù)據(jù)。其高質(zhì)量的數(shù)據(jù),有助于大語言模型穩(wěn)定平穩(wěn)的完成預(yù)訓(xùn)練,而不會發(fā)生由重復(fù)低質(zhì)數(shù)據(jù)引發(fā)的Loss Spike。
Link: https://huggingface.co/datasets/HuggingFaceFW/fineweb
本文使用FineWeb數(shù)據(jù)集的sample-10BT子集作為GPT-2的預(yù)訓(xùn)練數(shù)據(jù)集。
三,開發(fā)環(huán)境準(zhǔn)備
本文的開發(fā)環(huán)境依賴PaddlePaddle、PaddleNLP、datasets和tqdm。
首先,請安裝PaddlePaddle框架:
pip install paddlepaddle
然后,安裝其它依賴項(xiàng):
pip install paddlenlp datasets tqdm
四,代碼實(shí)現(xiàn)
用PaddleNLP將FineWeb數(shù)據(jù)集進(jìn)行分詞化處理,然后轉(zhuǎn)換為大語言模型能直接使用的二進(jìn)制數(shù)據(jù)的關(guān)鍵步驟有:
1.從HuggingFace Hub加載fineweb數(shù)據(jù)集的10B樣本子集;
2.使用train_test_split按比例分割訓(xùn)練集和驗(yàn)證集;
3.對每個(gè)文本進(jìn)行編碼,添加結(jié)束符eot_token,返回ids和len;
4.為訓(xùn)練集和驗(yàn)證集分別創(chuàng)建.bin文件,使用np.memmap高效寫入。
關(guān)鍵代碼如下所示:
完整范例代碼請參見:
https://aistudio.baidu.com/projectdetail/8798975
運(yùn)行成功后,可以得到如下兩個(gè)文件:
五,總結(jié)
PaddleNLP好學(xué)易用,借助PaddleNLP的GPTTokenizer很容易實(shí)現(xiàn)FineWeb數(shù)據(jù)集的分詞化,并轉(zhuǎn)換為方便大模型預(yù)訓(xùn)練的二進(jìn)制數(shù)據(jù)!
如果你有更好的文章,歡迎投稿!
稿件接收郵箱:nami.liu@pasuntech.com
更多精彩內(nèi)容請關(guān)注“算力魔方?”!
審核編輯 黃宇
-
二進(jìn)制
+關(guān)注
關(guān)注
2文章
805瀏覽量
42199 -
數(shù)據(jù)集
+關(guān)注
關(guān)注
4文章
1223瀏覽量
25321 -
GPT
+關(guān)注
關(guān)注
0文章
368瀏覽量
15980
發(fā)布評論請先 登錄
用PaddleNLP在4060單卡上實(shí)踐大模型預(yù)訓(xùn)練技術(shù)

評論