NiuTrans/NiuTensor

怎么样训练NiuTensor下的transformer模型?

dlkht opened this issue · 11 comments

dlkht commented

命令参数怎么设置?
训练数据格式是什么?
谢谢!

命令参数怎么设置?
训练数据格式是什么?
谢谢!

命令:-t2t -dev -1 -mem -mt -train train.txt -model mt.model -vsize 10000 -vsizetgt 10000 -nstep 100000 -nwarmup 3000 -lrbias 0 -nepoch 20 -nlayer 1 -d 256 -wbatch 2048 -adam -dropout 0.1 -sorted -shuffled -labelsmoothing 0.1
其中-t2t指定模型为Transformer,-dev指定设备号(-1为cpu,0及0以上数字代表gpu设备号),-mt指定机器翻译任务,-train指定训练数据路径,-model指定模型存放位置,-vsize和-vsizetgt分别表示源语和目标语的词表大小,-nsteps表示训练步数,-nwarmup、-lrbias表示学习率相关设置,-epoch表示训练轮数,-nlayer表示模型层数、-d 表示模型中d的大小、-wbatch表示词batch的大小、-adam表示使用Adam策略训练、-dropout表示dropout策略比例、-sorted表示组batch时是否按照序列长度进行排序、-shuffled表示是否对训练数据顺序进行打乱、-labelsmoothing表示label smoothing中的参数。
文件格式:每行一个句对,每个句对由源语目标语组成(源语 ||| 目标语),每个句子中的词语转化为词表id。如:
image

NMT系统我们之后也会单独开放一个项目做优化,包括深层模型等前沿工作,欢迎继续关注。

dlkht commented

好啊!真心希望国产软件越做越好!

dlkht commented

您好!训练好t2t后,预测的命令又是怎样的呢?

您好!训练好t2t后,预测的命令又是怎样的呢?

命令:-t2t -mem -mt -beamsearch -test test.txt -model mt.model -output res.txt -vsize 10000 -vsizetgt 10000 -d 256 -dev -1 -beamsize 1 -sort
👆这样就可以了

dlkht commented

beamsize 为其他值比如5可以吗?

beamsize 为其他值比如5可以吗?

可以

dlkht commented

谢谢!我试了下,有几个问题:

  1. 我将beamsize设为5,提示错误(但有时又通过)
    [INFO] model loaded (took 10.5s)
    [ERROR] calling 'dimsBeam[order - 3] % beamSize == 0' (T2TSearch.cpp line 266): Wrong dimension size!
    terminate called without an active exception

  2. 预测结果不对,预测的输入文件内容格式是怎样的呢?

  3. 预测命令要加下面选项,
    -endid 2
    -startid 1
    否则提示
    [INFO] model loaded (took 10.5s)
    [ERROR] calling 'dimsBeam[order - 3] % beamSize == 0' (T2TSearch.cpp line 266): Wrong dimension size!
    terminate called without an active exception

谢谢!我试了下,有几个问题:

  1. 我将beamsize设为5,提示错误(但有时又通过)
    [INFO] model loaded (took 10.5s)
    [ERROR] calling 'dimsBeam[order - 3] % beamSize == 0' (T2TSearch.cpp line 266): Wrong dimension size!
    terminate called without an active exception
  2. 预测结果不对,预测的输入文件内容格式是怎样的呢?
  3. 预测命令要加下面选项,
    -endid 2
    -startid 1
    否则提示
    [INFO] model loaded (took 10.5s)
    [ERROR] calling 'dimsBeam[order - 3] % beamSize == 0' (T2TSearch.cpp line 266): Wrong dimension size!
    terminate called without an active exception

感谢您提的问题,测试文件输入的格式为源语词汇转换id的序列,同时以“ ||| ”结尾,如:
7D49DFBC-CCFB-41DD-8ABB-3283C0607A9E_4_5005_c
另外我们的beam解码确实存在问题,我们将在下一个版本中修复该问题。
另外命令上需要根据训练数据情况加上-startid 和-endid 指定起始标志和结束标志的id。

dlkht commented

谢谢!

dlkht commented

你好!有两个问题请教下:
1.你们提到的深度优化版本什么时候出来?
2.transformer模型训练或预测应该存在问题,什么时候改一个正确的版本我们测试一下?