Sur une instance accélérée par GPU sous Linux, une incompatibilité entre la version CUDA de l'instance et celle requise par PyTorch peut provoquer une erreur lors de l'importation de cette bibliothèque. Cette rubrique explique comment résoudre ce problème.
Symptômes
Lorsque vous utilisez PyTorch sur une instance accélérée par GPU exécutant un système d'exploitation Linux, tel qu'Alibaba Cloud Linux 3, le message d'erreur suivant peut s'afficher :
>>> 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
Cause
Ce problème survient lorsque la version CUDA installée sur l'instance accélérée par GPU est incompatible avec la version de PyTorch utilisée. Pour plus d'informations sur la compatibilité des versions CUDA et PyTorch, consultez la page Versions précédentes de PyTorch.
PyTorch 2.1.2, installé via la commande sudo pip3 install torch, nécessite CUDA 12.1. Or, la version CUDA automatiquement déployée à l'achat d'une instance accélérée par GPU est la 12.0. Cette divergence de versions provoque l'erreur.
Solution
Si vous avez coché l'option Auto-install GPU Driver dans l'onglet Public Image de la section Image lors de l'achat de votre instance accélérée par GPU, mettez à niveau CUDA vers la version 12.1.1 en utilisant l'une des méthodes suivantes.
-
-
Méthode 2 : Installer CUDA à l'aide d'un script personnalisé
-
Libérez l'instance accélérée par GPU existante.
Pour plus d'informations, consultez la rubrique Libérer une instance.
-
Créez une nouvelle instance accélérée par GPU.
Pour plus d'informations, consultez la rubrique Créer une instance accélérée par GPU. Configurez les paramètres clés comme suit :
Dans l'onglet Public Image de la section Image, assurez-vous que l'option Auto-install GPU Driver n'est pas sélectionnée.
-
Dans la section User Data située sous Advanced Settings (Optional), saisissez un script personnalisé pour installer le pilote NVIDIA Tesla 535.154.05 et CUDA 12.1.1. L'exemple ci-dessous illustre la structure du script :
Exemple de script personnalisé
#!/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
-
Méthode 3 : Modifier les données utilisateur et remplacer le système d'exploitation
-
Arrêtez l'instance accélérée par GPU existante.
Pour plus d'informations, consultez la rubrique Arrêter des instances.
Dans la liste des instances, repérez l'instance accélérée par GPU arrêtée. Dans la colonne Actions, choisissez .
-
Modifiez les données utilisateur, puis cliquez sur OK.
Définissez les valeurs des paramètres DRIVER_VERSION, CUDA_VERSION et CUDNN_VERSION comme suit :
...
DRIVER_VERSION="535.154.05"
CUDA_VERSION="12.1.1"
CUDNN_VERSION="8.9.7.29"
...
-
Remplacez le système d'exploitation de l'instance accélérée par GPU.
Pour plus d'informations, consultez la rubrique Remplacer le système d'exploitation (disque système) d'une instance.
Après le redémarrage de l'instance accélérée par GPU, le système réinstalle automatiquement les nouvelles versions du pilote NVIDIA Tesla, de CUDA et de cuDNN.