該項目是一個Python模塊,可促進BERT進行預處理。當前現有的用於培訓的開源解決方案該特定模型被複雜化。我們簡化了該過程。該項目的目標是向更廣泛的機器學習社區打開代碼,以幫助ML從業者使用數據訓練自己的BERT模型。該代碼的創建是為了培訓VMware的BERT模型(VBERT)的最新迭代,以幫助機器學習和自然語言處理研究人員在VMware中。
演示筆記本位於演示文件夾中
設置Python 3.7或3.8虛擬Env,並使用pip install .從根文件夾中
或者
pip install git+https://github.com/vmware-labs/bert-pretraining
通過https://github.com/google-research/bert使用create_pretraining_data.py創建預處理數據。
如果要在培訓期間在單獨的評估集中評估模型的MLM和NSP精度,則可以創建一個單獨的評估文件。
您還可以通過使用配置對像中的split_ratio參數將單個文件拆分為訓練和評估向量。
預處理參數通過prtraining_config類處理。請按照demo.ipynb進行操作,以驗證示例。
PROTRAINing_Config參數
| 範圍 | 預設值 | 描述 |
|---|---|---|
| model_name | Demobert | 模型名稱 |
| is_base | 真的 | 布爾值可在Bert-Base和Bert-large之間進行選擇 |
| max_seq_length | 128 | MSL,應與tfrecord文件一致(如果您想用不同的MSL預處理bert,例如生成2個單獨的文件,例如:128,512) |
| max_predictions_per_seq | 20 | 蒙面的令牌數量應與tfrecord文件一致 |
| num_train_steps | 1000 | 訓練模型的步驟數量,如果我們到達Tfrecord文件的末尾,則將終止(有意義的預處理需要更多的培訓步驟) |
| num_warmup_steps | 10 | 熱身步驟數量,伯特使用1%的訓練步驟作為熱身步驟 |
| Learning_rate | 1E-05 | 模型學習率 |
| train_batch_size | 32 | 培訓批量大小(跨GPU分開) |
| save_intermediate_checkpoints | 真的 | 為每個“ x”訓練步驟保存檢查點,由save_checkpoint_steps決定。檢查站將始終在培訓結束時保存 |
| save_intermediate_checkpoint_steps | 25000 | 在每個“ X”訓練步驟(不包括熱身步驟)之後,可以節省檢查站 |
| eval_batch_size | 32 | 評估批量尺寸(跨GPU分開) |
| max_eval_steps | 1000 | 執行評估的步驟數量何時沒有單獨的評估文件。 如果提供了單獨的評估文件或提供了split_ratio,則整個評估數據集用於評估 |
| eval_point | 1000 | 對每個“ X”訓練步驟執行評估 |
| split_ratio | 沒有任何 | 如果您想將培訓tfrecord拆分為train,eval數據集,則用於評估的培訓數據集的百分比。 如果沒有提供分率,則將使用培訓文件進行避免(評估步驟的數量由max_eval_steps參數控制) |
| init_checkpoint | 沒有任何 | 如果您正在恢復培訓,則提供了前往檢查點的路徑。如果您是從非默認檢查點(Bert-Base,Bert-large)初始化培訓,則提供模型檢查點名稱/路徑)。 |
| input_file | ./input/demo_msl128.tfrecord | 輸入tfrecord文件,使用create_pretratained_data.py創建,來自https://github.com/google-research/bert |
| eval_file | 沒有任何 | 如果要使用單獨的eval數據集,請從https://github.com/google-research/bert提供使用create_pretraining_data.py創建的輸入tfrecord文件 |
| log_csv | ./eval_results.csv | 存儲評估結果的文件** |
| output_dir | ./ckpts | 存儲檢查站的目錄 |
| num_gpu | 3 | 用於培訓的GPU數量 |
**輸出log_csv文件記錄超參數和評估結果
Demo.tfrecord文件是從Wikicorpus數據集創建的。
伯特(BERT)預測的項目團隊歡迎社區的貢獻。在開始使用此項目之前,請閱讀並簽署我們的貢獻者許可協議(https://cla.vmware.com/cla/1/preview)。如果您希望貢獻代碼,並且尚未簽署我們的貢獻許可協議(CLA),那麼我們的機器人將在打開拉動請求時提示您這樣做。有關CLA過程的任何疑問,請參閱我們的貢獻。 md。
Apache-2.0