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]