之前一直在搞深度学习,最近又想着安装一下mamba试一下效果,可以配置环境就花了好长时间,主要还是一些概念没有弄明白,这里记录一下,方便以后查阅。
Nvidia显卡在深度学习应用中一些概念解释
- 显卡中一些名词的解释
- CUDA Driver
- CUDA
- cuDNN
- CUDA Toolkit
- NCVV
- nvidia-smi 与 nvcc -V
显卡中一些名词的解释
CUDA Driver
这个就是常说的显卡驱动,比如我的电脑显卡型号是:GTX 3090,显卡驱动程序的版本:510.108.03。
每个版本的CUDA工具包都对应一个最低版本的CUDA Driver,也就是说如果你安装的CUDA Driver版本比官方推荐的还低,那么很可能会无法正常运行。
CUDA Driver是向后兼容的,这意味着根据CUDA的特定版本编译的应用程序将继续在后续发布的Driver上也能继续工作。
CUDA Toolkit 和 CUDA Driver 版本的对应情况如下:
https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html
CUDA
CUDA 英文全称是Compute Unified Device Architecture,是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。
cuDNN
官网地址:https://developer.nvidia.com/rdp/cudnn-archive
cuDNN 是用于深度神经网络的GPU加速库。它强调性能、易用性和低内存开销。可以集成到高级的机器学习框架中,如谷歌的Tensorflow、加州大学伯克利分校的caffe框架、Facebook的PyTorch框架等等。
- cuDNN是基于CUDA的深度学习GPU加速库,有了它才能在GPU上完成深度学习的计算;
- CUDA这个平台一开始并没有安装cuDNN库,当开发者们需要用到深度学习GPU加速时才安装cuDNN库,工作速度相较CPU快很多。
CUDA与cuDNN的关系是什么呢?
CUDA看作是一个工作台,cuDNN相当于工作的工具,比如它就是个扳手。想要在CUDA上运行深度神经网络,就要安装cuDNN,就像你想要拧个螺帽就要把扳手。这样才能使GPU进行深度神经网络的工作,工作速度相较CPU快很多。
CUDA Toolkit
官网地址:https://developer.nvidia.com/cuda-toolkit-archive
CUDA Toolkit 就是Nvidia 官方提供的一个完整的工具安装包,其中提供了Nvidia 驱动程序、开发CUDA 程序相关的开发工具包等可供安装的选项。
使用 Nvidia 官网提供的 CUDA Toolkit 可以安装开发 CUDA 程序所需的工具,包括 CUDA 程序的编译器、IDE、调试器等,CUDA 程序所对应的各式库文件以及它们的头文件。
对于 Pytorch 之类的深度学习框架而言,其在大多数需要使用 GPU 的情况中只需要使用 CUDA 的动态链接库支持程序的运行( Pytorch 本身与 CUDA 相关的部分是提前编译好的 ),就像常见的可执行程序一样,不需要重新进行编译过程,只需要其所依赖的动态链接库存在即可正常运行。
故而,Anaconda 在安装 Pytorch 等使用到 CUDA 的框架时,会自动为用户安装 CUDA Toolkit,其主要包含应用程序在使用 CUDA 相关的功能时所依赖的动态链接库。
在安装了 CUDA Toolkit 后,只要系统上存在与当前的 CUDA Toolkit所兼容的 Nvidia 驱动,则已经编译好的 CUDA 相关的程序就可以直接运行,而不需要安装完整的 Nvidia 官方提供的 CUDA Toolkit 。
NCVV
nvcc就是CUDA的编译器,可以从CUDA Toolkit的/bin目录中获取,类似于gcc就是c语言的编译器。
由于程序是要经过编译器编程成可执行的二进制文件,而CUDA程序有两种代码,一种是运行在cpu上的host代码,一种是运行在gpu上的device代码,所以nvcc编译器要保证两部分代码能够编译成二进制文件在不同的机器上执行。
nvidia-smi 与 nvcc -V
-
nvidia-smi显示的CUDA版本: 这代表了你的NVIDIA驱动内置支持的CUDA版本。这是驱动程序级别的支持,主要影响的是GPU的识别和基础驱动层面的CUDA兼容性。
-
nvcc -V显示的CUDA Toolkit版本: 这代表了安装在你的系统上的CUDA Toolkit的版本。CUDA Toolkit包括了开发和运行CUDA应用所需的编译器、库和工具。
当使用PyTorch或其他依赖CUDA的库时,库的运行时会与CUDA Toolkit进行交互,而不是直接与驱动程序内的CUDA版本交互。这意味着,只要CUDA Toolkit的版本与你使用的库兼容,并且NVIDIA驱动足够新以支持该版本的CUDA Toolkit(在你的情况下,驱动支持CUDA 12.2,因此也会支持11.8),就可以正常使用。
因此,即使nvidia-smi显示为CUDA 12.2,只要你安装了CUDA Toolkit 11.8,并且使用的PyTorch版本是为CUDA 11.8编译的,就不应该有兼容性问题。
确保你的环境变量(如PATH和CUDA_HOME)正确指向CUDA Toolkit 11.8的安装位置,这样PyTorch和其他依赖CUDA的应用程序就可以正确找到并使用它。
总结一下,只要确保以下几点,你就可以在CUDA 11.8环境下正常使用PyTorch:
- NVIDIA驱动兼容CUDA 11.8(即支持的CUDA版本高于或等于11.8)。
- 系统安装了CUDA Toolkit 11.8。
- 使用的PyTorch版本是针对CUDA 11.8编译的。
- 环境变量正确设置,以便软件能找到正确的CUDA Toolkit版本。