日志

TensorFlow GPU 环境部署(CUDA + cuDNN)

TensorFlow 是目前主流的深度学习框架之一(虽然它有很多反人类的设计),它支持基于 GPU 的模型训练和预测,本文主要介绍 GPU 环境的快速部署。

本文最后更新于 2018年04月01日 以最新的 cuDNN7.0 + CUDA 9.0 + tensorflow_gpu==1.7 为例

环境

Ubuntu 16.04
NVIDIA Driver
CUDA 8.0 CUDA 9.0
cuDNN 5.1 cuDNN 7.0

总览

GPU 环境部署主要涉及三个步骤:

  1. 显卡驱动安装(本文不作介绍)

  2. CUDA 安装

  3. cuDNN 安装

显卡驱动安装

一般步骤:

卸载旧的驱动(如果有)=> 添加源并通过 apt 安装对应版本 => 重启

建议根据自身系统参考 NVIDIA 的官方文档,本文不作详细介绍。

安装 CUDA

下载并安装 CUDA 9.0

提示:默认安装到 /usr/local 并创建软连 /usr/local/cuda => /usr/local/cuda-9.0

注意:CUDA 9.0 需要 NVIDIA 显卡驱动版本不低于 version 384.xx。

检查驱动版本

nvidia-smi

注意:强烈不建议通过 apt-get 安装,根据个人经验,你很可能会碰到各种奇奇怪怪的问题。使用 runfile 安装更为可靠。

cd /tmp

wget https://developer.nvidia.com/compute/cuda/9.0/Prod/local_installers/cuda_9.0.176_384.81_linux-run

chmod +x cuda_9.0.176_384.81_linux-run

./cuda_9.0.176_384.81_linux-run --extract=$HOME

cd $HOME

sudo ./cuda-linux.9.0.176-22781540.run

设置 CUDA 环境变量

sudo bash -c "echo /usr/local/cuda/lib64/ > /etc/ld.so.conf.d/cuda.conf"

echo "
##### about CUDA #####
export CUDA_HOME=/usr/local/cuda
export PATH=\$CUDA_HOME/bin:\$PATH
export LD_LIBRARY_PATH=\$CUDA_HOME/lib64:\$LD_LIBRARY_PATH" >> $HOME/.bashrc

source ~/.bashrc

ldconfig

rm $HOME/cuda-linux.9.0.176-22781540.run

检查 CUDA 版本

nvcc --version

安装 cuDNN

下载 cuDNN 7.0

提示:由于我们已经将 CUDA 安装到 /usr/local 目录,所以我们直接将 cuDNN 在该目录下解压,这样解压后的文件会自动放进 cuda 的对应目录

cd /usr/local

wget http://developer.download.nvidia.com/compute/redist/cudnn/v7.0.5/cudnn-9.0-linux-x64-v7.tgz

解压安装

sudo tar -xvzf cudnn-9.0-linux-x64-v7.tgz

rm cudnn-9.0-linux-x64-v7.tgz

ldconfig

通过 TensorFlow 验证 GPU 环境是否就绪

验证方法

python -c 'import tensorflow as tf; print tf.test.is_gpu_available()'

显示 True 表示安装成功,否则请检查以下情况是否存在:

  1. 通过 pip freeze 检查是否安装的是 gpu 版本,或者是否还装了 cpu 版本,有则卸载掉 cpu 版本的依赖包。(提示:如果你安装了 tensorflow-serving-api 它会默认安装 cpu 版的 tensorflow)。

  2. 通过 pip install tensorflow_gpu 安装的预构建版本请检查编译使用的 CUDA、cuDNN 等是否与你的版本一致。点击查看

  3. 如果提示 “CUDA driver version is insufficient for CUDA runtime version” 那么很可能是 CUDA 版本和你的显卡驱动版本不兼容。可参考以下:

#CUDA版本: 最低显卡驱动版本要求

CUDA 9.1: 387.xx
CUDA 9.0: 384.xx
CUDA 8.0  375.xx (GA2)
CUDA 8.0: 367.4x
CUDA 7.5: 352.xx
CUDA 7.0: 346.xx
CUDA 6.5: 340.xx
CUDA 6.0: 331.xx
CUDA 5.5: 319.xx
CUDA 5.0: 304.xx
CUDA 4.2: 295.41
CUDA 4.1: 285.05.33
CUDA 4.0: 270.41.19
CUDA 3.2: 260.19.26
CUDA 3.1: 256.40
CUDA 3.0: 195.36.15
转载请注明出处:

© http://hejunhao.me