CPU:Intel(R) Core(TM) i7-7700K CPU @ 4.2GHz
GPU: NVIDIA GeForce GTX 1080 Ti * 2
RAM: 32G
OS: Windows 10 Pro
Python
Python 选择安装3.6版本,安装好以后配置环境变量。
Anaconda3
Anaconda3选择Anaconda3-5.2.0版本。在使用PyTorch时建议在Anaconda3里建一个新的环境就命名叫“PyTorch”,我们将需要用的一些包都安装到这个环境中去,这样在使用中不会干涉其他环境。在Anaconda3中打开指定环境的终端可以直接操作该环境。
Torch
Torch在Anaconda3里进行安装就可以。选择的版本是0.4.0版本。打开Anaconda3,选择新建的环境“PyTorch”,右击选择打开终端,在该终端中使用conda命令来进行安装。
TorchText
TorchText是在安装完Torch之后进行安装的,使用Anaconda3进行安装。但是需要注意的是与Torch 0.4.0所匹配的 TorchText 0.2.3 版本存在问题,会导致翻译报错。错误是“TypeError: make_src() takes 2 positional arguments but 3 were given”。遇到这个错误目前的方法如下。
我们选择OpenNMT-py来作为我们的源码。
下载代码:https://github.com/OpenNMT/OpenNMT-py
本篇只讲GPU模式训练中遇到的一些问题,CPU模式基本没有遇到什么奇怪的问题只需要参照官网即可。
官网:http://opennmt.net/OpenNMT-py/main.html
训练数据准备
训练集 : src-train.txt tgt-train.txt
验证集 : src-val.txt tgt-val.txt
测试集 : src-test.txt
注意 :中文需要先进行分词,分词的优劣直接影响模型的准确率.
Preprocess the data
python preprocess.py -train_src data/src-train.txt -train_tgt data/tgt-train.txt -valid_src data/src-val.txt -valid_tgt data/tgt-val.txt -save_data data/demo
该步骤执行完成后会在data文件夹中生成3个文件 demo.train.1.pt、demo.valid.1.pt和demo.vocab.pt。
Train the model
python train.py -data data/demo -save_model demo-model –gpuid 0
这一步我们使用前一步骤准备好的三个demo文件来进行model的训练。注意使用GPU训练时在这一步的时候可能会出现,报错是:“TypeError: __init__() got an unexpected keyword argument 'dtype'”,目前使用的解决方案是直接去掉dtype这个参数。方法是:
fields["src_map"] = torchtext.data.Field(
use_vocab=False, dtype=torch.float,
postprocessing=make_src, sequential=False)
解决掉所有的报错之后就可以进行GPU训练了,我们选择默认的配置,默认是2层LSTM,编码器/解码器上有500个隐藏单元。当然如果你需要修改层数和隐藏单元的数量都是可以修改的。训练完成之后会得到如下结果。
Translate
python translate.py -model demo-model_XYZ.pt -src data/src-test.txt -output pred.txt -replace_unk –verbose –gpu 0
使用GPU训练出来的model也需要使用GPU模式进行翻译,注意解决torchtext的问题。