centos7 搭建深度学习环境

本文引用转载自博客园
经实践可用,对原内容进行了删减调整,后续作者理解更深了,可能更新

一、安装NVIDA组件

1. 安装CUDA

CUDA又叫cuda-toolkit,是NVIDA公司专门开发的一套接口,方便利用GPU做高速计算。主流的深度学习框架都面向CUDA做了兼容。CUDA的版本适配非常重要。目前TensorFlow2.0在CUDA上最稳妥的选择是10.0,如果选择10.1以上,有机率不识别GPU,CUDA仓库

  • 下载cuda10.0
    wget https://developer.download.nvidia.cn/compute/cuda/10.0/secure/Prod/local_installers/cuda-repo-rhel7-10-0-local-10.0.130-410.48-1.0-1.x86_64.rpm
  • 下载完,在存放资源包目录下,依次运行以下命令
    • sudo rpm -i cuda-repo-rhel7-10-0-local-10.0.130-410.48-1.0-1.x86_64.rpm
    • sudo yum clean all
    • sudo yum install cuda
    • sudo vi ~/.bashrc
    • 然后在bashrc文件里添加下面配置
      export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}}

2. 安装CuDNN

CuDNN是深度神经网络库,和CUDA搭配使用,专门用于深度学习任务
从CuDNN仓库下载适配CUDA版本的安装包,注意认准CUDA10.0版本号,CuDNN仓库

  • 下载CuDNN7.6.5
    wget https://developer.download.nvidia.cn/compute/machine-learning/cudnn/secure/7.6.5.32/Production/10.0_20191031/cudnn-10.0-linux-x64-v7.6.5.32.tgz
  • 下载完,在存放资源包目录下,依次运行以下命令
    • tar xzvf cudnn-10.0-linux-x64-v7.6.5.32.tgz
    • sudo cp -P cuda/include/cudnn.h /usr/local/cuda/include
    • sudo cp -P cuda/lib64/lib* /usr/local/cuda/lib64
    • sudo chmod a+r /usr/local/cuda/include/cudnn.h
    • sudo chmod a+r /usr/local/cuda/lib64/lib*
    • sudo ldconfig

3. 安装NVIDA显卡驱动

显卡驱动有一个安装原则:装最新的驱动,NIVIDA官网
作者使用的是虚拟存储中的虚拟机,这一步没有安装,后续观察是否有影响

centos7 搭建深度学习环境_第1张图片

二、安装深度学习框架TensorFlow

1. 安装Anaconda(此处安装的为Miniconda)

Anaconda是python领域比较流行的包管理器,类似的有virtualenv等。Anaconda的特色是,会自动帮助安装需要的依赖项;并且使用方便,文档详尽。

  • 下载 wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh
  • 安装 sh Miniconda3-latest-Linux-x86_64.sh

2. 创建虚拟环境并激活

  • conda create --name tensorflow
  • 激活环境 conda activate tensorflow

3. 安装 TensorFlow2.0

  • 请严格输入这条命令,conda会下载安装所需的全部依赖,其中包括cudatoolkit-10.0.130和cudnn-7.6.5,虽然前面安装了这两个包,但是不冲突,可以默认执行;如果在训练神经网络时发现冲突,可以回头再删除这两个包
    conda install tensorflow-gpu==2.0.0

4. 两条常用conda命令

  • 退出当前环境 conda deactivate
  • 查看本机上安装的环境 conda info --env

三、配置远程访问

1. 安装jupyter notebook并配置远程访问

  • conda install jupyter notebook
  • 生成一份默认配置文件 jupyter notebook --generate-config
  • 输入python,进入ipython交互环境,如下图所示输入代码
    centos7 搭建深度学习环境_第2张图片注意,中间两步输入密码时不会显示任何字符;记得保存打印结果的字符串 ‘sha…’
  • 开始配置jupyter notebook,打开jupyter的配置文件,路径一般为 /root/.jupyter/jupyter_notebook_config.py
    • vi /root/.jupyter/jupyter_notebook_config.py
    • 修改 c.NotebookApp.ip,填充机器的IP地址 (使用 ip addr 命令查看本机的IP地址)
    • 修改 c.NotebookApp.password, 把保存的密码填充进去,注意格式为 c.NotebookApp.password = u’sha…’
    • 修改 c.NotebookApp.open_browser , 这项默认是True,远程登陆时要修改为 False
    • 将 c.NotebookApp.port =8888 反注释 (可以自己另指定一个端口)

2. 开放端口

推荐使用 iptables 工具

  • 首先要关闭 firewall 服务
    • systemctl stop firewalld.service
    • systemctl disable firewalld.service
    • systemctl mask firewalld.service
  • 安装 iptables 防火墙
    • sudo yum install iptables-services -y
  • 启动 iptables
    • systemctl enable iptables
    • systemctl start iptables
  • 编辑防火墙文件
    • sudo vim /etc/sysconfig/iptables
    • 添加端口(添加下述配置)
    A INPUT -m state --state NEW -m tcp -p tcp --dport 8888 -j ACCEPT
    
  • 重启 iptables 使新端口生效
    • systemctl restart iptables.service
  • 设置防火墙开机启动
    • systemctl enable iptables.service

四、验收

1. 激活tensorflow环境

conda activate tensorflow

2. 开启jupyter notebook (可以添加禁止挂起和后台执行命令)

nohup jupyter notebook &

五、救命稻草

如果在使用 tensorflow 过程中出现Error : Failed to get convolution algorithm,这是因为显卡内存被耗尽了
(按照本文档安装可以排除cuda版本冲突的可能)
可以在代码的最开始输入下面两行配置

physical_device = tf.config.experimental.list_physical_devices("GPU")
tf.config.experimental.set_memory_growth(physical_device[0], True)

你可能感兴趣的:(centos7 搭建深度学习环境)