Em uma instância acelerada por GPU com Linux, você pode encontrar um erro ao importar o PyTorch devido à incompatibilidade entre a versão do CUDA da instância e a versão do PyTorch. Este tópico explica como resolver esse problema.
Sintoma
Ao utilizar o PyTorch em uma instância acelerada por GPU com sistema operacional Linux, como o Alibaba Cloud Linux 3, um erro semelhante ao seguinte pode ser exibido:
>>> 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
Causa
Esse problema ocorre porque a versão do CUDA na instância acelerada por GPU é incompatível com a versão do PyTorch. Para obter mais informações sobre a compatibilidade de versões entre CUDA e PyTorch, consulte Versões anteriores do PyTorch.
O PyTorch 2.1.2, instalado por meio do comando sudo pip3 install torch, requer o CUDA 12.1. No entanto, a versão do CUDA instalada automaticamente durante a aquisição de uma instância acelerada por GPU é a 12.0. Essa divergência de versões provoca o erro.
Solução
Caso tenha selecionado a opção Auto-install GPU Driver na aba Public Image da seção Image ao adquirir a instância acelerada por GPU, utilize um dos métodos abaixo para atualizar para o CUDA 12.1.1.
-
-
Método 2: Instale o CUDA com um script personalizado
-
Libere a instância acelerada por GPU existente.
Para mais informações, consulte Liberar uma instância.
-
Crie uma nova instância acelerada por GPU.
Para mais informações, consulte Criar uma instância acelerada por GPU. Defina os parâmetros principais da seguinte forma:
Na aba Public Image da seção Image, verifique se a opção Auto-install GPU Driver está desmarcada.
-
Na seção User Data, dentro de Advanced Settings (Optional), insira um script personalizado para instalar o driver NVIDIA Tesla 535.154.05 e o CUDA 12.1.1. O script a seguir serve como exemplo:
Exemplo de script personalizado
#!/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étodo 3: Modifique os dados do usuário e substitua o sistema operacional
-
Pare a instância acelerada por GPU existente.
Para mais informações, consulte Parar instâncias.
Na lista de instâncias, localize a instância acelerada por GPU parada. Na coluna Actions, escolha .
-
Modifique os dados do usuário e clique em OK.
Altere os valores dos parâmetros DRIVER_VERSION, CUDA_VERSION e CUDNN_VERSION para os seguintes:
...
DRIVER_VERSION="535.154.05"
CUDA_VERSION="12.1.1"
CUDNN_VERSION="8.9.7.29"
...
-
Substitua o sistema operacional da instância acelerada por GPU.
Para mais informações, consulte Substituir o sistema operacional (disco do sistema) de uma instância.
Após a reinicialização da instância acelerada por GPU, o sistema reinstala as novas versões do driver NVIDIA Tesla, do CUDA e do cuDNN.