すべてのプロダクト
Search
ドキュメントセンター

Elastic GPU Service:PyTorchを使用するときに「undefined symbol: __nvJitLinkAddData_12_1, version libnvJitLink.so.12」というエラーメッセージが表示された場合はどうすればよいですか?

最終更新日:Sep 30, 2024

GPUアクセラレーションLinuxインスタンスでPyTorchを使用すると、インスタンスにインストールされているCompute Unified Device Architecture (CUDA) のバージョンがPyTorchのバージョンと互換性がないため、エラーが発生する場合があります。 このトピックでは、この問題の原因と解決策について説明します。

問題の説明

Alibaba Cloud Linux 3を実行するGPUアクセラレーションLinuxインスタンスで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バージョン間のマッピングの詳細については、「以前のPyTorchバージョン」をご参照ください。

sudo pip3 install torchコマンドでインストールされたPyTorchのバージョンは2.1.2で、互換性のあるCUDAバージョンは12.1です。 ただし、購入したGPUアクセラレーションインスタンスに自動的にインストールされるCUDAバージョンは12.0です。 このバージョンは、インストールされているPyTorchバージョンと互換性のあるCUDAバージョンと一致しません。

解決策

ECS (Elastic Compute Service) コンソールでGPU高速化インスタンスを購入したときに、イメージセクションの [パブリックイメージ] タブで [GPUドライバーの自動インストール] を選択した場合、次のいずれかの方法でCUDAバージョンを12.1に変更できます。

  • 方法1: CUDAを手動でインストールする

    バージョン12.1のCUDAを手動でインストールします。 詳細については、「NVIDIA CUDAインストールガイドFor Linux」をご参照ください。

  • 方法2: カスタムスクリプトを使用してCUDAをインストールする

    1. 既存のGPU高速化インスタンスをリリースします。

      詳細は、「インスタンスのリリース」をご参照ください。

    2. 新しいGPU高速化インスタンスを購入します。

      詳細については、「GPU高速化インスタンスの作成」をご参照ください。 次のパラメータに注意してください。

      • [イメージ] セクションの [パブリックイメージ] タブで、[GPUドライバーの自動インストール] を選択しないでください。

      • [詳細設定 (オプション)] セクションの [ユーザーデータ] 部分で、バージョン535.154.05のNVIDIA Teslaドライバとバージョン12.1.1のCUDAをインストールするためのカスタムスクリプトを入力します。 次のコードは、サンプルのカスタムスクリプトを示しています。

        サンプルカスタムスクリプト

        #!/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
  • 方法3: インスタンスユーザーデータの変更とOSの変更

    1. GPU高速化インスタンスを停止します。

      詳細は、「インスタンスの停止」をご参照ください。

    2. [インスタンス] ページで、停止したGPUアクセラレーションインスタンスを見つけ、[操作] 列のimageアイコンをクリックします。 [インスタンス設定] セクションで、[ユーザーデータの設定] をクリックします。

    3. ユーザーデータを変更し、[OK] をクリックします。

      DRIVER_VERSIONCUDA_VERSION、およびCUDNN_VERSIONパラメーターの値を次のバージョンに変更します。

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

      用户数据-zh.jpg

    4. GPU高速化インスタンスのOSを変更します。

      詳細については、「インスタンスのオペレーティングシステム (システムディスク) の交換」をご参照ください。

      GPU高速化インスタンスが再起動された後、システムは新しいバージョンのNVIDIA Teslaドライバー、CUDA、およびCUDA Deep Neural Networkライブラリ (cuDNN) を再インストールします。