Anaconda+CUDA+cuDNN+Tensorflow2.0环境搭建

Posted 莫河

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Anaconda+CUDA+cuDNN+Tensorflow2.0环境搭建相关的知识,希望对你有一定的参考价值。

前言

​ 这是博主第一次写CSDN的博客,本人还是大学生一枚,如果有忽略的点请各位大哥大姐们指正。
​ 今年博主就是个大四萌新了,想着继续冲击一把读研,研究生想走的方向也是深度学习相关方向。因此把原本电脑上的win10换成了ubuntu,换了之后在安装Tensorflow和pytorch的路上疯狂采坑,接连重装了三次Ubuntu,一度将Ubuntu20.04降版本为18.04,而关于我在学习使用Ubuntu时的问题和解决方案我也会在后续的文章中列出。

搭建环境初期遇到的问题

​ 博主在学习使用初期是在本机上搭的炼丹炉,而后来发现了一系列问题诸如:

​ (1)目前主流的深度学习框架如PyTorch和Tensorflow基本上是基于N卡的GPU,需要使用者安装CUDA支持,而pytorch和tensorflow的版本对cudatoolkit又有着不同的对应版本要求,不同版本的cudatoolkit可能在运行框架代码时无法找到对应的文件。cudatoolkit版本与显卡驱动版本之间,甚至针对linux kernel和gcc/g++版本之间也有互相对应(参考图1-1和图1-2)。过于繁杂的对应关系,导致在环境搭建时及其容易导致环境冲突或者环境不满足,最后无法正常运行甚至把操作系统搞坏不得不重装(我之前不熟悉Ubuntu apt的功能时为了重新安装g++删除旧版本的时候不小心把操作系统搞坏过,最后导致XServer、apt等一系列功能全部失效,不得不重装(后期博主也会发一份重装Ubuntu的教程,为防止各位和傻乎乎的我一样))。

图1-1 CUDA和Driver之间的关系

图1-2 例:CUDA 11.4与Linux各版本之间的环境依赖关系

​ (2)Linux的原装驱动Nouveau并不支持CUDA,因此需要禁用掉Nouveau并且重装N卡官方驱动。会有很多同学在不知道的情况下安装了cuda,最后导致pytorch和tensorflow无法使用或者CUDA无法安装等问题。而且更换显卡驱动的时候也会出一些问题,比如博主在更换为N卡官方驱动的时候,当时使用的是Ubuntu20.04,不知为何在进入bios里关掉Enable Security Boot的时候,直接就进不去了,导致无法正常安装驱动,不得已才降版本为Ubuntu18.04,20.04虽然速度快的多,但是bug同样也多,尤其是snap商店不显示应用的问题。

​ (3)在安装完成CUDA之后,还需要安装cuDNN这一GPU加速库,否则无法正常运行tensorflow,这些下文都会讲到

​ (4)之前我的朋友想让我买个AMD的显卡外接训练数据,但是A卡并不支持CUDA,虽然可以将CUDA代码转为OpenCL,但是想要适配A卡的生产环境极其麻烦,这边不考虑A卡。

​ 本文是关于如何在win10以及Ubuntu环境下搭建Anaconda3+CUDA+cuDNN+tensorflow深度学习环境,我会分步骤分系统慢慢给同学们讲,有人会问为什么不用原生python呢,是因为anaconda它香啊,conda和pip的差别我不在这里赘述了,大家可以参考知乎上一篇文章https://www.zhihu.com/question/395145313。博主的anaconda是完全使用命令行的,因为我的Navigator第一次打不开,后来也就没再用过。后续随着学习的深入我应该会出一篇关于pycharm或vscode(我主要还是用pycharm作为IDE)+docker的tensorflow炼丹炉搭建教程。


参考硬件环境

这里是我使用的两台笔记本电脑的性能参数

  • HP OMEN

    • OS: Windows 10 Home Edition
    • CPU: Intel® Core™ i7-9750H CPU @ 2.60GHz
    • Memory: 2*8G DDR4 2666MHZ
    • GPU: Nvidia Geforce RTX2060
  • DELL Precision 7530

    • OS: Ubuntu 18.04 LTS
    • CPU: Intel® Core™ i7-8750H CPU @ 2.20GHz
    • Memory: 2*8G DDR4 2666MHZ
    • GPU: Nvidia Quadro P1000

Anaconda3

  • 备注:博主这边虽然是通过清华镜像站安装的anaconda3,但是我并没有使用清华的conda或者pip镜像,我是直接采用科学上网(懂的都懂)的办法安装的第三方库,但是我依然会在下面附上使用镜像和设置镜像的方法

Win10

安装

  • 首先进入清华镜像站下载Anaconda3,我这边使用的是Anaconda3-5.3.1版本

  • https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/

  • 下载完成后点击exe执行文件安装,注意不要安装vscode,我尝试过根本安装不上

