使用句子令牌化培訓GPT-2變壓器語言模型。
該倉庫包含GPT-2的Pytorch實施,該實施支持多GPU培訓。它還在lm/gpt_2_tf中包含張量集實現,但不再開發。他們共享相同的數據準備腳本。 TF培訓命令是gpt-2-tf-train ,需要TensorFlow 1.13。下面的文檔適用於Pytorch版本。
內容
python 3.6+是每晚或1.6.0+的3.6+。下面假設在Virtualenv中工作。首先安裝適當版本的Pytorch,然後:
pip install -r要求.txt python setup.py開發
說明如下。另請參閱test/test_shakespeare.sh以獲取小型語料庫上的完整管道演示(在CPU上需要一分鐘)。
語料庫格式:具有頂級train , valid和test文件夾的目錄。每個頂級文件夾都可能包含子文件夾。在其中,必須帶有.txt擴展名的UTF-8編碼文本文件。
訓練句子模型並編碼語料庫支持多個語料庫的命令,在下面的示例中,我們假設它們可以列為data/corpora-* 。
火車句子模型(運行後可以刪除sp-text.txt )。這可以消耗大量內存,如果需要,請按建議進行調整句子參數( sp-train命令中不支持這一點):
SP-Train Data/Corpora-* Sp-Text.txt Sp-Model
編碼coldoa,生成numpy文件:
sp-consode數據/colda-* sp-model.model數據/編碼
示例命令:
gpt-2 run-root數據/編碼的SP-Model.model
run-root將包含模型檢查點和JSON-LINES日誌,可以在用json_log_plots.plot("run-root") Jupyter筆記本中繪製,並在X軸上看到數量的令牌。
默認的超參數對應於發布的“小” GPT-2模型。
當有多個GPU可用時,它們將在torch.distributed 。分佈的幫助下用於培訓。
如果存在路徑並且未通過--clean鑰匙,則將恢復培訓。請注意,仍需要指定所有參數,並且需要匹配模型參數。
培訓參數的註釋:
--batch-size為每gpu,因此您無需在更改GPU數量時重新調整它,只需使用適合內存的Max即可。--g-accum-gradients是梯度積累的全球數量,必須由GPU的數量除外。有效的全局批次大小始終為batch_size * g_accum_gradients 。--lr在更改--batch-size或--g-accum-gradients或GPU的數量或--n-ctx :損失的數量)時不需要更改。示例命令:
GPT-2-gen Run-root“人工智能”
run-root將包含模型檢查點"Artificial intelligence"是文本前綴,用作生成代幣的起點
關於推理參數的註釋:
--tokens-to-generate :生成的令牌數,默認值為42--top-k :為每個位置生成(樑寬度)生成的令牌候選數量,默認值為8。 許可證是麻省理工學院。
TensorFlow GPT-2模型取自https://github.com/openai/gpt-2/blob/master/master/src/src/model.py and tensorflow gpt-gpt-gpt-2訓練代碼基於https://github.com/nshepperperd/nsheperpperd/gpt/gpt/gpt-/gpt-2/blob/blob/finetuning/finetuning/finetuning/train.py.py.py.py.py.py.py.py.py.py
Pytorch端口基於原始OpenAI代碼。
測試莎士比亞語料庫tests/shakespeare來自公共領域的http://shakespeare.mit.edu。
另請參見OpenAI GPT-2紙和博客。