硬件配置
主机:Dell T620塔式服务器
显卡:Nvidia Tesla K20c
系统&驱动配置
Ubuntu Server 16.04
Nvidia driver:375.26
CUDA 8.0
cuDNN 7.0.3
tensorflow1.3
1 ubuntu server系统安装
系统:Ubuntu Server 16.04
安装方式:光盘安装(使用U盘安装会出现ISO文件无法挂载的问题)
光盘刻录系统步骤:
- ISO文件打开方式选择Windows光盘映像刻录机
- 点击刻录
1.1 网络
安装后可能DHCP服务没有启动,需要手动启动使用dhclient
命令
使用ifconfig
可以看到网卡信息
1 | zjw@t620:~$ ifconfig |
本服务器的地址就是eno2网卡的地址
在校园网需要通过浏览器图形界面登陆账号密码才能上网,使用以下命令代替
1 | curl -X POST -F 'action=login' -F 'username=账户' -F 'password=密码' -F 'ac_id=1' -F 'ajax=1' 1' http://10.0.10.66/include/auth_action.php |
在使用前需要先能ping通10.0.10.66
这个地址,在登陆后测试是否已经联网
1 | zjw@t620:~$ curl www.baidu.com |
抓取了网站的内容,已经联网
1.2 更换软件源为清华大学
Ubuntu 的软件源配置文件是 /etc/apt/sources.list。将系统自带的该文件做个备份,将该文件替换为下面内容,即可使用 TUNA 的软件源镜像。
1 | sudo gedit /etc/apt/sources.list |
修改如下:
1 | # 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释 |
修改后 sudo apt-get update 使修改生效
1.3 远程登陆
安装openssh: sudo apt-get install openssh-server
==================================================
查看GPU使用情况: nvidia-smi
1 | zjw@t620:~$ nvidia-smi |
下载驱动 : https://www.nvidia.cn/Download/index.aspx?lang=cn
Ubuntu16.04 系统下K20c CUDA只能装8.0以上版本
查找结果
2 Pre-Installation Actions
2.1. Verify You Have a CUDA-Capable GPU
1 | zjw@t620:~$ lspci | grep -i nvidia |
2.2. Verify You Have a Supported Version of Linux
1 | zjw@t620:~$ uname -m && cat /etc/*release |
2.3. Verify the System Has gcc Installed
1 | zjw@t620:~$ gcc --version |
2.4. Verify the System has the Correct Kernel Headers and Development Packages Installed
1 | zjw@t620:~$ uname -r |
安装对应的kernels header和开发包:
1 | $ sudo apt-get install linux-headers-$(uname -r) |
2.5. Choose an Installation Method
runfile 推荐 / deb /
2.6. Download the NVIDIA CUDA Toolkit
CUDA toolkit 8.0 下载地址:https://developer.nvidia.com/cuda-80-ga2-download-archive
CUDA toolkit 8.0 安装过程文档(照做基本不出问题):https://docs.nvidia.com/cuda/archive/8.0/
3 CUDA 8.0 安装
卸载CUDA相关包:
1 | sudo apt-get remove cuda |
然后在目录切换到/esr/local/下 cd /usr/local/
sudo rm -r cuda-*
3.1 runfile安装
推荐使用runfile
方式安装(deb方式卸载的时候麻烦)
runfile 下载地址:https://developer.nvidia.com/cuda-80-ga2-download-archive
可以用wget
1 | wget https://developer.nvidia.com/compute/cuda/8.0/Prod2/local_installers/cuda_8.0.61_375.26_linux-run |
1 | sudo sh cuda_8.0.61_375.26_linux.run.26_linux-run |
会出现一大堆选项,OPENGL安装选no,其余按照yes或者default选。如果已经安装了新的驱动,不要选择安装驱动。
1 | ------------------------------------------------------------- |
3.2 设置环境变量
输入命令,编辑环境变量配置文件
1 | sudo vim ~/.bashrc |
在文本末端追加以下两行代码(按键“i”进行编辑操作)
1 | export PATH=/usr/local/cuda-8.0/bin:$PATH |
保存退出,执行下面命令,使环境变量立刻生效
1 | sudo source ~/.bashrc |
安装完成后后重启
3.3 检查CUDA配置
1 | root@t620:/home/zjw# nvidia-smi |
检查cuda是否配置正确
1 | zjw@t620:~$ nvcc --version |
3.4 测试CUDA的sammples
进入cude sample code目录,make
编译所有demo。注意:因为这里的make操作是将sample文件夹下所有的demo都编译了一遍,所以比较好使,如果仅仅想测试某个例子,可以进入相应的文件夹去编译即可。
1 | # 切换到cuda-samples所在目录 |
编译完成后切换到 bin
目录
1 | ./deviceQuery |
输出结果看到显卡相关信息,并且最后Result = PASS ,这说明CUDA才真正完全安装成功了
再检查一下系统和CUDA-Capable device的连接情况
1 | root@t620:/home/zjw/CUDA_Samples/NVIDIA_CUDA-8.0_Samples/bin/x86_64/linux/release# ./bandwidthTest [CUDA Bandwidth Test] - Starting... |
4 cuDNN
官方安装文档(照做基本不出问题)
4.1 下载cuDNN
cuDNN是GPU加速计算深层神经网络的库。首先去官网(https://developer.nvidia.com/rdp/cudnn-download)下载cuDNN,需要注册一个账号才能下载,没有的话自己注册一个。由于本人的显卡是K20c,CUDA 8.0,最新的版本是v7:
下载速度几KB。Nvidia把国内IP屏蔽了,建议代理换全局模式,用国外IP就可以下载了,亲测。
4.2 安装cuDNN
安装cudnn比较简单,简单地说,就是复制几个文件:库文件和头文件。将cudnn的头文件复制到cuda安装路径的include路径下,将cudnn的库文件复制到cuda安装路径的lib64路径下。具体操作如下
1 | # 解压文件 |
备注:上面的软连接的版本号要根据自己实际下载的cudnn的lib版本号
最后我们看看验证安装cudnn后cuda是否依旧可用
1 | zjw@t620:/usr/local/cuda/lib64$ nvcc --version # or nvcc -V |
4.3 检验cuDNN是否安装成功
到目前为止,cuDNN已经安装完了,但是,是否成功安装,我们可以通过cuDNN sample测试一下(https://developer.nvidia.com/rdp/cudnn-archive 页面中找到对应的cudnn版本,里面有 cuDNN v5 Code Samples,点击该链接下载即可,版本可能不一样,下载最新的就行)
下载完,转到解压出的目录下的mnistCUDNN
1 | # Copy the cuDNN sample to a writable path. |
Run the mnistCUDNN sample
1 | zjw@t620:~/cudnn_samples_v7/mnistCUDNN$ ./mnistCUDNN |
Test passed! 至此,cuDNN已经成功安装了
5 Anaconda3
Anaconda是python的一个科学计算发行版,内置了数百个python经常会使用的库,很多是TensorFlow的依赖库。安装好Anaconda可以提供一个好的环境直接安装TensorFlow。
1 | bash Anaconda3-4.2.0-Linux-x86_64.sh |
安装anaconda,回车后,是许可文件,接收许可。直接回车即可。最后会询问是否把anaconda的bin添加到用户的环境变量中,选择yes。在终端输入python发现依然是系统自带的python版本,这是因为环境变量的更新还没有生效,命令行输入如下命令是安装的anaconda生效。如果conda --version
没有找到任何信息,说明没有加入到环境变量没有,需要手动加入,如图所示:
1 | root@t620:/home/zjw# vim ~/.bashrc |
检查环境变量是否生效
1 | zjw@t620:~$ conda --version |
python版本为 Anaconda版本而非系统自带,说明环境变量更新生效
6 Tensorflow
大家可以参考TensorFlow的官方安装教程(https://www.tensorflow.org/install/),官网提供的了 Pip, Docker, Virtualenv, Anaconda 或 源码编译的方法安装 TensorFlow,我们这里主要介绍以Anaconda安装。其他安装方式,大家可以到官方安装教程查看。
6.1 安装TensorFlow
通过Anaconda安装TensorFlow CPU,TensorFlow 的官方下载源现在已经在GitHub上提供了(https://github.com/tensorflow/tensorflow),找到对应的版本号,如图所示:
官方的文档:使用 Anaconda 进行安装tensorflow https://www.tensorflow.org/install/install_linux#InstallingAnaconda
6.2 创建一个名为tensorflow的conda环境Python 3.6
1 | #Python 2.7 |
备注:(根据TensorFlow版本号,一定要设置Python版本号,切记切记切记!!!!!重要的事情说三遍!否则后面会报各种错的)
创建时出错
1 | zjw@t620:~$ conda create -n tensorflow python=3.6 |
解决方法:(关闭VPN)
以下是辅助,不一定成功
1 | # 首先添加清华的镜像源 |
6.3 激活 conda 环境
1 | zjw@t620:~$ conda create -n tensorflow pip python=3.6 |
1 | source activate tensorflow |
6.4 在conda环境中安装TensorFlow GPU版
因为我们前面选择了conda环境为Python3.6的,所以我们选择Python3.6版本的GPU链接地址,进行安装
1 | #如何进行安装,我们这里安装Python版本为3.6的TensorFlow |
失败,我们需要下载GPU版的安装包,在安装包下载之后,然后手动进入环境,安装TensorFlow whl安装包。
1 | (tensorflow) zjw@t620:~$ wget https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.3.0-cp36-cp36m-linux_x86_64.whl |
1 | source activate tensorflow #激活tensorflow环境(这步操作了,就忽略) |
6.5 当你不用 TensorFlow 的时候,关闭环境
1 | source deactivate tensorflow |
6.6 安装成功后,每次使用 TensorFlow 的时候需要激活 conda 环境(操作步骤2就可以了)
6.7 常见问题
出现“ImportError: libcudnn.so.6: cannot open shared object file: No such file or directory”错误信息
1 | Python 3.6.2 |Continuum Analytics, Inc.| (default, Jul 20 2017, 13:51:32) |
解决方法:
首先检查是否存在libcundnn.so.*
1
find / -name libcudnn.so.*
找到文件就下一步,没找到,检查下cudnn的依赖库,就是前面的环境变量做对了没
建立硬连接
1
2
3sudo ln -s <path>libcudnn.so.7.* <path>libcudnn.so.6 #path就是libcudnn.so.7的所在目录或者
sudo ln -s libcudnn.so.7.* libcudnn.so.6 #cd 到 libcudnn.so.7的所在目录
6.8 卸载TensorFlow
如果我们需要卸载TensorFlow的话,使用下面命令
1 | sudo pip uninstall tensorflow #Python2.7 |
6.9 测试Tensorflow
1 | (tensorflow) zjw@t620:/usr/local$ python |