TensorFlow 2.3 环境搭建

准备 GPU 服务器

购买阿里云 GPU 云服务器

点击购买 GN6 (V100), 选择按量付费, 购买 1块 NVIDIA Tesla V100 即可.

镜像选择 CentOS 7.6 64 位 (最新版) 即可.

单击下一步, 进入网络和安全组配置, 公网带宽选择按使用流量计费

最后单击确认订单, 然后等待实例创建完成.

配置远程登录

在实例列表页, 有对应实例的公网 ip 和内外 ip, 理论上通过 ssh root@公ip 即可远程登录. 现在的关键是需要知道 root 账号的密码, 我们可以通过重置密码设置.

在对应实例右侧, 依次点击更多, 密码/密钥, 重置实例密码 弹出如下对话框. 注意: 设置完密码, 需要重启实例 (更多, 实例状态, 重启).

现在你就可以用自己熟悉的终端, 比如 iTerm 2 远程登录这台 GPU 服务器, 搭建 TensorFlow GPU 训练/预测环境了.

安装驱动

查看服务器基本信息

$ lspci | grep -i nvidia
00:07.0 3D controller: NVIDIA Corporation GV100GL [Tesla V100 SXM2 16GB] (rev a1)

版本选择参考 https://tensorflow.google.cn/install/source#gpu

目前在用的有两个版本: tf2.3, python 3.7.8 (安装详情, 参见附录部分)

cuda_10.1.243_418.87.00_linux.run
cudnn-10.1-linux-x64-v7.6.5.32.tgz
NVIDIA-Linux-x86_64-418.152.00.run

以及 tf1.8, python 3.6.7

cuda_9.0.176_384.81_linux-run
cudnn-9.0-linux-x64-v7.4.1.5.tgz
NVIDIA-Linux-x86_64-384.183.run

接下来, 以 tf1.8 为例, 操作均用 root 账户

安装 NVIDIA

前往官网 https://www.nvidia.com/Download/index.aspx 下载对应版本的驱动

点击 SEARCH

然后, 点击下载按钮, 将得到可执行文件 NVIDIA-Linux-x86_64-384.183.run. 可以直接点击这里下载, 在服务器上用 wget 命令下载.

chmod a+x NVIDIA-Linux-x86_64-384.183.run
./NVIDIA-Linux-x86_64-384.183.run

查看驱动安装是否成功, 执行 nvidia-smi 命令.

安装 cuda

前往官网 https://developer.nvidia.com/cuda-90-download-archive, 下载 CUDA Toolkit 9.0

点击 Download 得到 cuda_9.0.176_384.81_linux-run 文件.

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

配置环境变量, 编辑 /etc/profile 文件, 在末尾增加如下两行配置

export PATH=/usr/local/cuda-9.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64

最后, 执行 source /etc/profile 命令, 使配置生效.

安装 cudnn

前往官网 https://developer.nvidia.com/cudnn, 下载 cuda 9 对应的版本 cudnn-9.0-linux-x64-v7.4.1.5.tgz, 这里需要注册登录才能下载. 直接解压缩文件, 然后移动到相应的目录下即可

tar -xkzvf cudnn-9.0-linux-x64-v7.4.1.5.tgz
cp cuda/lib64/libcudnn* /usr/local/cuda-9.0/lib64/
cp cuda/include/cudnn.h /usr/local/cuda-9.0/include/

安装 TensorFlow GPU

pip install tensorflow-gpu==1.8.0

验证是否安装成功, 进入 python 交互环境, 执行如下命令.

import tensorflow as tf
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

若成功打印出 GPU 硬件信息, 则说明环境搭建成功!

附录

tf2.3 环境搭建

安装 kernel

yum install kernel kernel-devel
shutdown -r now

安装 NVIDIA 驱动

chmod a+x NVIDIA-Linux-x86_64-418.152.00.run
./NVIDIA-Linux-x86_64-418.152.00.run
nvidia-smi

安装 cuda

chmod a+x cuda_10.1.243_418.87.00_linux.run
./cuda_10.1.243_418.87.00_linux.run

编辑 vim /etc/profile, 内容如下, 最后 source /etc/profile

export PATH=$PATH:/usr/local/cuda-10.1/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-10.1/lib64

安装 cudnn

tar -xkzvf cudnn-10.1-linux-x64-v7.6.5.32.tgz
cp -fa cuda/lib64/libcudnn* /usr/local/cuda-10.1/lib64/
cp -fa cuda/include/cudnn.h /usr/local/cuda-10.1/include/

需要禁用 nouveau

参见CentOS中禁用nouveau驱动, 可能需要执行 dracut --force.

找不到 kernel source

uname -r
yum install kernel-devel
./NVIDIA-Linux-x86_64-384.183.run --kernel-source-path=/usr/src/kernels/3.10.0-957.10.1.el7.x86_64

找不到 libcublas

执行 TensorFlow 验证时, 提示找不到 libcublas.so.9.0, 可能是没有配置环境变量, 参见 安装 cuda 部分.

参考文献