寧波營銷型網(wǎng)站建設(shè)網(wǎng)絡(luò)銷售平臺(tái)有哪些
前言
- 這是我的github上的一個(gè)介紹,關(guān)于如何訓(xùn)練中文版本的gpt2的。
- 鏈接為: https://github.com/yuanzhoulvpi2017/zero_nlp
介紹
- 本文,將介紹如何使用中文語料,訓(xùn)練一個(gè)gpt2
- 可以使用你自己的數(shù)據(jù)訓(xùn)練,用來:寫新聞、寫古詩、寫對(duì)聯(lián)等
- 我這里也訓(xùn)練了一個(gè)中文gpt2模型,使用了
612萬
個(gè)樣本,每個(gè)樣本有512個(gè)tokens,總共相當(dāng)于大約31億個(gè)tokens
??安裝包
需要準(zhǔn)備好環(huán)境,也就是安裝需要的包
pip install -r requirements.txt
像是pytorch
這種基礎(chǔ)的包肯定也是要安裝的,就不提了。
數(shù)據(jù)
數(shù)據(jù)來源
- 獲得數(shù)據(jù):數(shù)據(jù)鏈接,關(guān)注公眾號(hào)【
統(tǒng)計(jì)學(xué)人
】,然后回復(fù)【gpt2
】即可獲得。 - 獲得我訓(xùn)練好的模型(使用了15GB的數(shù)據(jù)(
31億個(gè)tokens
),在一張3090上,訓(xùn)練了60多小時(shí))
數(shù)據(jù)格式
- 數(shù)據(jù)其實(shí)就是一系列文件夾📁,然后每一個(gè)文件夾里面有大量的文件,每一個(gè)文件都是
.csv
格式的文件。其中有一列數(shù)據(jù)是content
- 每一行的
content
就代表一句話,截圖如下
- 雖然數(shù)據(jù)有15GB那么大,但是處理起來一點(diǎn)也不復(fù)雜,使用
datasets
包,可以很輕松的處理大數(shù)據(jù),而我只需要傳遞所有的文件路徑即可,這個(gè)使用glob
包就能完成。
代碼
??訓(xùn)練代碼train_chinese_gpt2.ipynb
??注意
- 現(xiàn)在訓(xùn)練一個(gè)gpt2代碼,其實(shí)很簡單的。拋開處理數(shù)據(jù)問題,技術(shù)上就三點(diǎn):
tokenizer
、gpt2_model
、Trainer
tokenizer
使用的是bert-base-chinese
,然后再添加一下bos_token
、eos_token
、pad_token
。gpt2_model
使用的是gpt2,這里的gpt2我是從0開始訓(xùn)練的。而不是使用別人的預(yù)訓(xùn)練的gpt2
模型。Trainer
訓(xùn)練器使用的就是transformers
的Trainer
模塊。(支撐多卡并行,tensorboard等,都寫好的,直接調(diào)用就行了,非常好用)
📤推理代碼infer.ipynb
??注意
這個(gè)是chinese-gpt2
的推理代碼
- 將代碼中的
model_name_or_path = "checkpoint-36000"
里面的"checkpoint-36000"
,修改為模型所在的路徑。 - 然后運(yùn)行下面一個(gè)代碼塊,即可輸出文本生成結(jié)果
- 可以參考這個(gè)代碼,制作一個(gè)api,或者打包成一個(gè)函數(shù)或者類。
🤖交互機(jī)器人界面chatbot.py
??注意
- 修改代碼里面的第4行,這一行值為模型所在的位置,修改為我分享的模型文件路徑。
model_name_or_path = "checkpoint-36000"
- 運(yùn)行
python chatbot.py
- 點(diǎn)擊鏈接,即可在瀏覽器中打開機(jī)器人對(duì)話界面
更多
- 這個(gè)完整的項(xiàng)目下來,其實(shí)我都是全靠
huggingface
文檔、教程度過來的. - 我做的東西,也就是把
Tokenizer
改成中文的了,然后也整理了數(shù)據(jù),別的大部分東西,都不是我做的了. - 原文鏈接為https://huggingface.co/course/zh-CN/chapter7/6?fw=pt.
一起學(xué)習(xí)
其實(shí),我更喜歡做應(yīng)用,但是也要理解相關(guān)的背后原理,目前還在研究相關(guān)的gpt2原理還有相關(guān)的推理細(xì)節(jié),這是我整理的鏈接,希望可以共同進(jìn)步
- https://huggingface.co/blog/how-to-generate
- https://huggingface.co/gpt2
- https://huggingface.co/gpt2-large