(已解决)Ubuntu多显卡训练模型时程序卡死:torch torch 奈若何

目录

问题描述

解决过程

效果展示

问题解决总结

参考


问题描述

# 包装为并行风格模型
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

(已解决)Ubuntu多显卡训练模型时程序卡死:torch torch 奈若何_第1张图片

那就安装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的一行诡异内容

(已解决)Ubuntu多显卡训练模型时程序卡死:torch torch 奈若何_第2张图片

坏消息是我一时只好先答应看看,总比退回上一步好一些,要是运行没问题就先过去,不行就退回上一步,降pytorch的版本。

于是先卸载再安装

conda uninstall -n py37 pytorch cudatoolkit
conda install -n py37 pytorch==1.12.0 cudatoolkit=11.3 -c pytorch

卸载倒没什么问题,安装时候却出现

(已解决)Ubuntu多显卡训练模型时程序卡死:torch torch 奈若何_第3张图片

 好的现在运行到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。

(已解决)Ubuntu多显卡训练模型时程序卡死:torch torch 奈若何_第4张图片

看到进度条移动感到踏实很多~

效果展示

(已解决)Ubuntu多显卡训练模型时程序卡死:torch torch 奈若何_第5张图片

红色框框圈起来的是当前运行的程序~ 

问题解决总结

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的方法(服务器也可)

你可能感兴趣的:(深度学习,pytorch,ubuntu,GPU)