언어 모델링. 이 코드베이스에는 [1]의 G-LSTM 및 F-LSTM 셀의 구현이 포함되어 있습니다. 또한 지속적인 실험이 포함될 수도 있습니다.
이 코드는 https://github.com/rafaljozefowicz/lm에서 포크되었으며 [2]의 "biglstm"언어 모델 기준을 포함합니다.
현재 코드는 Tensorflow R1.5에서 실행되며 동기화 된 그라디언트 업데이트를 사용하여 다중 GPU 데이터 병렬 처리를 지원합니다.
하나의 DGX-1에서 8 GPU를 사용하는 10 억 단어 벤치 마크에서, Big G-LSTM G4는 2 주간의 훈련 후 24.29, 3 주 후 23.36을 달성 할 수있었습니다.
2018 년 2 월 6 일에 우리는 실험 설정에 문제가있는 것을 발견하여 논문에 나열된 숫자를 유효하게 만들었습니다.
아래 표의 현재 번호를 참조하십시오.
DGX 스테이션에서, 4 개의 GPU (Tesla V100)와 GPU 당 256의 배치 크기를 사용하여 1 주간의 훈련 후 :
| 모델 | 당황 | 단계 | 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 | ~ 1.37m | ~ 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]