在OpenNMT中使用Transformer模型(沒有完全解決)

由於實驗評估需要,我想嘗試一下在OpenNMT中使用Transformer,不過還是遇到了一些問題,這裏記錄一下:

在之前的實驗中,我注意到OpenNMT的Seq2Seq model的performance實際上比不上最簡單的PyTorch的Seq2Seq示例代碼。覺得很疑惑,稍微搜索後發現,其他網友也提出了類似的問題:

https://github.com/OpenNMT/OpenNMT-py/issues/139

不過似乎這個問題並沒有引起足夠的重視,OpenNMT的開發者回覆說,我們已經實現了SOTA的Transformer模型,所以不需要仔細處理這個issue了(這個態度也是呵呵了,你們可是哈佛的組啊,不應該更嚴謹認真一點麼?)

所以想試試Transformer,按照這裏的介紹:

http://opennmt.net/OpenNMT-py/FAQ.html

Transformer對超參很敏感,他們通過以下參數復現了論文的結果:

python  train.py -data /tmp/de2/data -save_model /tmp/extra \
        -layers 6 -rnn_size 512 -word_vec_size 512 -transformer_ff 2048 -heads 8  \
        -encoder_type transformer -decoder_type transformer -position_encoding \
        -train_steps 200000  -max_generator_batches 2 -dropout 0.1 \
        -batch_size 4096 -batch_type tokens -normalization tokens  -accum_count 2 \
        -optim adam -adam_beta2 0.998 -decay_method noam -warmup_steps 8000 -learning_rate 2 \
        -max_grad_norm 0 -param_init 0  -param_init_glorot \
        -label_smoothing 0.1 -valid_steps 10000 -save_checkpoint_steps 10000 \
        -world_size 4 -gpu_ranks 0 1 2 3

由於我目前測試的機子上沒有GPU,所以嘗試一下去掉最後的參數,結果發現去掉之後,程序很快停止,也沒有任何報錯或者輸出。呵呵,難道不應該考慮沒有GPU的情況嗎?看來開源項目要做到真正人性,普適,要細心測試和開發的細節還有很多啊。這篇日誌就簡單吐槽一下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章