在Linux系統GPU實例中,可能會因為GPU實例所安裝的CUDA版本與PyTorch版本不兼容,導致使用PyTorch時出現報錯現象,本文介紹這種情況的解決方案。
問題現象
在Linux系統(例如Alibaba Cloud Linux 3操作系統)GPU實例中使用PyTorch時,出現如下報錯信息:
>>> import torch
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.8/dist-packages/torch/__init__.py", line 235, in <module>
from torch._C import * # noqa: F403
ImportError: /usr/local/lib/python3.8/dist-packages/torch/lib/../../nvidia/cusparse/lib/libcusparse.so.12: undefined symbol: __nvJitLinkAddData_12_1, version libnvJitLink.so.12
問題原因
可能是GPU實例所安裝的CUDA版本與PyTorch版本不兼容導致上述報錯,關于CUDA版本與PyTorch版本的匹配詳情,請參見Previous PyTorch Versions。
通過sudo pip3 install torch
安裝的PyTorch版本為2.1.2,要求的CUDA版本為12.1。而購買GPU實例自動安裝的CUDA版本為12.0,與PyTorch要求的CUDA版本不匹配。
解決方案
如果購買GPU實例時,在鏡像區域的公共鏡像頁簽下選中了安裝GPU驅動選項,則您可以按以下三種方案升級CUDA版本至CUDA 12.1。
手動安裝版本為12.1的CUDA。具體操作,請參見NVIDIA CUDA Installation Guide for Linux。
釋放現有GPU實例。
具體操作,請參見釋放實例。
購買新的GPU實例。
具體操作,請參見創建GPU實例。主要配置參數說明如下:
在鏡像區域的公共鏡像頁簽下,未選中安裝GPU驅動選項。
在高級選項(選填)的自定義數據區域內,輸入自定義腳本來安裝NVIDIA Tesla 535.154.05驅動和CUDA 12.1.1。腳本示例如下:
#!/bin/sh #Please input version to install DRIVER_VERSION="535.154.05" CUDA_VERSION="12.1.1" CUDNN_VERSION="8.9.7.29" IS_INSTALL_eRDMA="FALSE" IS_INSTALL_RDMA="FALSE" INSTALL_DIR="/root/auto_install" #using .run to install driver and cuda auto_install_script="auto_install_v4.0.sh" script_download_url=$(curl http://100.100.100.200/latest/meta-data/source-address | head -1)"/opsx/ecs/linux/binary/script/${auto_install_script}" echo $script_download_url rm -rf $INSTALL_DIR mkdir -p $INSTALL_DIR cd $INSTALL_DIR && wget -t 10 --timeout=10 $script_download_url && bash ${INSTALL_DIR}/${auto_install_script} $DRIVER_VERSION $CUDA_VERSION $CUDNN_VERSION $IS_INSTALL_RDMA $IS_INSTALL_eRDMA
停止現有GPU實例。
具體操作,請參見停止實例。
在實例列表中,找到已停止的GPU實例,在對應的操作列,選擇
。修改用戶數據,然后單擊確定。
將
DRIVER_VERSION
、CUDA_VERSION
、CUDNN_VERSION
參數修改為如下版本:... DRIVER_VERSION="535.154.05" CUDA_VERSION="12.1.1" CUDNN_VERSION="8.9.7.29" ...
更換GPU實例的操作系統。
具體操作,請參見更換操作系統(系統盤)。
待GPU實例啟動成功后,系統會重新安裝新版本的NVIDIA Tesla驅動、CUDA以及cuDNN。