(仍未解决)模型搬到GPU,我的程序卡死了:pytorch,cuda,channel的故事

Posted CSU迦叶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(仍未解决)模型搬到GPU,我的程序卡死了:pytorch,cuda,channel的故事相关的知识,希望对你有一定的参考价值。

问题描述

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

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是没安装上的

问题解决

参考

[1] conda安装GPU版pytorch,结果却是cpu版本[找到问题根源,从容解决]_windSeS的博客-CSDN博客

 

以上是关于(仍未解决)模型搬到GPU,我的程序卡死了:pytorch,cuda,channel的故事的主要内容,如果未能解决你的问题,请参考以下文章

Python 用dlib来实现视频人脸检测 (很卡,我电脑带不动,卡死了。。)我的是轻薄本

xp系统安装delphi7 无论有无代码,一运行就出现CPU窗口,然后delphi就卡死了,求解决方法!

C# VS2010 有些程序切到Form视图设计器程序就卡死了(没运行) 为啥??

Tensorflow GPU训练模型时假卡死

虚拟机卡死了怎么办

我的终端怎么莫名卡死了?shell下ctrl+s的含义