【深度学习】Linux完全离线搭建tensorflow_gpu环境详尽流程:RHLS7.8+cuda11.0+cudnn11.3+tensorflow_gpu2.6-cp38

【深度学习】Linux完全离线搭建tensorflow_gpu环境详尽流程:RHLS7.8+cuda11.0+cudnn11.3+tensorflow_gpu2.6-cp38

    • 一、查看操作系统
    • 二、安装gcc
    • 三、安装epel
    • 四、安装相应版本的kernel
    • 五、禁用nouveau
    • 六、安装cuda
      • 6.1 安装cuda
      • 6.2 环境变量配置
      • 6.3 测试是否安装成功
    • 七、安装NVIDIA驱动
    • 八、安装cudnn
    • 九、安装anaconda
    • 十、安装tensorflow_gpu
    • 十一、远程访问jupyter设置

一、查看操作系统

  • cat /etc/os-release 命令查看操作系统
    本机操作系统为:Red Hat Enterprise Linux Server 7.8
  • uname -a 命令查看操作系统位数
    本机系统位数为x86_64

二、安装gcc

通过gcc -v 命令查看本机是否已经安装gcc,如没有,则需要安装以下包:
binutils-2.27-44.base.el7.x86_64.rpm
cpp-4.8.5-44.el7.x86_64.rpm
gcc-4.8.5-44.el7.x86_64.rpm
gcc-c+±4.8.5-44.el7.x86_64.rpm
glibc-2.17-317.el7.x86_64.rpm
glibc-common-2.17-317.el7.x86_64.rpm
glibc-devel-2.17-317.el7.x86_64.rpm
glibc-headers-2.17-317.el7.x86_64.rpm
libgcc-4.8.5-44.el7.x86_64.rpm
libgomp-4.8.5-44.el7.x86_64.rpm
libmpc-1.0.1-3.el7.x86_64.rpm
libstdc+±4.8.5-44.el7.x86_64.rpm
libstdc+±devel-4.8.5-44.el7.x86_64.rpm
mpfr-3.1.1-4.el7.x86_64.rpm
zlib-1.2.7-18.el7.x86_64.rpm
(可在该网址下载相应版本的安装包)
逐一通过命令sudo rpm -ivh ***.rpm安装以上包,先安被依赖的,如遇到glibc和glibc-common两包相互依赖的情况,则执行sudo rpm -ivh glibc-2.17-317.el7.x86_64.rpm glibc-common-2.17-317.el7.x86_64.rpm
如遇到conflict with file的问题,则在命令后加上参数–replacefiles:sudo rpm -ivh ***.rpm --replacefiles
所有包安装完成后,通过gcc -v命令查看gcc是否安装成功。

三、安装epel

执行命令sudo rpm -ivh epel-release-7-13.noarch.rpm安装epel包,可在该网站下载相应版本安装包。

四、安装相应版本的kernel

