Modélisation linguistique. Cette base de code contient l'implémentation des cellules G-LSTM et F-LSTM de [1]. Il pourrait également contenir des expériences en cours.
Ce code a été fourché à partir de https://github.com/rafaljozefowicz/lm et contient le modèle de modèle de langue "biglstm" de [2].
Le code actuel s'exécute sur TensorFlow R1.5 et prend en charge le parallélisme de données multi-GPU à l'aide des mises à jour de gradient synchronisées.
Sur un milliard de mots de référence utilisant 8 GPU dans un DGX-1, le Big G-LSTM G4 a pu atteindre 24,29 après 2 semaines de formation et 23,36 après 3 semaines.
Le 02/06/2018, nous avons trouvé un problème avec notre configuration expérimentale qui rend les numéros de perplexité répertoriés dans le document invalide.
Voir les numéros actuels dans le tableau ci-dessous.
Sur la station DGX, après 1 semaine de formation en utilisant les 4 GPU (Tesla V100) et une taille de lot de 256 par GPU:
| Modèle | Perplexité | Mesures | WPS |
|---|---|---|---|
| Biglstm | 35.1 | ~ 0,99 m | ~ 33,8k |
| Big F-LSTM F512 | 36.3 | ~ 1,67m | ~ 56,5k |
| GRAND G-LSTM G4 | 40.6 | ~ 1,65 m | ~ 56K |
| GRAND G-LSTM G2 | 36 | ~ 1,37m | ~ 47.1k |
| GRAND G-LSTM G8 | 39.4 | ~ 1,7 m | ~ 58,5 |
En supposant que le répertoire de données est dans: /raid/okuchaiev/Data/LM1B/1-billion-word-language-modeling-benchmark-r13output/ , exécuter:
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 .Notez que le lecteur de données actuel peut manquer des jetons lors de la construction de mini-lots qui peuvent avoir un effet mineur sur la perplexité finale.
Pour les résultats les plus précis , utilisez Batch_size = 1 et num_steps = 1 dans l'évaluation. Merci à CiPrian d'avoir remarqué cela.
La commande accepte et l'argument supplémentaire --hpconfig qui permet de remplacer divers hyper-paramètres, notamment:
Code fourked et cellules GLSTM / FLSTM: [email protected]