使用

  • 在win10中我并不太喜欢直接用shell输入conda activate环境来进入anaconda的虚拟环境,我喜欢直接使用anaconda提供的Anaconda Prompt,它是一种和shell十分相似的命令行环境,好处就是不需要再添加anaconda的环境变量也能够执行conda的一系列命令

  • 运行方式:右键以管理员身份(建议,因为环境存在读写权限问题)运行Anaconda Prompt

镜像

  • 与pip相似,如果采用默认的channel进行下载,在国内是非常慢的,因此需要采用镜像,在配置anaconda的国内源镜像前,我这边先把pip国内镜像源和使用方法附在下面

    镜像名称镜像地址
    阿里云http://mirrors.aliyun.com/pypi/simple/
    豆瓣http://pypi.douban.com/simple/
    清华大学https://pypi.tuna.tsinghua.edu.cn/simple/
    中国科学技术大学http://pypi.mirrors.ustc.edu.cn/simple/
    华中科技大学http://pypi.hustunique.com/
    pip install [module_name] -i [mirror_address]
    pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple/
    
  • Anaconda镜像安装(以清华源为例,win10和Ubuntu步骤相同,因此不再赘述)

    • 终端输入
    conda config --set show_channel_urls yes
    

    这个命令会在当前目录下生成配置文件.condarc

    • 修改配置文件

    win10中用任意文本编辑器打开即可

    ubuntu中使用命令

    sudo gedit .condarc
    

    将以下配置信息复制粘贴进.condarc文件保存

    channels:
      - defaults
    show_channel_urls: true
    default_channels:
      - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
      - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
      - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
    custom_channels:
      conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
      msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
      bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
      menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
      pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
      simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
    

    如果使用conda install 任意包显示清华镜像源的信息则说明配置成功

Ubuntu

安装

  • 依然是先进入清华镜像站下载Anaconda3-5.3.1

  • https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/

  • 这次我们下载的是

  • 由于我们是64位的系统,因此下载x86_64的版本

  • 随后进入到下载目录

    cd 下载
    
  • 输入命令运行安装文件

    bash Anaconda3-5.3.1-Linux-x86_64.sh
    

    博主由于已经安装过anaconda了,因此将安装文件换了个位置,你如果是在谷歌或者火狐浏览器上下载的话默认是放在"~/下载"这个目录里

  • 然后就是看一堆license,copyright声明了,这些大家一定不要快速敲回车,容易进入到下一步了还在摁回车

  • 随后是问你同不同意这个license,不同意就无法安装,因此我们输入yes

  • 接下来是让你选择安装的路径,默认是安装在当前用户的家目录下,由于博主已经安装过了,所以博主将目录改到我挂载的其中一个硬盘上(关于Ubuntu开机自动挂载硬盘的知识我也会在后面介绍)

  • 接下来默默等待进入下一步就行

  • 接下来它会提示是否需要initialize Anaconda,这个其实是为你的用户添加环境变量,由于Ubuntu中没有prompt,因此我们使用shell来进行conda命令操作,因此我们输入yes(由于博主已经安装过了,不想再动环境变量,就输了no)

  • 接下来会问你是否需要安装VSCode,这里我们选择no,似乎是因为Anaconda安装包VSCode配置的问题,我们没法成功安装上VSCode,但是后续我们可以自行安装VSCode,这个不用担心

  • 安装完成

  • 我们来验证一下,输入

    conda -V
    

    或者

    conda --version
    

    若显示以下信息说明安装成功

Tensorflow环境搭建

参考https://www.tensorflow.org/install/gpu?hl=zh_cn

Win10

Step 1:创建虚拟环境(关于Anaconda虚拟环境和其他常用命令我会后续写一篇文章细讲)

  • 打开Anaconda Prompt

  • 创建虚拟环境

    conda create --name tensorflow python=3.7
    

  • 激活虚拟环境

    activate tensorflow
    

Step 2:安装tensorflow

  • 使用pip指令

  • pip install tensorflow -i https://pypi.tuna.tsinghua.edu.cn/simple/
    

Step 3:PyCharm添加虚拟环境

  • 打开pycharm–>File–>New Project

  • 项目存放位置自定

  • 选择编译器Previously configured interpreter

  • 点击路径后的省略号进入Add Python Interpreter

  • 选择Conda Environment

  • 点击Interpreter路径后的省略号进入Select Python Interpreter

  • 选择你Anaconda3目录下的envs下的tensorflow目录,并选择里面的python.exe文件

  • 一直点OK最后点击create

Step 4:验证tensorflow是否已安装完成

  • 新建一个python文件

  • 输入下面代码查看是否报错

  • import tensorflow
    
  • 若无报错则说明tensorflow第三方库安装没有问题

Step 5:将tensorflow搭建在GPU上

  • 在刚才的python文件内输入

  • from tensorflow.python.client import device_lib
    print(device_lib.list_local_devices())
    

  • 如果输出结果如上图所示说明你当前只有CPU设备可用,如果有输出GPU设备的各项属性则说明你之前已经搭建过了CUDA+cuDNN的环境

  • 接下来开始进行GPU环境搭建

  • 以管理员身份打开cmd

  • 输入nvidia-smi指令

  • 若无该指令则需要手动安装一下Nvidia Driver,建议直接安装百度搜索Nvidia GeForce Experience,这个应用是英伟达官方安装N卡驱动的神器(windows专属)

  • 查看Driver Version(驱动版本)和CUDA Version(这个参数并非你已安装的CUDA,而是你驱动可适配的CUDA Toolkit版本)

  • 随后查看自己先前是否有安装CUDA Toolkit

    • 在控制台输入nvcc -V

  • 如果有以上信息则无需再安装CUDA Toolkit

  • 如果没有则可以前往https://developer.nvidia.com/cuda-toolkit-archive根据自己适配的CUDA进行安装

  • 这里博主选择的是CUDA Toolkit 11.4.0

  • 根据自己的电脑系统选择版本下载exe安装就可以了

    • CUDA尽量安装在C盘
  • 安装完成后重新在控制台上输入nvcc-V查看是否安装完成

    • cudnn的安装与CUDA挂钩,我直接放csdn的教程了,而且比较复杂,我一会儿传群里,你们就不用去官网下载了
  • 接下来开始cuDNN的安装

    • 前往官网https://developer.nvidia.com/rdp/cudnn-archive

    • 根据你CUDA的版本安装cuDNN,我这边选的是cuDNN v8.2.2,选择windows x64的版本
    • 随后他会提醒你NVIDIA Developer Program需要会员资格,因此需要你去注册一个Nvidia的账号,再输入你相关机构和使用目的的信息,博主这边输入的是自己的学校

    • 下载完成之后解压缩,拷贝到你的cuda安装目录下即可
  • 安装完成后再重新跑代码则可得GPU的参数

Ubuntu

​ 在ubuntu上创建虚拟环境、安装tensorflow第三方类库以及检验环境方法是完全一样的,下面我着重讲解一下Ubuntu18.04(CUDA 11.4)GPU支持的搭建,而且注意,不同的Ubuntu方法可能有差别,具体参考官方网站https://www.tensorflow.org/install/gpu?hl=zh_cn

​ 还有一点要注意的,以下步骤尽量不要开梯子下,博主之前用梯子屡次下载不成功

​ 因为之前安装过,图片就先不放了

Step 1:更改驱动

​ 博主曾经因为手动安装驱动出现了诸如Security Boot进入黑屏、Nouveau驱动禁用后导致电脑可视化进不去等问题,后来重装了三遍最后确定了一个比较稳定的方案。

  • Ubuntu本身自带一个应用叫软件和更新,如果你是正常安装的Ubuntu(非精简安装),在附加驱动中应该会有不同版本的driver,默认是Linux自带的Nouveau驱动,接下来直接选择自己显卡对应支持的显卡驱动版本就可以了,具体版本可以去Nvidia官网上查询https://www.nvidia.cn/geforce/drivers/

  • 接下来等待安装完成,安装中途可能会出现需要你输入用于secure boot的密码,reboot重启电脑,会进入Secure Boot,选择第二还是第三个选项(具体不记得了,因为bios模式下截图我还没有学),进入之后命令行输入nvidia-smi

  • 若有以上信息则安装成功

Step 2:添加Nvidia仓库

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /"
sudo apt-get update

wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb

sudo apt install ./nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
sudo apt-get update

wget https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/libnvinfer7_7.1.3-1+cuda11.0_amd64.deb
sudo apt install ./libnvinfer7_7.1.3-1+cuda11.0_amd64.deb
sudo apt-get update

Step 3:安装CUDA和cuDNN

sudo apt-get install --no-install-recommends cuda-11-4 libcudnn libcudnn8-dev
  • 随后reboot重启电脑,命令行输入nvidia-smi, 以及nvcc -V进行验证

  • 如有需要安装TensorRT加速库,我也把安装命令放在了下方

sudo apt-get install -y --no-install-recommends libnvinfer7\\
 libnvinfer-dev\\
 libnvinfer-plugin7

以上是关于Anaconda+CUDA+cuDNN+Tensorflow2.0环境搭建的主要内容,如果未能解决你的问题,请参考以下文章

Anaconda+CUDA+cuDNN+Tensorflow2.0环境搭建

使用 Anaconda install 在 Windows 上获取 CUDA 和 CUDNN 版本

使用 GPU 和 CUDA、cuDNN、Anaconda、RTX 3060 Ti 运行 TensorFlow/Keras

win10+cuda+cudnn+anaconda环境安装

anaconda安装paddle(安装CUDA,CUDNN)

如何在anaconda虚拟环境中安装多个版本的CUDA,cudnn,pytorch,torchvision,torchaudio及进行环境配置手把手教学