通过uname –r命令查看本机的kernel版本(本机为3.10.0-1127)
下载相应版本的kernel-devel-3.10.0-1127**.rpm
下载相应版本的kernel-header-3.10.0-1127**.rpm
下载相应版本的kernel-3.10.0-1127**.rpm
(可在该网站下载相应版本kernel,如果版本不一致会导致安装nvidia driver的时候报错unable to find the kernel source tree for the currently ruuning kernel)
通过命令sudo rpm -ivh ***.rpm逐一安装。
(如已有其它版本的kernel则需要先卸载 yum remove kernel-devel-3.10.0-1160.el7.x86_64

五、禁用nouveau

进入路径 cd /etc/modprobe.d/
创建文件 vim blacklist-nouveau.conf
写入内容echo -e "blacklist nouveau \noptions nouveau modeset=0" >/etc/modprobe.d/blacklist-nouveau.conf
禁用sudo dracut --force
重启机器reboot
通过lsmod |grep nouveau命令查看是否禁用成功,如果没有回显信息则表示禁用成功。

六、安装cuda

6.1 安装cuda

切换到3级运行:systemctl isolate runlevel3.target
安装cuda:sh cuda_11.0.2_450.51.05_linux.run 安装选项:第一步选择accept;第二部去掉驱动driver选项,然后选择install
(在该网站下载所需版本安装包)
设置链接指向cuda:ln -s /usr/local/cuda /usr/local/cuda-11.0
重启机器:reboot
切换到图形界面:systemctl isolate runlevel5.target 。执行runlevel命令显示3 5则表示切换成功。

6.2 环境变量配置

打开profile文件:vi /etc/profile
在文件最后添加如下三行:

export PATH="/usr/local/cuda-11.0/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-11.0/lib64/:$LD_LIBRARY_PATH"
export CUDA_HOME="/usr/local/cuda-11.0/:$CUDA_HOME"

(记得文件路径都替换为自己安装cuda的路径)
保存退出并使之生效:source /etc/profile

6.3 测试是否安装成功

  • 编译并测试设备 deviceQuery:
    进入路径:cd /usr/local/cuda-11.0/samples/1_Utilities/deviceQuery
    编译:sudo make
    测试:./deviceQuery
    最后结果result=PASS表示测试通过

  • 编译并测试带宽 bandwidthTest:
    进入路径:cd ../bandwidthTest
    编译:sudo make
    测试:./bandwidthTest
    最后结果result=PASS表示测试通过

如果测试过程中报错CUDA driver version is insufficient for CUDA runtime version,则先进行第七步安装nvidia驱动,然后再回过头来测试。

七、安装NVIDIA驱动

执行命令lsmod |grep nouveau查看nouveau是否仍在禁用状态。
切换到runlevel3命令:systemctl isolate runlevel3.target
安装nvidia驱动:sh NVIDIA-Linux-x86_64-450.142.00.run
(在官网选择相应版本进行下载,本机选择的Tesla V100)
启动图形化界面:systemctl isolate runlevel5.target
通过命令nvidia-smi(注意中间没有空格)查看驱动安装是否成功,如成功则返回gpu信息如下:
【深度学习】Linux完全离线搭建tensorflow_gpu环境详尽流程:RHLS7.8+cuda11.0+cudnn11.3+tensorflow_gpu2.6-cp38_第1张图片

八、安装cudnn

解压安装包:tar zxvf cudnn-11.3-linux-x64-v8.2.1.32.tgz
(可在官方网站下载相应版本)
解压后进入路径:cd cuda/include/
执行如下命令完成安装:

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
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

九、安装anaconda

安装:bash Anaconda3-2021.05-Linux-x86_64.sh
(安装包可在清华镜像网站下载)
(安装选项do you wish the installer to init….选择yes)
添加环境变量:在/etc/ profile末行添加

export PATH="/root/anaconda3/bin:$PATH"

重启:reboot
执行python命令查看是否成功启动新版python(显示python版本为3.x则表示成功)。
执行conda list命令查看已安好的库。

十、安装tensorflow_gpu

离线安装tensorflow_gpu2.6所需要的所有依赖包如下:
absl_py-0.13.0-py3-none-any.whl
astor-0.8.1-py2.py3-none-any.whl
keras-2.6.0-py2.py3-none-any.whl
grpcio-1.40.0-cp38-cp38-manylinux2014_x86_64.whl
Keras_Applications-1.0.8-py3-none-any.whl
Keras_Preprocessing-1.1.2-py2.py3-none-any.whl
Markdown-3.3.4-py3-none-any.whl
mock-4.0.3-py3-none-any.whl
termcolor-1.1.0.tar.gz
protobuf-3.17.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl
tensorboard-2.6.0-py3-none-any.whl
tensorboard_data_server-0.6.1-py3-none-manylinux2010_x86_64.whl
google_auth_oauthlib-0.4.6-py2.py3-none-any.whl
pyasn1-0.4.8-py2.py3-none-any.whl
pyasn1_modules-0.2.8-py2.py3-none-any.whl
rsa-4.7.2-py3-none-any.whl
cachetools-4.2.2-py3-none-any.whl
requests_oauthlib-1.3.0-py2.py3-none-any.whl
oauthlib-3.1.1-py2.py3-none-any.whl
tensorboard_plugin_wit-1.8.0-py3-none-any.whl
google_auth-1.35.0-py2.py3-none-any.whl(这个必须小于2.0
gast-0.4.0-py3-none-any.whl(这个必须为4.0版本
astunparse-1.6.3-py2.py3-none-any.whl
opt_einsum-3.3.0-py3-none-any.whl
google_pasta-0.2.0-py3-none-any.whl
tensorflow_estimator-2.6.0-py2.py3-none-any.whl
flatbuffers-1.12-py2.py3-none-any.whl(版本高了会报错
h5py-3.1.0-cp38-cp38-manylinux1_x86_64.whl(版本高了会报错
numpy-1.19.2-cp38-cp38-manylinux2010_x86_64.whl(版本高了会报错
clang-5.0.tar.gz(版本高了会报错
(所有安装包可在pypi网站进行搜索下载相应版本。)

逐一安装以上各包,whl文件通过pip install ***.whl命令进行安装,tar.gz文件则先解压:tar -zxvf ***.tar.gz,然后进入解压后的文件路径:cd ***,最后执行命令python setup.py install进行安装。
先安装被依赖的包,全部完成安装后再执行pip install tensorflow_gpu-2.6.0-cp38-cp38-manylinux2010_x86_64.whl命令安装tensorflow_gpu。

安装完成后进入python,输入以下命令测试:

import tensorflow as tf
tf.config.list_physical_devices('GPU')

显示True则表示安装成功并能够调用gpu进行计算。

如若报错“Could not load dynamic library ‘libcusolver.so.11’; dlerror: libcusolver.so.11: cannot open shared object file: No such file or directory”
则查看/etc/profile中LD_LIBRARY_PATH="/usr/local/cuda-11.0/lib64/:$LD_LIBRARY_PATH"的路径下的文件,发现没有libcusolver.so.11,但是有libcusolver.so.10。
解决办法,建立一个软连接:sudo ln -s libcusolver.so.10 libcusolver.so.11

十一、远程访问jupyter设置

设置远程访问jupyter notebook的文章很多,可以参照这篇写得相当详尽,并且提到了其它文章没有提到的放行linux防火墙端口的问题,这个问题导致一开始配置完成jupyter notebook后一直访问不了。
具体操作如下:

sudo firewall-cmd --zone=public --add-port=8848/tcp --permanent
restart firewalld

完成设置后在浏览器输入ip+端口就可以正常使用服务器jupyter notebook了。

你可能感兴趣的:(深度学习,linux,tensorflow,linux,深度学习)