当前位置: 首页 > 工具软件 > OpenNMT > 使用案例 >

在OpenNMT中使用Transformer模型(没有完全解决)

郑浩博
2023-12-01

由于实验评估需要,我想尝试一下在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的情况吗?看来开源项目要做到真正人性,普适,要细心测试和开发的细节还有很多啊。这篇日志就简单吐槽一下。

 类似资料: