(已解决)(pytorch指定了gpu但还是占用了一点0号gpu)以及错误(cuDNN error: CUDNN_STATUS_INTERNAL_ERROR)

文章目录

错误原因

出现错误cuDNN error: CUDNN_STATUS_INTERNAL_ERROR,从这个名字就可以看出,出错原因其实有可能有很多种,我这里说一种比较常见的,就是:显存不足。

一个困惑点在于,在我们的印象中,显存不足不是报另外一个错吗?RuntimeError: CUDA Out of memory。事实上,后者是运行时错误,一般通过降低batch size, 向量维度,神经网络层数可以解决。

前者报错我的理解是当使用CUDA的时候Pytorch内部有一个初始化,默认运行在第0块GPU(即使模型被指定运行在其他GPU),然后显存不足指的是在初始化的时候显存不足,也就是第0块GPU显存不足以支撑初始化了,一般初始化其实并不消耗多少显存,比模型运行时一般小多了,那为什么还会报错呢?一般是因为第0块GPU被别的童鞋占用了。我的情况如下:gpu0被别人使用了24059MB,然后一共只有24268MB,所以初始化失败,就会报上述错误。

解决问题

我们其实就是要解决Pytorch指定了gpu但还是会占用了一点0号gpu(初始化默认会在0上面)。解决办法如下:

假设我们指定模型要全部运行在5号gpu上(包括初始化也要在5号上)。

python 复制代码
import os
import torch
os.environ['CUDA_VISIBLE_DEVICES'] = "5"
device=torch.device("cuda:{}".format(0))

第一行代码:将5号gpu设置为可见,此时其他gpu全部无法再见到。
第二行代码:仅有5号gpu可见,此时gpu编号会改变,5号gpu会变成0号gpu,所以指定0号gpu,其实就是指定原来的5号gpu。

作为对比,平常我们大多数人其实是下面这样运行的

python 复制代码
import os
import torch
device=torch.device("cuda:5")
相关推荐
月光船幽幽4 分钟前
门控函数SHS阈值与调制机制解析
人工智能·python·算法
测试19985 分钟前
2026全新软件测试面试八股文(含答案+文档)
自动化测试·软件测试·python·测试工具·面试·职场和发展·测试用例
秦先生在广东8 分钟前
Agency-Agents:用结构化「职业操作系统」替代临时 Prompt 的 AI 角色仓库
人工智能
Zane199414 分钟前
map 比推导式快"是真的吗?一文讲透 map、filter、reduce 与 lambda 的真实性能与设计取舍
后端·python
王烁鑫20 分钟前
从 0 到 1 做实时语音 Agent:先解决“会不会误操作”,再谈自主行动
人工智能
lucas_AI20 分钟前
Muse Glimmer 30B:Meta 难得给的真开源,强在哪、虚在哪
人工智能·算法
字节跳动数据库21 分钟前
火山引擎 RDS MySQL 向量索引:把高性能向量检索带到 MySQL 上
人工智能·后端·mysql
一心只读圣贤书21 分钟前
AI 驱动前端测试实战:从需求文档到 Playwright 自动化用例
前端·人工智能
小白的后端世界22 分钟前
LangChain 模型初始化参数详解:从基础配置到企业级实践
java·人工智能·langchain
jimidou23 分钟前
第 0 篇:Agent 世界观——先搞懂 LLM、Context、Tool 与 Agent 到底是什么
人工智能