目录
问题描述
解决过程
效果展示
问题解决总结
参考
# 包装为并行风格模型
os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID"
os.environ["CUDA_VISIBLE_DEVICES"] = '0,1,2,3'
device_ids = [0, 1, 2, 3]
device = torch.device("cuda:0")
model = torch.nn.DataParallel(model, device_ids=device_ids)
model = model.cuda()
debug执行到.cuda()那一句时,程序不动了(按下F10很久也不见左侧光标),终端出现了如下的用户警告(这时候有警告是好事)
浅分析一下,cuda和pytoch的版本是不匹配的,于是使用
conda list -n py37 | grep pytorch
查看了一下当前虚拟环境下pytorch的版本
发现pytorch已经是最新版本了!
然后使用
conda list -n py37 | grep cudatoolkit
查看了一下当前虚拟环境下cudatoolkit的版本
再到官网,看到应该安装的版本是11.3
那就安装11.3吧~随后就会发现conda和pip和pip3都安不了这个版本了,转而安装11.6版本,输入命令(注:后面的-c conda-forge表示从conda-forge这个channel下载,官网说的)
conda install -n py37 cudatoolkit==11.6.0 -c conda-forge
这个倒是可以下,但是转而发现package plan的一行诡异内容
坏消息是我一时只好先答应看看,总比退回上一步好一些,要是运行没问题就先过去,不行就退回上一步,降pytorch的版本。
于是先卸载再安装
conda uninstall -n py37 pytorch cudatoolkit
conda install -n py37 pytorch==1.12.0 cudatoolkit=11.3 -c pytorch
卸载倒没什么问题,安装时候却出现
好的现在运行到model.cuda()这一句时错误显然更严重
尽信官网不如无官网,一通检索之后,知道了这背后的原因是由于cpu版和gpu版本的同名(详情参考[1]),找不到gpu的情况下选择了同名的cpu进行下载,于是指定channel再下载(conda会顺带着把cudatoolkit也下载下来)
conda install pytorch==1.8.0 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/linux-64/
注意在这之前要确保配置了清华源,也就是-c后面的参数应该是你的conda已经认识的(可以用conda config --show也可以进到~/.condarc康康)
附上我的.condarc
report_errorhttp://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/s: true
channels:
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- pytorch
- conda-forge
- defaults
show_channel_urls: true
BTW,这个清华源好慢。
下载完成之后,命令行却出现
InvalidArchiveError("Error with archive /home/xiaoyawang/anaconda3/pkgs/pytorch-1.8.0-py3.7_cuda10.2_cudnn7.6.5_0.tar.bz2. You probably need to delete and re-download or re-create this file. Message from libarchive was:\n\nFailed to create dir 'lib/python3.7/site-packages/caffe2/python/onnx'")
emmmm...pytorch是没安装上的
我凝视着Index of /anaconda/cloud/pytorch/linux-64/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
陈列的丰富的安装压缩包(P.S.到这也行https://anaconda.org/pytorch/pytorch/files),冒出了将压缩包下载到win10本地->上传到ubuntu->conda install --use-local的想法(当然也是看了参考[2]才学会的)
PS:由于下载到win10的安装包超过了1G,通过拖拽到vsc的方式上传服务器是很慢的,还没有进度条……
等待的时间我决定改用SFTP传文件,这里用的终端软件是MobaXterm。
看到进度条移动感到踏实很多~
红色框框圈起来的是当前运行的程序~
step1 ~/.bashrc中添加 export TORCH_CUDA_ARCH_LIST=8.6 后source生效一下
step2 重新安装pytorch(一定要版本号精确and配合cudatoolkit一起安装and选择pytorch频道)
conda install -n yayapy37 pytorch==1.12.1 cudatoolkit=11.3 -c pytorch
如果出现安装不下来pytorch的情况,可以下载对应安装包以后再安装。
最后我是pytorch和cudatoolkit都从anaconda :: Anaconda.org
搜索出来,把安装包下载本地再SFTP传送到服务器,然后用conda install --use-local安装的,值得一提的是安装包不需要在anaconda3/pkgs目录下。
[1] conda安装GPU版pytorch,结果却是cpu版本[找到问题根源,从容解决]_windSeS的博客-CSDN博客
[2]
用压缩包安装pytorch的方法(服务器也可)