TensorFlow 提供了一个以 c_api.h 定义的 C 语言 API,此 API 偏重于简洁性和一致性,并提供较python版本更高的执行性能。在生产环境的服务器上一般推荐使用该库的GPU版本,已提供最高的性能和稳定性。下面介绍该环境的安装部署方式。
0.系统要求
由于编译基于tensorflow C API的程序需要gcc4.8以上,所以对Linux系统版本有要求。本文基于CentOS系统部署。需要CentOS 7, 在CentOS6上gcc版本默认为4.4.7,无法满足要求。另外Linux kernel 需要3.10或以上,CentOS7系统的默认内核满足要求。
1. 安装Nvidia显卡驱动
1. 1 下载显卡驱动
https://www.nvidia.cn/Download/index.aspx?lang=cn
下载 NVIDIA-Linux-x86_64-396.37.run文件
1.2 禁用nouveau驱动
# 检查是否有nouveau在运行
lsmod | grep nouveau
# 开机将nouveau.modeset加入黑名单
# centOS7
vim /lib/modprobe.d/dist-blacklist.conf
# centOS 6
vim /etc/modprobe.d/blacklist.conf
#blacklist nvidiafb
blacklist nouveau
options nouveau modeset=0
1.3 重建系统镜像
# 备份
sudo mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
# 创建新系统镜像
sudo dracut /boot/initramfs-$(uname -r).img $(uname -r)
1.4 重启并查看nouveau驱动是否已被禁用
reboot
lsmod | grep nouveau
1.5 安装Nvidia驱动并重启
sudo sh NVIDIA-Linux-x86_64-396.37.run
# 安装过程提示是否安装32bit兼容包,选No,其他都默认选项
reboot
# 检查驱动是否安装正确
nvidia-smi
2. 安装cuda toolkit (包含显卡驱动)
2.1 下载cudatoolkit 9.0
2.2 按官方教程安装cuda
官方教程:https://docs.nvidia.com/cuda/cuda-installation-guide-linux/#runfile
sudo sh cuda_9.0.176_384.81_linux.run
sudo vim /etc/profile
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/lib:/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
source /etc/profile
2.3 验证安装
nvcc -V
cd ~/NVIDIA_CUDA-9.0_Samples
# 如果系统没有g++需要提前安装(yum install gcc-c++)
make
cd ~/NVIDIA_CUDA-9.0_Samples/bin//x86_64/linux/release
./deviceQuery
3. 安装cudnn
3.1 下载cudnn 7.1.4 Library for Linux
下载地址:https://developer.nvidia.com/rdp/cudnn-download
3.2 按官方教程安装cudnn
参见:https://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html#installlinux-tar
tar -xzvf cudnn-9.0-linux-x64-v7.1.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
3.3 验证安装
#下载cudnn示例代码
wget https://ks3-cn-beijing.ksyun.com/ksplayer/AI_DNN/cudnn_samples_v7.zip
unzip cudnn_samples_v7.zip
cd cudnn_samples_v7/mnistCUDNN
make clean && make
./mnistCUDNN
4. 安装OpenCV
#下载 OpenCV 3.1
wget http://ai-hvideo.ks3-cn-beijing.ksyun.com/sources/opencv-3.1.0.zip
unzip opencv-3.1.0.zip && cd opencv-3.1.0
mkdir build && cd build
yum install cmake
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_CUDA=OFF -D WITH_IPP=ON ..
make -j7
sudo make install
sudo ldconfig
cd ../3rdparty/ippicv/unpack/ippicv_lnx/lib/intel64
sudo cp libippicv.a /usr/local/lib/
sudo ldconfig
5. 安装tensorflow C库
按官方教程:https://www.tensorflow.org/install/install_c
PS:服务器间scp数据方法
1)生成秘钥文件( 参见:https://blog.csdn.net/wang7dao/article/details/7724917)
从A向B拷贝数据,在A(165)上生成秘钥,将公钥添加到B(168)的~/.ssh/authorized_keys中,登录A 用scp文件到B
2)拷贝数据:
login A server
scp cuda_9.0.176_384.81_linux.run 10.xxx.xxx.xxx:/home/chenjin