言語モデリング。このコードベースには、[1]からのG-LSTMおよびF-LSTMセルの実装が含まれています。また、いくつかの継続的な実験が含まれている場合があります。
このコードは、https://github.com/rafaljozefowicz/lmからフォークされ、[2]の「biglstm」言語モデルベースラインが含まれています。
現在のコードはTensorflow R1.5で実行され、同期された勾配更新を使用してマルチGPUデータの並列性をサポートします。
1つのDGX-1で8 GPUを使用した10億語のベンチマークで、Big G-LSTM G4は2週間のトレーニング後に24.29、3週間後に23.36を達成することができました。
2018年2月6日に、実験セットアップの問題が見つかりました。これにより、論文にリストされている困惑が無効になりました。
以下の表の現在の数字を参照してください。
DGXステーションでは、4つのGPUすべて(Tesla V100)とGPUあたり256のバッチサイズを使用した1週間のトレーニングの後:
| モデル | 困惑 | ステップ | WPS |
|---|---|---|---|
| biglstm | 35.1 | 〜0.99m | 〜33.8k |
| ビッグF-LSTM F512 | 36.3 | 〜1.67m | 〜56.5k |
| 大きなG-LSTM G4 | 40.6 | 〜1.65m | 〜56k |
| 大きなG-LSTM G2 | 36 | 〜1.37m | 〜47.1k |
| ビッグG-LSTM G8 | 39.4 | 〜1.7m | 〜58.5 |
データディレクトリが次のとおりであると仮定します: /raid/okuchaiev/Data/LM1B/1-billion-word-language-modeling-benchmark-r13output/ 、execute:
export CUDA_VISIBLE_DEVICES=0,1,2,3
SECONDS=604800
LOGSUFFIX=FLSTM-F512-1week
python /home/okuchaiev/repos/f-lm/single_lm_train.py --logdir=/raid/okuchaiev/Workspace/LM/GLSTM-G4/$LOGSUFFIX --num_gpus=4 --datadir=/raid/okuchaiev/Data/LM/LM1B/1-billion-word-language-modeling-benchmark-r13output/ --hpconfig run_profiler=False,float16_rnn=False,max_time=$SECONDS,num_steps=20,num_shards=8,num_layers=2,learning_rate=0.2,max_grad_norm=1,keep_prob=0.9,emb_size=1024,projected_size=1024,state_size=8192,num_sampled=8192,batch_size=256,fact_size=512 >> train_$LOGSUFFIX.log 2>&1
python /home/okuchaiev/repos/f-lm/single_lm_train.py --logdir=/raid/okuchaiev/Workspace/LM/GLSTM-G4/$LOGSUFFIX --num_gpus=1 --mode=eval_full --datadir=/raid/okuchaiev/Data/LM/LM1B/1-billion-word-language-modeling-benchmark-r13output/ --hpconfig run_profiler=False,float16_rnn=False,max_time=$SECONDS,num_steps=20,num_shards=8,num_layers=2,learning_rate=0.2,max_grad_norm=1,keep_prob=0.9,emb_size=1024,projected_size=1024,state_size=8192,num_sampled=8192,batch_size=1,fact_size=512
num_of_groupsパラメーターを指定します。fact_sizeパラメーターを指定します。現在のデータリーダーは、最終的な困惑にわずかな影響を与える可能性のあるミニバッチを構築する際にいくつかのトークンを逃す可能性があることに注意してください。
最も正確な結果を得るには、評価でbatch_size = 1およびnum_steps = 1を使用します。これに気づいてくれたCiprianに感謝します。
コマンドは、以下を含む、さまざまなハイパーパラメーターをオーバーライドできる--hpconfigを受け入れ、追加の引数を受け入れます。
フォークコードとGLSTM/FLSTMセル:[email protected]