今天在试着用服务器的GPU跑代码,没想到碰到了满多问题的,因此特地在此记录一下踩到的坑,以及之后可能常用的命令行。

服务器连接

1
ssh username@ip

环境版本查看

1
2
conda list   // conda下配置版本查看
nvcc -V // cuda版本查看

GPU选择

1
2
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "0"

torch.cuda.is_availble() 失败

在运行的时候报了一个错,大致意思就是认为我没有gpu,需要切换到cpu的版本。

然后我还很奇怪,所以特定检测了一下cuda是不是真用不了:

1
2
3
>>> import torch
>>> torch.cuda.is_availble()
False # 结果发现确实用不了

开始的时候我以为是没有选择在哪块GPU上运行,结果试了一下还是不行。

疯狂百度之后发现是torch版本和cuda没有匹配上,我的cuda是9.0版本的,但是torch是1.4.0,更可恶的是它居然还是cpu版,所以果断转换成0.4.0版本。

1
conda install pytorch=0.4.0 torchvision=0.2.1

模型导入错误

报错信息是这样的:

1
pytorch错误:Missing key(s) in state_dict、Unexpected key(s) in state_dict..

这好像是因为加载使用模型时和训练模型时的环境不一致导致的。

然后我搜到了一个很玄学的解决方案:

1
2
3
net.load_state_dict(torch.load(model_dir))
# 修改成
net.load_state_dict(torch.load(model_dir), False)

完美解决 ~