Ubuntu 16.04.04 + Python3.6 + Anaconda + CUDA 9.1 + PyTorch + OpenNMT搭建机器翻译模型

版权声明:未经允许,请勿私自转载。    原文地址:https://blog.csdn.net/Mrx_Nh/article/details/79888928

最近在学习一些一起NLP方面的东西,首先当然要把环境搭起来了,踩坑无数,经过三天的不懈奋战,终于把环境搭起来了,网上这方面的资料都比较散乱,很多都是很旧的,为了跟上AI浪潮,特此写一篇详细的博客。如果读者按照此方法来操作遇到什么问题,可以在评论区留言,博主一定在第一时间答复。

      各组件版本:

        -    Ubuntu 16.04.04 Desktop

        -    Anaconda 3-5.1.0

        -    GeoForce 1070 (ZOTAC)

        -    CUDA 9.1

        -    Python 3.6

        -    PyTorch 

        -    OpenNMT-py

  1. 关于系统,最初我挂PT种子的时候不小心手贱直接把Ubuntu系统给删掉了,我说我硬盘500G的容量哪去了,哪去了,结果死活打不开系统,我也是服了,刚开始重装的时候用的是之前的版本,Ubuntu 16.04.01 Desktop,但是插上独显之后装好的系统吸纳卡驱动有问题,分辨率感人,网卡驱动也有问题,连不上网,道行不够,索性换了最新的 Ubuntu 16.04.04,本着更新修复BUG的想法,没想到直接就装好了,特别轻松。所以我这的配置用的全部是都是最新版(强迫症)。

 2.  安装Python 3.6

$ sudo add-apt-repository ppa:jonathonf/python-3.6
$ sudo apt-get update
$ sudo apt-get install python3.6

这样系统中就有 Python 2.7、Python 3.5、Python3.6同时存在,莫方,后面用Anaconda时非常方便,可以定义多个环境。现在讲Python 3.6设为默认Python3环境

$ sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 1
$ sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 2
$ sudo update-alternatives --config python3
$ python3 -V 

发现现在是Python3.6的环境就没有问题,但是这样会导致终端打不开,ctrl + alt + t快捷键失灵,用如下命令解决

$ python3 -V 

这是 ctrl + alt + t不能打开终端了,甚至用图标的方法也不能打开,解决方案如下

$ cd /usr/lib/python3/dist-packages/gi/ 
$ sudo cp _gi.cpython-35m-x86_64-linux-gnu.so _gi.cpython-36m-x86_64-linux-gnu.so 
$ sudo cp _gi_cairo.cpython-35m-x86_64-linux-gnu.so _gi_cairo.cpython-36m-x86_64-linux-gnu.so  

安装如下依赖,否则在后面的Anaconda中会报No Module named gdbm:

$ sudo apt-get install python3.6-gdbm

至此,Python 3.6算是装好了。

2.安装Anaconda

下载安装包run文件,我是在北邮人上下载的,当然也可以去官网下载:

$ cd ~/Download
$ bash Anaconda3-5.1.0-Linux-x86_64.sh 

中途会让你选择安装路径,直接yes选择默认路径即可,后面的安装也类似,中途会有安装VS Code的选项,根据你的需求选择,我反正是选了yes:

$ source ~/.bashrc

给conda换源以加速其下载包的速度:

$ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
$ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
$ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
$ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
$ conda config --set show_channel_urls yes

3.安装Nvidia-driver

这部分本来是最坑的了,但是踩了这么多的坑,相信按照如下方式来,没什么问题,亲测两次:

这是1070的驱动下载:http://www.nvidia.com/download/driverResults.aspx/132530/en-us

或者去:http://www.nvidia.cn/Download/index.aspx?lang=cn选择你相应的硬件驱动

Ubuntu 16.04.04 + Python3.6 + Anaconda + CUDA 9.1 + PyTorch + OpenNMT搭建机器翻译模型_第1张图片

3.1 卸载旧驱动(就算没有驱动也可以执行,如果有旧驱动一定要执行):

$ sudo apt-get autoremove --purge nvidia-*

3.2 禁用nouveau,添加黑名单

