全部產品
Search
文件中心

Elastic GPU Service:使用PyTorch時出現“undefined symbol: __nvJitLinkAddData_12_1, version libnvJitLink.so.12”報錯

更新時間:Sep 12, 2024

在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。

  • 方案一:手動安裝CUDA

    手動安裝版本為12.1的CUDA。具體操作,請參見NVIDIA CUDA Installation Guide for Linux

  • 方案二:通過自訂指令碼方式安裝CUDA

    1. 釋放現有GPU執行個體。

      具體操作,請參見釋放執行個體

    2. 購買新的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
  • 方案三:修改自訂指令碼並更換作業系統

    1. 停止現有GPU執行個體。

      具體操作,請參見停止執行個體

    2. 在執行個體列表中,找到已停止的GPU執行個體,在對應的操作列,選擇執行個體設定 > 設定使用者資料

    3. 修改使用者資料,然後單擊確定

      DRIVER_VERSIONCUDA_VERSIONCUDNN_VERSION參數修改為如下版本:

      ...
      DRIVER_VERSION="535.154.05"
      CUDA_VERSION="12.1.1"
      CUDNN_VERSION="8.9.7.29"
      ...

      使用者資料-zh.jpg

    4. 更換GPU執行個體的作業系統。

      具體操作,請參見更換作業系統(系統硬碟)

      待GPU執行個體啟動成功後,系統會重新安裝新版本的NVIDIA Tesla驅動、CUDA以及cuDNN。