广告位 · 页头(后台-模块管理-新建模块后替换此区域)

如何在Ubuntu上安装PyTorch GPU版本?

在Ubuntu上安装PyTorch GPU版本,本质上需要解决三件事:系统中存在可用的NVIDIA显卡驱动、驱动版本支持目标CUDA版本、PyTorch安装包携带的CUDA运行时与驱动兼容。很多人一上来就急着装CUDA toolkit,结果反而造成环境混乱。实际上,PyTorch官方提供的预编译wheel已经包含了CUDA运行时,真正依赖系统安装的只有NVIDIA驱动。因此整个安装流程可以简化为:检查显卡驱动、确定驱动支持的CUDA上限、选择对应CUDA版本的PyTorch安装命令、安装后验证GPU加速是否生效。

如何在Ubuntu上安装PyTorch GPU版本?

一、检查显卡与驱动状态

第一步是确认系统识别到了NVIDIA显卡,并且驱动已经成功加载。可以使用lspci命令查看显卡型号,再用nvidia-smi查看驱动版本和CUDA支持上限。如果nvidia-smi命令不存在或报错,说明驱动没有安装或没有正确加载,需要进行驱动安装。

在Ubuntu上安装NVIDIA驱动推荐使用系统自带的ubuntu-drivers工具,它会自动检测合适的驱动版本。执行ubuntu-drivers devices可以列出推荐的驱动,通常带有recommended标记。然后通过sudo apt install nvidia-driver-535这样的命令安装,版本号根据实际推荐结果调整。安装完成后重启系统,再运行nvidia-smi确认驱动生效。

lspci | grep -i nvidia
ubuntu-drivers devices
sudo apt install nvidia-driver-535
sudo reboot
nvidia-smi

nvidia-smi输出中右上角的CUDA Version表示该驱动支持的最高CUDA版本,例如显示CUDA Version: 12.2,意味着驱动可以运行使用CUDA 12.2及以下版本编译的程序。这个数值并不是系统实际安装的CUDA toolkit版本,而是驱动能力的上限。后续选择PyTorch的CUDA版本时,只要不超过这个上限即可。

二、选择CUDA版本并安装PyTorch

PyTorch官方提供了多种CUDA版本的预编译包,常见的有cu118、cu121、cu124等。选择哪个版本,只需要满足一个条件:它小于等于nvidia-smi显示的CUDA Version上限。例如驱动显示CUDA Version: 12.2,那么可以安装cu121或cu118的PyTorch,但不能安装cu124,因为驱动不支持。如果不确定,选一个较新的兼容版本通常不会出错。

使用pip安装是最直接的方式。从PyTorch官网复制对应命令时,需要注意index-url指定了官方下载源。以下示例安装CUDA 12.1版本的PyTorch:

python3 -m pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

如果使用conda管理环境,则执行conda安装命令,conda会自动处理CUDA运行时和依赖库的版本匹配。以下示例同样安装CUDA 12.1版本:

conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia

这里有一个常见误解:安装PyTorch GPU版本必须先安装CUDA toolkit。实际上,只有在需要从源码编译PyTorch或使用自定义CUDA扩展时才需要完整的toolkit。普通用户通过pip或conda安装预编译包,不需要单独安装系统级CUDA,只要驱动满足要求即可。预编译包内已经包含了必要的CUDA运行时库,避免了手动配置环境变量的麻烦。

三、验证GPU加速是否生效

安装完成后,必须通过实际代码确认PyTorch能够调用GPU。在Python环境中执行以下脚本,输出True表示CUDA可用,输出False则需要排查。同时可以打印当前使用的GPU名称和PyTorch编译时的CUDA版本。

import torch
print(torch.cuda.is_available())
print(torch.cuda.get_device_name(0))
print(torch.version.cuda)
print(torch.__version__)

如果torch.cuda.is_available返回False,最常见的原因是安装成了CPU版本。可以通过pip list或conda list查看torch包的来源,确认是否带有cu前缀,例如torch-2.3.0+cu121。如果版本号后面没有+cu121字样,说明安装的是CPU版本,需要卸载后重新从指定索引源安装。

另一个常见问题是驱动版本过低。即使安装的是GPU版PyTorch,如果驱动支持的CUDA版本低于PyTorch编译时使用的CUDA版本,运行时也会失败。解决办法是升级驱动,或者安装一个更低CUDA版本的PyTorch。此外,如果系统同时存在多个CUDA路径,环境变量CUDA_HOME或LD_LIBRARY_PATH可能干扰运行时加载,建议在安装PyTorch的虚拟环境中不要设置这些变量。

四、虚拟环境隔离与依赖冲突处理

强烈建议为PyTorch项目创建独立的Python虚拟环境或conda环境。不同项目可能需要不同版本的PyTorch或CUDA,混装在系统Python中很容易导致依赖冲突。使用venv创建轻量级虚拟环境,再在其中执行pip安装命令,可以避免污染全局环境。

python3 -m venv pytorch_env
source pytorch_env/bin/activate
python3 -m pip install --upgrade pip
python3 -m pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

在虚拟环境中安装完PyTorch后,可以使用pip show torch查看安装位置和版本信息。如果发现环境中同时存在多个torch副本,建议先pip uninstall torch torchvision torchaudio再重新安装。对于conda用户,尽量保持pytorch、pytorch-cuda、cudatoolkit等包来源一致,避免混合使用conda-forge和pytorch官方频道造成版本错乱。

如果需要在同一台机器上使用多个CUDA版本的PyTorch,可以为每个版本创建单独的虚拟环境,通过激活不同的环境切换版本。这种方式比修改系统环境变量更安全,也不会影响系统其他软件的运行。至此,Ubuntu上安装PyTorch GPU版本的完整流程就梳理完毕了,核心思路永远是驱动先行、版本对齐、环境隔离。

广告位 · 文章底部(后台-模块管理替换此区域)