f lm
1.0.0
語言建模。該代碼庫包含[1]的G-LSTM和F-LSTM單元的實現。它也可能包含一些正在進行的實驗。
該代碼摘自https://github.com/rafaljozefowicz/lm,並包含[2]的“ biglstm”語言模型基線。
當前代碼在TensorFlow R1.5上運行,並使用同步梯度更新支持多GPU數據並行性。
在一個DGX-1中使用8個GPU的十億個單詞基準中,Big G-LSTM G4在訓練2週後能夠達到24.29,在3週後23.36實現了23.36。
在2018年2月6日,我們發現了實驗設置的一個問題,該問題使紙張中列出的困惑數字無效。
請參閱下表中的當前數字。
在DGX站上,經過所有4個GPU(Tesla V100)的培訓1週後,每GPU的批次大小為256:
| 模型 | 困惑 | 步驟 | 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 | 〜137m | 〜47.1k |
| 大G-LSTM G8 | 39.4 | 〜1.7m | 〜58.5 |
假設數據目錄在: /raid/okuchaiev/Data/LM1B/1-billion-word-language-modeling-benchmark-r13output/ ,執行:
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]