赞
踩
报错后面跟了想要占用多少显存但是不够这样的字眼
解决办法:
train_loader = DataLoader(train, batch_size=batch_size, shuffle=True, num_workers=8, pin_memory=True)
# 比如,电脑是8线程,参数调为8就不合适,可相应降低。
# 但num_worker越小,训练越慢,可权衡后调整。
# 因此,可以将num_workers改为1或者小于8的数值
状态描述
在操作系统输入如下,查一下memory现在的状态。
nvidia-smi
发现GPU-0有一个进程正在执行导致1GB剩余都不够。因此可以选择使用GPU-1执行。
解决办法
import os
os.environ["CUDA_VISIBLE_DEVICES"] = '1' #使用第二张显卡
直接报错OOM没有说申请多少显存而不够的字眼。
这个情况比较特殊,有多种原因:
原因一:linux下某个用户存在了显存泄露,如果是自己的账号有显存泄露,执行fuser -v /dev/nvidia*然后将提示的进程kill掉即可,如果是其他用户显存泄露,需要管理员权限,执行以下命令,执行前最好跟所有用户通知下,不然再跑的任务会被杀了。但是出现这样显存泄露的情况,所有的用户都会用不了显卡,所以应该不会有任务在跑(猜测):
sudo fuser -v /dev/nvidia* |awk '{for(i=1;i<=NF;i++)print "kill -9 " $i;}' | sudo sh
原因二:网上看到的,据说模型加载的参数和自己pytorch的版本不匹配就会报错这个,例如你的pretrain使用torch1.1.0训的,你用torch1.2.0的代码加载这个参数就有可能报错。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。