(2025年6月3日更新)

一. 需求:

我们在复现深度学习网络的过程中,必然需要按照要求配置环境,例如下图所示。
在这里插入图片描述
上图说了四点:

  1. liunx版本支持16.04和18.04 。
  2. python版本支持python3.6以上。
  3. pytorch版本支持1.1以上。
  4. CUDA版本支持9.0以上。

二. 环境配置流程总结

对于驱动+CUDA Toolkit+cuDNN+pytorch+cudatoolkit这套环境的配置流程,现总结如下:

  1. 查看CUDA的维基百科,确定与显卡型号适配的CUDA版本,并选择其中一个。(这里主要是可查看与显卡适配的CUDA版本区间)

  2. 查看CUDA官方文档,确定与CUDA版本适配的驱动版本,并选择其中一个 。(驱动支持的CUDA版本向后兼容,选择一个新的驱动不会有什么影响。)

  3. 下载驱动并安装

  4. 下载CUDA Toolkit并安装,配置软链接、~/.bashrc,详见正文(Windows用户可参考这篇博客配置环境变量)(安装CUDA ToolKit的过程中也可以选择安装显卡驱动但是驱动版本单一,这里选择不安装。)
    (linux卸载NVIDIA CUDA toolkit和 Driver驱动)

  5. 创建conda开发环境(根据CUDA和torch版本选择对应的python版本)

  6. 在cuDNN下载页面选择CUDA版本支持的cuDNN版本下载并安装

  7. 根据pytorch官网的指示安装pytorch+cudatoolkit,需注意cudatoolkit与CUDA Toolkit一样要选择与显卡型号和驱动版本适配的版本,pytorch版本则按需选择

三. 重要概念

  1. 版本的确定流程为:显卡型号 >> CUDA版本 >> 驱动版本&cuDNN版本

  2. CUDA是一个并行计算平台和编程模型,简单来说,它使得你能够用NVIDIA GPU进行通用计算。使用CUDA前,显卡一定要安装好驱动(事实上,没装驱动的显卡什么都干不了)。

  3. CUDA有两种API,分别是:随驱动安装的driver API(nvidia-smi显示的CUDA版本就是driver API的版本);随CUDA Toolkit安装的runtime API(可以用nvcc -V查看runtime API的版本)。两者版本不需要一致。 driver API的CUDA不能完成runtime API的CUDA的工作,所以仅安装驱动而不安装CUDA Toolkit或cudatoolkit是没法在开发中使用CUDA的。

  4. CUDA Toolkit由NVIDIA官方发行,不仅包含了CUDA的runtime API,还包含了CUDA代码的编译器nvcc(CUDA也有自己的语言,代码需要编译才能执行)和debug工具等。

  5. cudatoolkit为pytorch提供的、编译好的、用以支持pytorch运行的CUDA部件(动态链接库DLL等),在运行pytorch时,调用的CUDA都是cudatoolkit;仅当需要编译依赖CUDA的torch拓展模块时,会调用CUDA Toolkit(可以参考这个帖子)。

  6. 综上述3、4条,cudatoolkit与CUDA Toolkit没有关系,版本也不需要一致。且在使用pytorch时,如果不需要编译CUDA代码,则不会调用CUDA Toolkit,也不需要安装CUDA Toolkit;仅在pytorch中使用CUDA的话,cudatoolkit就足够了。 经测试,仅安装pytorch+cudatoolkit,而没有安装CUDA Toolkit时,也是可以在pytorch中使用CUDA的。

  7. 无论是CUDA Toolkit还是cudatoolkit,在安装时都必须选择与显卡型号和驱动版本适配的版本。

  8. cuDNN(CUDA 深度神经网络库)是经GPU加速的深度神经网络基元库,可大幅优化标准例程(例如用于前向传播和反向传播的卷积层、池化层、归一化层和激活层)的实施。可以简单地将cuDNN理解为CUDA的拓展和加速模块。 CUDA Toolkit 的cuDNN需要专门安装;而cudatoolkit中包含了cuDNN的相关部件。 CUDA Toolkit 的cuDNN和cudatoolkit`的cuDNN在功能上完全一致。

四. 目标环境确定

根据自己主机的软件硬件配置,结合上面第一章:需求中的期望环境,确定最终我们要配置的环境。

博主主机配置

设备配置
CPUi7-12700KF
GPUGTX3060
系统版本Ubuntu20.04

期望环境

环境的讨论与确定

  • 本人的主机系统是Ubuntu20.04,但是上图Requirements中之提到了16.04和18.04,本人不想重装系统,所以就认为should be able to work on 20.04,后面的结果证明20.04是完全的。
  • 版本的确定流程为:显卡型号 >> CUDA版本 >> 驱动版本 >> CUDA ToolKit版本&cuDNN版本&nvcc>> >>conda的python版本 >> torch版本>> cudatoolkit版本 >>cuDNN版本,下面我们按照这个顺序,确定各模块版本。
    • 通过显卡型号确定CUDA的版本号区间
      Setp1: 显卡型号为GTX 3060
      Setp2: 查看CUDA的维基百科,找到名为Compute capability, GPU semiconductors and Nvidia GPU board products的表,在表中找到显卡对应的Compute capability(version),如下图所示,GTX3060对应的Compute capability(version) 是8.6 。
      在这里插入图片描述
      Step3:查看CUDA的维基百科,找到名为Compute capability (CUDA SDK support vs. microarchitecture) 的表,在表中找到显卡Compute capability(version) =8.6对应的CUDA SDK version(s),如下图所示,GTX3060对应的CUDA SDK version(s) 是11.1-12.9 ,因此CUDA的版本号区间为11.1-12.9。如下图所示。
      在这里插入图片描述
      上图中8.6的框,框出的绿色部分对应的CUDA SDK version(s)均可,因为CUDA SDK version(s)可以向下兼容。
    • 根据CUDA版本号区间选择显卡驱动:CUDA官方文档显示了显卡驱动版本和CUDA版本之间的关系,截图如下图所示。显卡驱动版本需要>=450.80.02,才能支持CUDA 11.1以上的版本。这里主要是不能让驱动版本过低。
      在这里插入图片描述
      由于显卡驱动是向后兼容的,因此我们在显卡驱动选择界面,选择一个最新的显卡驱动进行安装即可。安装完成后,如下图所示。
      在这里插入图片描述

conda入门

  • 我们使用conda环境搭建,搭建方法请查看下面这篇文章。
    在linux系统中安装Anaconda,并使用conda
  • 使用conda的好处
    在这里插入图片描述
  • conda的相关介绍请查看conda文档,文档可以不看,但是请注意在conda环境中安装各种包时
    请使用conda命令而不是pip (conda官方:使用 pip 安装包会修改您的 conda 环境,但 conda 并不知道这些修改。因此,当 conda 稍后尝试修改环境时,conda 跟踪的包和未跟踪的 pip 包之间很可能出现依赖冲突,这可能会导致环境损坏。)

conda使用

参考:
安装CUDA Toolkit(完整版)

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