作者:算力魔方創(chuàng)始人/英特爾創(chuàng)新大使劉力
《用PaddleNLP在4060單卡上實(shí)踐大模型預(yù)訓(xùn)練技術(shù)》發(fā)布后收到讀者熱烈反響,很多讀者要求進(jìn)一步講解更多的技術(shù)細(xì)節(jié)。本文主要針對(duì)大語言模型的預(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)練:將海量知識(shí)通過無監(jiān)督學(xué)習(xí)的方式壓縮到大語言模型的權(quán)重中,使其具備基本的通用能力,能預(yù)測(cè)下一個(gè)分詞。預(yù)訓(xùn)練得到的模型叫基礎(chǔ)大模型。
后訓(xùn)練:通過監(jiān)督微調(diào)(SFT)和強(qiáng)化學(xué)習(xí)(RL)等方式,讓大模型按人類專家的方式輸出知識(shí),使其具備專業(yè)能力。
一,PaddleNLP簡(jiǎn)介
PaddleNLP是一款基于飛槳深度學(xué)習(xí)框架的大語言模型(LLM)開發(fā)套件,支持在多種硬件上進(jìn)行高效的大模型訓(xùn)練、無損壓縮以及高性能推理。PaddleNLP 具備簡(jiǎn)單易用和性能極致的特點(diǎn),致力于助力開發(fā)者實(shí)現(xiàn)高效的大模型產(chǎn)業(yè)級(jí)應(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對(duì)字符串"Hello, world!"進(jìn)行編碼后的結(jié)果 print(tokenizer.encode("Hello, world!"))
進(jìn)入:
https://tiktokenizer.vercel.app/?model=gpt2
可以對(duì)比PaddleNLP的GPTTokenzier對(duì)“Hello,World!”的分詞結(jié)果。
二,F(xiàn)ineWeb簡(jiǎn)介
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)練,而不會(huì)發(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。
首先,請(qǐng)安裝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.對(duì)每個(gè)文本進(jìn)行編碼,添加結(jié)束符eot_token,返回ids和len;
4.為訓(xùn)練集和驗(yàn)證集分別創(chuàng)建.bin文件,使用np.memmap高效寫入。
關(guān)鍵代碼如下所示:
完整范例代碼請(qǐng)參見:
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)容請(qǐng)關(guān)注“算力魔方?”!
審核編輯 黃宇
-
二進(jìn)制
+關(guān)注
關(guān)注
2文章
803瀏覽量
42057 -
數(shù)據(jù)集
+關(guān)注
關(guān)注
4文章
1221瀏覽量
25197 -
GPT
+關(guān)注
關(guān)注
0文章
368瀏覽量
15864
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
用PaddleNLP在4060單卡上實(shí)踐大模型預(yù)訓(xùn)練技術(shù)

偏移二進(jìn)制和二進(jìn)制補(bǔ)碼如何和實(shí)際數(shù)據(jù)對(duì)應(yīng),如何轉(zhuǎn)換?
TLC2543的輸出結(jié)果應(yīng)為帶符號(hào)二進(jìn)制格式的數(shù)據(jù),現(xiàn)在輸出的結(jié)果為不帶符號(hào)的二進(jìn)制數(shù),這是因?yàn)槭裁丛颍?/a>
hex格式和二進(jìn)制的區(qū)別
在線二進(jìn)制編碼器:數(shù)據(jù)轉(zhuǎn)換的快捷通道
base64字符串轉(zhuǎn)換為二進(jìn)制文件
二進(jìn)制編碼器在自動(dòng)化領(lǐng)域的作用
二進(jìn)制編碼器的種類及特點(diǎn)
二進(jìn)制編碼器應(yīng)用場(chǎng)景 二進(jìn)制編碼器與模擬編碼器比較
二進(jìn)制編碼器工作原理 如何選擇二進(jìn)制編碼器
二進(jìn)制處理中的一些技巧
十進(jìn)制和4位二進(jìn)制計(jì)數(shù)器數(shù)據(jù)表

二進(jìn)制串行計(jì)數(shù)器工作原理是什么?
雙4位十進(jìn)制和二進(jìn)制計(jì)數(shù)器數(shù)據(jù)表

同步4位十進(jìn)制和二進(jìn)制計(jì)數(shù)器數(shù)據(jù)表

評(píng)論