1. 前言
tensorflow/nmt项目,并不能直接在ucloud的AI训练服务上进行训练,我们需要对代码进行一些修改。
2. 差异分析
2.1. 路径
上文中,在AI训练服务上运行的mnist,它的输入输入都是到UFile上。
而nmt项目,在运行时指定了训练文件的路径。
2.2. tensorflow
mnist项目,使用的是tensorflow1.1.0。
nmt项目,使用的是tensorflow1.3.0。
3. 路径
对于路径差异,需要修改nmt的运行命令和代码。
3.1. 运行命令
nmt项目的运行时的命令为:
1 | python -m nmt.nmt --src=vi --tgt=en --vocab_prefix=./tmp/nmt_data/vocab --train_prefix=./tmp/nmt_data/train --dev_prefix=./tmp/nmt_data/tst2012 --test_prefix=./tmp/nmt_data/tst2013 --out_dir=./tmp/nmt_model --num_train_steps=12000 --steps_per_stats=100 --num_layers=2 --num_units=128 --dropout=0.2 --metrics=bleu |
其中,关于路径的参数有:
–vocab_prefix
–train_prefix
–dev_prefix
–test_prefix
–out_dir
前四个路径是输入;最后一个路径是输出。
最后的命令要改成:
1 | python -m nmt.nmt --src=vi --tgt=en --vocab_prefix=vocab --train_prefix=train --dev_prefix=tst2012 --test_prefix=tst2013 --num_train_steps=12000 --steps_per_stats=100 --num_layers=2 --num_units=128 --dropout=0.2 --metrics=bleu |
对于输入路径来说,去掉了./tmp/nmt_data/
,默认为FLAGS.data_dir
,也就是创建AI训练服务时输入的数据输入路径。
对于输出路径来说,去掉了./tmp/mnt_model
,默认为FLAGS.output_dir
,也就是创建AI训练服务时输入的数据输出路径。
3.2. UFile
1、移动nmt_data目录到/data/nmt。
1 | mkdir -p /data/nmt |
2、上传/data/nmt到UFile。./filemgr --action mput --dir /data/nmt --bucket vk-ucloud --prefix nmt --trimpath /data/nmt
train.en文件地址如下,其他文件类似:
CDN加速地址:http://vk-ucloud.ufile.ucloud.com.cn/nmt/nmt_data/train.en
源站地址:http://vk-ucloud.cn-bj.ufileos.com/nmt/nmt_data/train.en
3、python tf_tool.py pack
时,指定本地测试数据地址如下。
1 | --test_data_path=/data/nmt/nmt_data --test_output_path=/data/nmt/nmt_model |
3.3. 代码
4. tensorflow
5. 后记
未完。。。不再续。。。