このプロジェクトは、Bert Pretrainingを促進するPythonモジュールです。この特定のモデルをトレーニングするための現在の既存のオープンソースソリューションは複雑です。手順を簡素化しました。プロジェクトの目標は、より広い機械学習コミュニティにコードを開き、MLの実践者がデータを使用して独自のBertモデルを訓練できるようにすることです。このコードは、VMwareのBERTモデル(VBER)の最新のイテレーションをトレーニングするために作成されました。
デモノートブックは、デモフォルダー内にあります
Python 3.7または3.8 Virtual 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パラメーターを使用して、単一のファイルをトレーニングに分割し、ベクトルを評価することもできます。
事前削除パラメーターは、Pretraining_configクラスを介して処理されます。 demo.ipynbに従って、サンプルBert Pretrainingを実行してください。
pretraining_config params
| パラメーター | デフォルト値 | 説明 |
|---|---|---|
| model_name | デモバート | モデル名 |
| is_base | 真実 | Bert-BaseとBert-Largeを選択するためのブール |
| max_seq_length | 128 | MSLは、Trecordファイルと一致する必要があります(異なるMSLでBERTを取得する場合は、2つのSeperateファイルを生成します:128、512) |
| max_predictions_per_seq | 20 | MLM用にマスクされたトークンの数は、tfrecordファイルと一致する必要があります |
| num_train_steps | 1000 | モデルをトレーニングするための手順の数は、Tfrecordファイルの終了に到達した場合に終了します(意味のある事前トレーニングにはより多くのトレーニング手順が必要です) |
| num_warmup_steps | 10 | ウォームアップステップの数、バートはトレーニングステップの1%をウォームアップステップとして使用します |
| Learning_rate | 1E-05 | モデル学習率 |
| train_batch_size | 32 | バッチサイズのトレーニング(GPUを介して分割) |
| save_intermediate_checkpoints | 真実 | SAVE_CHECKPOINT_STEPSによって決定されたすべての「X」トレーニング手順のチェックポイントを保存します。チェックポイントは常にトレーニングの終わりに保存されます |
| save_intermediate_checkpoint_steps | 25000 | すべての「X」トレーニング手順の後にチェックポイントを保存します(ウォームアップステップを含まない) |
| eval_batch_size | 32 | 評価バッチサイズ(GPU間で分割) |
| max_eval_steps | 1000 | 別々の評価ファイルがない場合に評価を実行する手順の数。 別の評価ファイルが提供されている場合、またはsplit_ratioが提供されている場合、評価データセット全体が評価に使用されます |
| eval_point | 1000 | すべての「X」トレーニング手順の評価を実行します |
| split_ratio | なし | トレーニングに使用するトレーニングデータセットの割合は、トレーニングをトレーニング、評価データセットに分割したい場合。 スプリット比が提供されていない場合、トレーニングファイルは回避に使用されます(評価手順の数はMAX_EVAL_STEPSパラメーターによって制御されます) |
| init_checkpoint | なし | トレーニングを再開している場合は、以前のチェックポイントへのパスを提供します。非デフォルトチェックポイント(Bert-Base、Bert-Large)からトレーニングを初期化する場合は、モデルチェックポイント名/パスを提供します)。 |
| input_file | ./input/demo_msl128.tfrecord | https://github.com/google-research/bertからcreate_pretraining_data.pyを使用して作成されたtfrecordファイルを入力します |
| eval_file | なし | Seperate Eval Datasetを使用する場合は、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-Prestraining Projectチームは、コミュニティからの貢献を歓迎します。このプロジェクトの作業を開始する前に、貢献者ライセンス契約(https://cla.vmware.com/cla/1/preview)を読んで署名してください。コードを寄付したい場合、貢献者ライセンス契約(CLA)に署名していない場合、私たちのボットは、プルリクエストを開くときにそうするように促します。 CLAプロセスに関するご質問については、Contributing.mdを参照してください。
Apache-2.0