Pemodelan Bahasa. Basis kode ini berisi implementasi sel G-LSTM dan F-LSTM dari [1]. Ini juga mungkin mengandung beberapa percobaan yang sedang berlangsung.
Kode ini bercabang dari https://github.com/rafaljozefowicz/lm dan berisi baseline model bahasa "biglstm" dari [2].
Kode saat ini berjalan pada TensorFlow R1.5 dan mendukung paralelisme data multi-GPU menggunakan pembaruan gradien yang disinkronkan.
Pada satu miliar kata patokan menggunakan 8 GPU dalam satu DGX-1, Big G-LSTM G4 mampu mencapai 24,29 setelah 2 minggu pelatihan dan 23,36 setelah 3 minggu.
Pada 02/06/2018 kami menemukan masalah dengan pengaturan eksperimental kami yang membuat angka kebingungan yang terdaftar di kertas tidak valid.
Lihat nomor saat ini dalam tabel di bawah ini.
Di stasiun DGX, setelah 1 minggu pelatihan menggunakan semua 4 GPU (Tesla V100) dan ukuran batch 256 per GPU:
| Model | Kebingungan | Tangga | WPS |
|---|---|---|---|
| BIGLSTM | 35.1 | ~ 0,99m | ~ 33.8k |
| Big F-LSTM F512 | 36.3 | ~ 1.67m | ~ 56.5k |
| Big G-LSTM G4 | 40.6 | ~ 1.65m | ~ 56k |
| Big G-LSTM G2 | 36 | ~ 1.37m | ~ 47.1k |
| Big G-LSTM G8 | 39.4 | ~ 1,7m | ~ 58.5 |
Dengan asumsi direktori data ada di: /raid/okuchaiev/Data/LM1B/1-billion-word-language-modeling-benchmark-r13output/ , mengeksekusi:
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 .Perhatikan, bahwa pembaca data saat ini mungkin kehilangan beberapa token saat membangun mini-batch yang dapat memiliki efek kecil pada kebingungan akhir.
Untuk hasil yang paling akurat , gunakan batch_size = 1 dan num_steps = 1 dalam evaluasi. Terima kasih kepada Ciprian karena memperhatikan hal ini.
Perintah tersebut menerima dan argumen tambahan --hpconfig yang memungkinkan untuk mengesampingkan berbagai hyper-parameter, termasuk:
Kode bercabang dan sel GLSTM/FLSTM: [email protected]