解决PyTorch无法调用GPU,torch.cuda.is_available()显示False的问题
在Aliyun ECS上部署Demucs项目时,发现torch始终无法调用GPU。python -c "import torch;print(torch.cuda.is_available())"
一直显示是False。
一、先说答案
需要修改Demucs项目默认的 environment-cuda.yml ,覆盖指定这几个参数
- python=3.9.7
- pytorch=1.12.1
- torchaudio=0.12.1
- cudatoolkit=10.2
- torchvision=0.13.1
完整文件如下:
name: demucs-new
channels:
- pytorch
- conda-forge
dependencies:
- python=3.9.7
- ffmpeg>=4.2
- pytorch=1.12.1
- torchaudio=0.12.1
- cudatoolkit=10.2
- torchvision=0.13.1
- tqdm>=4.36
- pip
- pip:
- diffq>=0.2
- dora-search
- einops
- hydra-colorlog>=1.1
- hydra-core>=1.1
- julius>=0.2.3
- lameenc>=1.2
- openunmix
- musdb>=0.4.0
- museval>=0.4.0
- soundfile
- submitit
- treetable>=0.2.3
如果之前已经用默认的yml文件创建了环境,需先把原来的环境删掉。修改完成后,执行以下命令
. /root/miniconda/etc/profile.d/conda.sh
conda env update -f environment-cuda.yml
conda activate demucs-new
conda deactivate
pip install -e .
实验是否成功
python -c "import torch;print('torch cpu version: ' + str(torch.__version__));print('torch cuda version: ' + str(torch.version.cuda));print('cuda is_available: ' + str(torch.cuda.is_available()));torch.zeros(1).cuda();"
二、解决过程
ECS创建时有设置安装了nvidia驱动和CUDA,使用
nvidia-smi
nvcc -V
cat /usr/local/cuda/version.txt
可以正常显示驱动版本,如下:
CUDA 版本 10.2.89 / Driver 版本 460.91.03 / CUDNN 版本 7.6.5
NVIDIA-SMI 460.91.03 Driver Version: 460.91.03 CUDA Version: 11.2
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Wed_Oct_23_19:24:38_PDT_2019
Cuda compilation tools, release 10.2, V10.2.89
但Demucs所依赖的Pytorch始终无法调用。查看了environment-cuda.yml
,发现
- python>=3.7,<3.10
- pytorch>=1.8.1
- torchaudio>=0.8
- cudatoolkit>=10
yml文件并没有指定固定版本,而只是 >=。使用默认的yml文件初始化环境,得到的版本是
Python 3.9.16
torch 1.13.1
torchaudio 0.13.1
PyTorch使用GPU需要版本能匹配。可在 PyTorch版本匹配参考 查看到 CUDA,Python,Torch 兼容的版本号。默认yml获取的版本存在兼容性问题,需要在yml中指定可兼容的版本号,即可解决问题。
三、解决部署Demucs容易遇到的的三个小问题
3.1 `Can not execute `setup.py` since setuptools is not available in the build environment`
尝试 更新 pip setuptools
python -m pip install --upgrade pip
python -m pip install --upgrade setuptools
3.2 `ModuleNotFoundError: No module named ‘_ctypes’`
执行
yum install -y libffi-devel
或
sudo apt-get install libffi-dev
3.3 ‘soundfile’ backend is not available.
报错如下:文章来源:https://www.toymoban.com/news/detail-443864.html
/root/projects/voice_factory/venv/lib/python3.9/site-packages/torchaudio/_internal/module_utils.py:99: UserWarning: Failed to import soundfile. 'soundfile' backend is not available.
warnings.warn("Failed to import soundfile. 'soundfile' backend is not available.")
执行文章来源地址https://www.toymoban.com/news/detail-443864.html
yum -y install libsndfile
到了这里,关于解决PyTorch无法调用GPU,torch.cuda.is_available()显示False的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!