$ cd /lib/modules/4.13.0-38-generic/kernel/drivers/gpu/drm/nouveau
$ sudo cp nouveau.ko nouveau.ko.org
$ cd /etc/modprobe.d
$ sudo vim blacklist-nouveau.conf

没有 vim 的话需要安装,在文件中写入:

 blacklist nouveau
 options nouveau modeset=0
:wq    # 保存

3.2.3 重新生成 kernel initramfs:

$ sudo update-initramfs -u
$ sudo reboot

3.3 关闭x-server

上面重启之后,分辨率会变得感人,不用急,马上就可以使用nvidia的驱动了,先按ctrl + alt + f1进入text mode:

$ sudo service lightdm stop 或者  sudo lightdm stop  
$ sudo init 3

3.4 安装nvidia驱动

 

$ cd ~/Downloads
$ sudo chmod a+x NVIDIA-Linux-x86_64-390.48.run
$ sudo sh ./NVIDIA-Linux-x86_64-390.48.run -no-x-check -no-nouveau-check -no-opengl-files
$ sudo reboot

 

 

 

这是在进入系统就会发现分辨率正常了,ctrl + alt + t 启动终端:

$ nvidia-smi

出现如下界面就是驱动安装成功了!

Ubuntu 16.04.04 + Python3.6 + Anaconda + CUDA 9.1 + PyTorch + OpenNMT搭建机器翻译模型_第2张图片

 

 

4 安装CUDA9.1

 

 

下载链接:

 

https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1604&target_type=runfilelocal

$ sudo chmod a+x cuda
$ sudo sh cuda_9.1.85_387.26_linux.run

中间会有一些选项,因为driver我们已经装过了,所以选择n就可以,我没有试过直接在这里驱动和cuda一步到位,如果要这么装,应该也不能少上面装driver的步骤,我的选择如下:

Ubuntu 16.04.04 + Python3.6 + Anaconda + CUDA 9.1 + PyTorch + OpenNMT搭建机器翻译模型_第3张图片

导入环境变量:

$ echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc
$ echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
$ source ~/.bashrc
$ nvcc -V

能看见版本信息,就说嘛安装成功了。

CUDA测试:

$ cd NVIDIA_CUDA-9.1_Samples
$ sudo make   # 等十分钟左右
$ cd bin/x86_64/linux/release
$ sudo ./deviceQuery

Ubuntu 16.04.04 + Python3.6 + Anaconda + CUDA 9.1 + PyTorch + OpenNMT搭建机器翻译模型_第4张图片

 

 

如上Result为PASS。

 

 

5. 安装PyTorch

如果上面安装都没有问题的话,这里只需要一条命令即可,速度慢可以检查上面Anaconda换源有没有问题:

$ conda install pytorch torchvision cuda91 -c pytorch

 

6. 安装OpenNMT

Github地址:https://github.com/OpenNMT/OpenNMT-py

 

 

$ cd ~/Downloads
$ git clone https://github.com/OpenNMT/OpenNMT-py.git

装好以后执行:

pip3 install -r requirements.txt

准备数据:

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

 

训练模型:

 

$ python train.py -data data/demo -save_model demo-model -gpuid 0

此时可以通过nvidia-smi监控到gpu已经跑起来了

Ubuntu 16.04.04 + Python3.6 + Anaconda + CUDA 9.1 + PyTorch + OpenNMT搭建机器翻译模型_第5张图片

至此,整个安装部署过程已经全部完后了,有问题的读者可以留言,最后happy一下,看看训练出来的翻译效果,由于语料库太小,模型的翻译效果自然不忍直视。

Ubuntu 16.04.04 + Python3.6 + Anaconda + CUDA 9.1 + PyTorch + OpenNMT搭建机器翻译模型_第6张图片

 

 

在使用1,720,000语句再次训练后:

Ubuntu 16.04.04 + Python3.6 + Anaconda + CUDA 9.1 + PyTorch + OpenNMT搭建机器翻译模型_第7张图片

Ubuntu 16.04.04 + Python3.6 + Anaconda + CUDA 9.1 + PyTorch + OpenNMT搭建机器翻译模型_第8张图片

你可能感兴趣的:(Linux)