TensorFlow 提供了一個(gè)以?c_api.h?定義的 C 語言 API市咽,此 API 偏重于簡潔性和一致性,并提供較python版本更高的執(zhí)行性能抵蚊。在生產(chǎn)環(huán)境的服務(wù)器上一般推薦使用該庫的GPU版本施绎,已提供最高的性能和穩(wěn)定性溯革。下面介紹該環(huán)境的安裝部署方式。
0.系統(tǒng)要求
由于編譯基于tensorflow C API的程序需要gcc4.8以上谷醉,所以對Linux系統(tǒng)版本有要求致稀。本文基于CentOS系統(tǒng)部署。需要CentOS 7, 在CentOS6上gcc版本默認(rèn)為4.4.7俱尼,無法滿足要求抖单。另外Linux kernel 需要3.10或以上,CentOS7系統(tǒng)的默認(rèn)內(nèi)核滿足要求遇八。
1. 安裝Nvidia顯卡驅(qū)動(dòng)
1. 1 下載顯卡驅(qū)動(dòng)
https://www.nvidia.cn/Download/index.aspx?lang=cn
下載 NVIDIA-Linux-x86_64-396.37.run文件
1.2 禁用nouveau驅(qū)動(dòng)
# 檢查是否有nouveau在運(yùn)行
lsmod | grep nouveau
# 開機(jī)將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 重建系統(tǒng)鏡像
# 備份
sudo mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak?
# 創(chuàng)建新系統(tǒng)鏡像
sudo dracut /boot/initramfs-$(uname -r).img $(uname -r)
1.4 重啟并查看nouveau驅(qū)動(dòng)是否已被禁用
reboot
lsmod | grep nouveau
1.5 安裝Nvidia驅(qū)動(dòng)并重啟
sudo sh NVIDIA-Linux-x86_64-396.37.run
# 安裝過程提示是否安裝32bit兼容包矛绘,選No,其他都默認(rèn)選項(xiàng)
reboot
# 檢查驅(qū)動(dòng)是否安裝正確
? ? nvidia-smi
2. 安裝cuda toolkit (包含顯卡驅(qū)動(dòng))
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? 驗(yàn)證安裝
nvcc -V
cd ~/NVIDIA_CUDA-9.0_Samples
# 如果系統(tǒng)沒有g(shù)++需要提前安裝(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 驗(yàn)證安裝
#下載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:服務(wù)器間scp數(shù)據(jù)方法
1)生成秘鑰文件( 參見:https://blog.csdn.net/wang7dao/article/details/7724917)
從A向B拷貝數(shù)據(jù)刃永,在A(165)上生成秘鑰货矮,將公鑰添加到B(168)的~/.ssh/authorized_keys中,登錄A 用scp文件到B
2)拷貝數(shù)據(jù):
login A server?
scp cuda_9.0.176_384.81_linux.run 10.xxx.xxx.xxx:/home/chenjin