背景:最近在紧锣密鼓的搞毕设,毕设项目是《基于微信公众号的DNN图片数据处理服务》。现在首要任务是让这个服务的示例代码在服务器跑起来。
目标:跑通 代码!
Neural art 的这个工作主要是基于卷积神经网络(CNN)来展开的。而 CNN 主要是通过卷积提取图片的抽象特征,然后再利用这些特征对图片进行分类、识别等其他工作。这里我们使用 torch 框架来跑。torch 是什么呢,简单来说它就是一个深度学习框架,由 facebook 出品并开源了大量 Torch 的深度学习模块和扩展,同时值得注意的是 Torch 采用的编程语言是Lua,所以前提是你已经搞定了 lua 环境。
neural-style 你可以命令行配置来选择用 CPU 还是用 GPU来跑。当然,这种数据量庞大的图形计算肯定是用 GPU 更佳,只是 GPU 的环境搭建比较麻烦= =。就“比较”而已?惊了,你以为我折腾了一个星期都在做啥。
CUDA 安装
略= =(服务器已经装了 CUDA 8.0,而且也不是我装的,就不班门弄斧了,要注意的是版本,这个跟后面的cuDNN版本必须对应。)
CUDA 安装验证
nvidia-smi
,如下显示显卡信息说明安装成功。这里简单讲一下这些信息。可以看到这台服务器有两块显卡,每一块都有 12206MiB 的显存(是的!两路泰坦!)。第一块使用了 226MiB,第二块使用了 1MiB。特别注意已使用的显存,因为我们的这个服务是十分吃显存的。图中 22% 上面的 0 和 1 代表显卡序号。这个在命令行的-gpu 0/1
会用到。下面的 Processes 就是使用了显存的服务进程。
torch 安装
从这一刻开始,我们开启蛋疼之旅!!!
torch 安装 by 官网(注:这样直接装在用户根目录下)torch 安装验证
CPU 模式看到了吗** 1/1000 **,恩,这就是进度条,用 CPU 跑完1000大概50分钟= =。惊了!所以说要用 GPU。永远相信,一切的折腾都是为了皮坎子怪。
cutorch 与 cunn 安装
来,打起精神来。
这两个的安装大体相同:
luarocks install cutorch 1.0-0
luarocks isntall cunn 1.0-0
不要掉了后面的** 1.0-0 ** 版本号,否则会报错:
cutorch 与 cunn 安装验证
th -e "require 'cutorch'; require 'cunn'; print(cutorch)"
cuDNN 安装
cuDNN 就是一些链接库。把 cuDNN 的头文件和相应的链接库放入 cuda 路径的相应位置就行了。显然头文件是放入include文件夹中,而链接库是放入lib64文件夹中。
下载安装包,注意你的 CUDA 版本,比如我的是 8.0:
解压:
tar -xzvf cudnn-8.0-linux-x64-v5.1.tgz
搬动目录:
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-8.0/lib64/
sudo cp cuda/include/cudnn.h /usr/local/cuda-8.0/include/
安装 torch 的 cudnn 支持:
luarocks install cudnn
跑一下哦怕是:
th neural_style.lua -gpu 0 -backend cudnn
(注:如果 luarocks install cudnn
报了同安装 cutorch 的错误的话用以下的安装方法)
从 github 下载 cudnn 代码:
git clone
cd cudnn.torch
luarocks make
out of memory
两路大泰坦的显存居然快爆了!!!kill 12678
后终于成功!!!而且发现没有,每次50的跳进度,贼快,毕竟泰坦!
结语
这次环境的安装吃了不少苦头,能遇到的错误基本都遇到了,怕是花了最长时间的一次环境搭建,翻遍了百度和 github 的各个 issue,几近放弃,还好坚持了下来。也是因为这不是初次搭建环境,新旧软件的版本交叉问题太折磨人。再者服务器还跑了其他服务带来了很多意想不到的错误。总算搞定!溜了溜了。