Языковое моделирование. Эта кодовая база содержит реализацию ячеек G-LSTM и F-LSTM из [1]. Это также может содержать некоторые текущие эксперименты.
Этот код был раздвоен от https://github.com/rafaljozefowicz/lm и содержит базовую линию языковой модели «biglstm» от [2].
Текущий код работает на Tensorflow R1.5 и поддерживает параллелизм данных с несколькими GPU с использованием обновлений синхронизированного градиента.
По одному миллиарду слов, используя 8 графических процессоров в одном DGX-1, Big G-LSTM G4 смог достичь 24,29 после 2 недель обучения и 23,36 через 3 недели.
02/06/2018 мы нашли проблему с нашей экспериментальной установкой, которая делает недопустимые цифры, перечисленные в статье.
См. Текущие числа в таблице ниже.
На станции DGX, после 1 недели тренировок с использованием всех 4 графических процессоров (Tesla V100) и размера партии 256 за графический процессор:
| Модель | Недоумение | Шаги | Wps |
|---|---|---|---|
| Biglstm | 35,1 | ~ 0,99 м | ~ 33,8K |
| Большой F-LSTM F512 | 36.3 | ~ 1,67 м | ~ 56,5K |
| Большой G-LSTM G4 | 40.6 | ~ 1,65 м | ~ 56K |
| Большой G-LSTM G2 | 36 | ~ 1,37 м | ~ 47.1k |
| Большой G-LSTM G8 | 39,4 | ~ 1,7 м | ~ 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]