1 前言
什么样的环境配置需要一整天呢?答,在一台内网服务器上且没有内部Python可用源的情况下安装CUDA驱动+Tensorflow需要整整一天。
前段时间同事申请的一台主机上周到了,说让笔者来配置一下环境。拿到账号后第一时间登陆上去,并使用了nvidia-smi
来查看是否配有显卡。结果提示找不到该命令,初步判断GPU凉了。今天早上同事走过来问我环境弄好了没,速度怎么样?笔者答到,配置好了,速度一般般。同事又问到,和你笔记本比呢?我说差不多,然后补充了一句,没GPU快不起来。结果同事回了一句,主机配了GPU。纳尼?配了?于是笔者赶快用命令查看了一下:
lspci | grep -i vga
结果只是输出了这么一句提示:
VGA compatible controller: ASPEED Technology, Inc. ASPEED Graphics Family (rev 41)
然而并没有发现GPU。笔者心想,难道是命令不对?于是又试了试这个命令:
lspci | grep -i nvidia
结果终于发现了新大陆,提示装有一块Tesla P100的显卡。
3D controller: NVIDIA Corporation GP100GL [Tesla P100 PCIe 16GB]
然后接下来的整整一天就泡在了GPU环境的配置上。
2 环境配置
由于主机在内网中,所以无法通过第三方源来安装各种包;但更无语的是居然没有供内部使用的Python源。这就意味着后续所有需要用到的依赖包都得手动从网上下载,然后再拷贝到主机中进行离线安装。接下来,笔者就开始一步步的介绍如何进行环境的安装。同时,这里默认已经安装好了对应的Python,没有的话可自行安装。
2.1 版本选择
在正式安装之前,笔者首先来大致介绍一下CUDA,CUDA Toolkit,cuDNN三者间的关系,这样也便于后续的安装理解。
- CUDA基本就等于CUDA Toolkit,CUDA Toolkit里面包含了较新的显卡驱动以及其它一些所需要用到的东西,所以安装了CUDA Toolkit后也就不用再去单独安装驱动了;
- cuDNN是英伟达专门为深度学习所开发的用于深度神经网络的GPU加速库,像Tensorflow、Pytorch之类的深度学习框架要使用到GPU加速,就需要用这个cuDNN库。
在下载安装包之前,最重要的一个工作就是确定所需要安装的CUDA Toolkit版本号。怎么确定呢?最好的方法就是以你所需要的Tensorflow版本或者Pytorch版本来反推CUDA Toolkit的版本。在这个网站[1]的最后面,可以看到Tensorflow官方给出的版本依赖关系:

由于笔者一开始并没有注意到这个问题,直接选择安装了10.1版本的CUDA,并且也配套安装了7.6版本的cuDNN。最后的结果就是在Tensorflow1.11上调用GPU的时候显示缺少libcudnn.so.9
这个文件。看到提示这个问题的时候笔者才意识到一开的版本选择出现了问题,只有CUDA 9.0才支持Tensorflow1.11。但是看到1.14的Tensorflow也支持10.0版本的CUDA,于是就又侥幸的试了一下安装好的环境能不能在Tensorflow 1.14上运行。好在经测试后发现可以,不然前面的功夫就白费了。
因此最好的做法就是一开始就根据需要使用的Tensorflow或者Pytorch版本来选择CUDA的版本(也就是CUDA Toolkit 对应的版本)。

2.2 CUDA Toolkit安装
在确定好CUDA Toolkit版本后,点击链接进