Tensorflow-gpu版本安装
⽬录
最近给公司部署⼀套深度学习相关的环境,以tensorflow为框架。简单整理下整个的部署过程。
服务器选型
我们的tensorflow是基于gpu的版本,使⽤的是tensorflow-gpu 1.12.0版本。既然是gpu的版本,那么⾸先得需要⼀个带有gpu的服务器。我们这⾥直接使⽤阿⾥云服务器,型号如下:
NVIDIA GPU驱动安装
那么既然有了带gpu的服务器,gpu驱动就必然是⼀个绕不开的话题。通过上⾯的选型我们可以知道,阿⾥云的购买页⾯明确给出了gpu的型号,我们需要去到gpu官⽅⽹站,根据型号选择驱动。
下载的驱动名称⽰例:NVIDIA-Linux-x86_64-410.104.run
安装的话相对⽐较简单:
# 通过shell运⾏,然后按照提⽰操作即可
sh NVIDIA-Linux-x86_64-410.104.run
验证是否正常安装了:
[root@ctnr ~]# nvidia-smi
Tue Mar 26 11:31:34 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.104      Driver Version: 410.104      CUDA Version: 10.0    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|        Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|  0  Tesla P4            Off  | 00000000:00:08.0 Off |                    0 |
| N/A  28C    P8    7W /  75W |      0MiB /  7611MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes:                                                      GPU Memory |
|  GPU      PID  Type  Process name                            Usage      |
|=============================================================================|
|  No running processes found                                                |
+-----------------------------------------------------------------------------+
查看当前服务器显卡的个数:
yum install -y lspci
[root@ctnr ~]# lspci|grep -i nvidia
00:08.0 3D controller: NVIDIA Corporation GP104GL [Tesla P4] (rev a1)
其中00:08.0是显卡的代号,通过如下⽅式可以查看详细的显卡信息:
[root@ctnr ~]# lspci -v -s 00:08.0
00:08.0 3D controller: NVIDIA Corporation GP104GL [Tesla P4] (rev a1)
Subsystem: NVIDIA Corporation Device 11d8
Physical Slot: 8
Flags: bus master, fast devsel, latency 0, IRQ 39
Memory at fd000000 (32-bit, non-prefetchable) [size=16M]
Memory at e0000000 (64-bit, prefetchable) [size=256M]
Memory at f2000000 (64-bit, prefetchable) [size=32M]
Capabilities: [60] Power Management version 3
Capabilities: [68] MSI: Enable+ Count=1/1 Maskable- 64bit+
Capabilities: [78] Express Endpoint, MSI 00
Capabilities: [c8] Vendor Specific Information: Len=08 <?>
Kernel driver in use: nvidia
Kernel modules: nouveau, nvidia_drm, nvidia
cuda和cudnn的安装
tensorflow-gpu要想正常运⾏,除了必要的gpu驱动,还依赖cuda和cudnn两个sdk。
下⾯是tensorflow-gpu版本依赖的cuda和cudnn的版本:
cuda是深度学习的sdk
cudnn是神经⽹络的sdk
cuda安装
cuda的下载地址:
需要下载cuda包,以及所有的补丁⽂件,我这⾥因为是centos,所以下载的全是rpm包。直接通过yum安装即可:
yum localinstall -y cuda-repo-rhel7-9-0-*.rpm
需要说明的是,这些包都只是本地仓库包,也就是说,安装了这些包,并不会真正安装cuda,⽽只是把cuda的包在本地⽣成了⼀个本地yum 源。这个时候,就可以直接使⽤yum install -y cuda来安装cuda了。
验证安装:
[root@ctnr ~]# cat /usr/local/
CUDA Version 9.0.176
cudnn的安装
cudnn的下载地址:
需要说明的是,要下载cudnn,需要先登录,这就要求我们得要有nvidia的帐号。
这两个包也是rpm包,直接安装即可。
安装完成后的验证⽅式如下:
[root@ctnr ~]# cat /usr/include/cudnn_v7.h |grep CUDNN_MAJOR -A 2
#define CUDNN_MAJOR 7
#define CUDNN_MINOR 5
#define CUDNN_PATCHLEVEL 0
-
-
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)
#include "driver_types.h"
上⾯的三⾏,分别代表主版本、次版本以及修定版本
在上图中,其实可以看到,除了定制的系统版本,cudnn也提供通⽤版本,即cnDNN Library for Linux,下载下来是⼀个的⽂件,我们可以通过如下⽅式安装即可:
tar xf cudnn-9.0-linux-x64-v7.5.
cp cuda/lib/64/libcudnn.so* /usr/local/cuda/lib64/
cp cuda/lib64/libcudnn_static.a /usr/local/cuda/lib64/
cp cuda/include/cudnn.h /usr/include/
另外,还需要说明的是,我尝试在windows上直接下载通⽤版本的时候,下载的总是⼀个solitairetheme
8为后缀的⼀个卡牌游戏。在linux上通过wget的⽅式下载,则是正常的压缩包。
tensorflow-gpu安装
我这⾥简化部署,直接使⽤pip安装:
yum install -y python36 python36-pip
tensorflow版本选择pip3 install -U pip six numpy wheel mock
pip3 install -U  keras_applications==1.0.5 --no-deps
pip3 install -U keras_preprocessing==1.0.3 --no-deps
pip3 install tensorflow-gpu-1.12.0⾄此,tensorflow安装完成。