目录
1.CUDA
CPU和GPU: CPU是中央处理器,GPU是图像处理器。显卡的核心就是GPU。
CPU核心数量少,主要用来处理各种复杂的任务。GPU核心数量多,主要用来处理大量简单、重复性高的任务。
GPU的应用:
因为GPU强大的并行计算能力,被广泛应用于人工智能、深度学习等领域里面。
CUDA:
CUDA是专门面向英伟达显卡用户服务的。
显卡本身是为了用来做图形渲染任务诞生的,现在想要让它完成其他任务,就需要额外的比如软件库,编程语言等组件。而CUDA就是将这些全部集成封装起来,使得用户可以直接通过CUDA让显卡去完成图形渲染之外的任务,也就实现了在人工智能等领域的应用。
所以CUDA 就是英伟达为其GPU设计的并行计算平台和编程模型。
也有OPENCL这种可以让任何品牌的硬件都支持通用并行计算,但目前特别是在AI领域,CUDA仍然是主导者。
2.PyTorch:
PyTorch 是一个基于Python的、开源的机器学习/深度学习框架。它有三个核心特征:动态计算图,张量计算与 GPU 加速和自动微分。PyTorch核心数据结构是Tensor,也就一个多维数组。Tensor除了存储数据之外,最核心的功能就是可以计算图节点和自动微分。有了PyTorch,构建神经网络、计算梯度、调用GPU的计算能力等都更加地方便,灵活。
综上所述,我们要想利用GPU去完成AI领域的任务,就需要下载CUDA;同时PyTorch有CPU和GPU版本之分的,我们需要下载GPU版本的PyTorch,并且是CUDA兼容的版本。需要注意的是,PyTorch和Python之间也有版本兼容问题。
3.安装CUDA(可跳过)
这里安装的是CUDA Tooklit;事实上,PyTorch兼容的是CUDA Runtime。前者是完整的开发工具包,后者是运行CUDA所需最小库的集合。如果只使用PyTorch进行深度学习,而不是开发CUDA C++扩展,就不需要安装CUDA Tooklit。
首先查看GPU版本,在命令行窗口输入nvidia-smi,查看电脑的GPU版本,图中的Driver Version就是驱动版本号,CUDA Version是当前显卡最高可支持的CUDA版本。
随后进入CUDA官方,根据自己的需求下载对应版本(地址:CUDA Toolkit Archive | NVIDIA Developer)这里以12.5为例:
Windows:
首先选择匹配自己电脑操作系统的版本,比如win11(10和11就代表windows版本)的电脑如下:
下载完成后选择自定义安装(如果不想更改驱动版本):
取消安装驱动的选项(注意图中新版本和当前版本号,如果选择安装驱动,反而会使得驱动版本降级):
最后安装成功后,在终端命令窗口输入 nvcc --version 查看,显示以下内容即安装成功 :
如果显示以下内容,有可能就是安装了但是环境变量没有配置:
Linux:
Linux操作系统同样,但是需要注意下的是哪个发行商哪个版本的,比如下面选择的是乌班图,可以看到CUDA12.5支持的是20.04和22.04版本的乌班图,如果是其他版本就要找其对应的CUDA。
最后安装包的类型,推荐选runfile(local),它自定义安装的自由度最高:可以自定义目录,选择性安装驱动(特别是这一点,deb安装包会在安装的过程中自动安装版本匹配的驱动,这就有可能出现驱动“降级”的情况)并且可以实现多个版本的CUDA共存,最适合开发人员。
安装过程类似,只是没有图形化窗口,需要借助终端命令完成操作。
4.安装PyTorch
安装CUDA可以跳过的原因就是因为PyTorch自带CUDA Runtime,一方面是为了用户能简化安装,不用单独安装CUDA Toolkit。另一方面就是确保PyTorch使用经过测试的特定CUDA版本,避免用户系统上版本不一致导致的问题。
这里只需要注意两点问题:1.就是前面提到的PyTorch有CPU和GPU版本之分。2.就是选择PyTorch要看驱动程序版本。因为驱动程序是向后兼容CUDA Runtime的。如下图,假如驱动最高支持CUDA 12.5,那么就可以装图中的CUDA12.4或者11.8对应的PyTorch,CUDA12.6的不行,最后一行是CPU版本的:
可以在官方地址(Get Started)下载安装,也可以通过国内镜像源下载安装。
安装成功后可以在终端运行以下代码检测是否安装成功:
python -c "import torch; print(torch.__version__)"
图中的2.5.1就是pyTorch的版本,cu121就是该版本的PyTorch自带的CUDA Runtime版本,也就是12.1版本。
5.PyTorch与虚拟环境
有时候不同项目需要不同的PyTorch版本。我们安装Anaconda之后,就可以通过conda创建虚拟环境,然后为每个虚拟环境配置对应的PyTorch,再基于该环境去创建一个项目。
新建环境,这里可以选择在创建的时候直接把对应版本的Python也装上:
conda create -n 环境名 [python=...]
激活环境:
conda activate 环境名
然后在环境里执行安装的命令进行下载安装即可。
当创建了虚拟环境后,可以先通过conda显示当前已有的虚拟环境。
conda info --envs
然后通过激活环境命令进入对应的虚拟环境进行查看,图中括号内显示的就是当前处于哪个环境中。执行查看版本的代码后显示的就是2.11的PyTorch和12.8的CUDA Runtime。
如果在base环境里直接查看版本,就会显示其安装的PyTorch,图中就是CPU版本的2.0.1的PyTorch。这里也展示了提到的一台电脑上可以共存多个版本的PyTorch: