前言
?目前來說gpt2在生成式這塊效果還是比較突出的要糊。在嘗試 gpt2-chitchat 這個項目的時候梁棠,聊得挺好,首先感謝作者的貢獻,好像閑聊數(shù)據(jù)還@了我续扔。但是感覺代碼這塊還不夠優(yōu)雅答倡,所以就基于pytorch-lightning重寫了下。
gpt2-chitchat
?代碼傳送:gpt2-chitchat-pl
?關(guān)于模型介紹、效果展示可以直接訪問原作者的README.md辆它。我重寫之后有幾個參數(shù)這里說明下吧:
- train_mmi: 默認是False誊薄,會訓(xùn)練dialogue_model;如果是設(shè)為True锰茉,就是訓(xùn)練mmi_model
- use_pretrain: 默認是False呢蔫,意思是不使用預(yù)訓(xùn)練模型。如果設(shè)置為True的話飒筑,就需要將制定對應(yīng)的dialogue_model_path和mmi_model_path
- dialogue_model_path: 這里可以下載 yangjianxin1 提供的dialogue_model片吊,然后指定對應(yīng)的路徑
- mmi_model_path: 同dialogue_model_path一個意思
- train_raw_path: 訓(xùn)練數(shù)據(jù)
- model_config: gpt2 config配置文件
- vocab_path: 字典文件
?當你設(shè)定好了對應(yīng)的參數(shù)后就可以重頭訓(xùn)練或者微調(diào)模型了
- 重頭訓(xùn)練dialogue model
python train.py --train_mmi=False --use_pretrain=False
- 微調(diào)dialogue model
python train.py --train_mmi=False --use_pretrain=True --dialogue_model_path=/path/to/dialogue_pre_model
- 重頭訓(xùn)練mmi model
python train.py --train_mmi=True --use_pretrain=False
- 微調(diào)mmi model
python train.py --train_mmi=True --use_pretrain=True --mmi_model_path=/path/to/mmi_pre_model
上面是訓(xùn)練模型的參數(shù)和命令。至于消費模型的代碼是run_interact.py协屡,對應(yīng)的參數(shù)有:
- output_dir: 訓(xùn)練好模型的路徑
- batch_size: 批量生成response的個數(shù), 然后經(jīng)過MMI模型進行篩選
命令是:python run_interact.py --output_dir=/path/to/your/model_path
結(jié)束語
?具體的細節(jié)可以查看和調(diào)試代碼俏脊,感覺水了一篇文章。無論是dialogue model還是mmi model模型用的都是seq2seq著瓶,只不過輸入不一樣联予,至于多輪也就是把history用[SEP]拼接了一下,mmi將語料做了個翻轉(zhuǎn)材原,就醬(可能這就是使用框架帶來的便利吧沸久,減少了自己的關(guān)注點)。本來想寫一篇關(guān)于ner的余蟹,也是沒啥好說的卷胯,所以可以直接看代碼吧run_ner_pl.py,會存在個問題威酒,因為是直接使用的token classification窑睁,換成crf是否會好點。