RuntimeError: CUDA out of memory

news2024/9/24 11:25:19

今天在训练模型的时候突然报了显存不够的问题,然后分析了一下,找到了解决的办法,这里记录一下,方便以后查阅。

:以下的解决方案是在模型测试而不是模型训练时出现这个报错的!

RuntimeError: CUDA out of memory

完整的报错信息:

Traceback (most recent call last):
  File "/home/pytorch/LiangXiaohan/MI_Same_limb/Joint_Motion_Decoding/SelfAten_Mixer/main.py", line 420, in <module>
    main()
  File "/home/pytorch/LiangXiaohan/MI_Same_limb/Joint_Motion_Decoding/SelfAten_Mixer/main.py", line 414, in main
    train_with_cross_validate(training_epochs, kfolds, train_indices, eval_indices, X_train, Y_train, model, losser, optimizer)
  File "/home/pytorch/LiangXiaohan/MI_Same_limb/Joint_Motion_Decoding/SelfAten_Mixer/main.py", line 77, in train_with_cross_validate
    val_probs = model(inputs)
  File "/home/pytorch/anaconda3/envs/pytorch_env/lib/python3.7/site-packages/torch/nn/modules/module.py", line 1130, in _call_impl
    return forward_call(*input, **kwargs)
  File "/home/pytorch/LiangXiaohan/MI_Same_limb/Joint_Motion_Decoding/SelfAten_Mixer/model/S_CAMLP_Net.py", line 235, in forward
    x = self.camlp_mixer(x) # (batch_size, F, C, L)
  File "/home/pytorch/anaconda3/envs/pytorch_env/lib/python3.7/site-packages/torch/nn/modules/module.py", line 1130, in _call_impl
    return forward_call(*input, **kwargs)
  File "/home/pytorch/anaconda3/envs/pytorch_env/lib/python3.7/site-packages/torch/nn/modules/container.py", line 139, in forward
    input = module(input)
  File "/home/pytorch/anaconda3/envs/pytorch_env/lib/python3.7/site-packages/torch/nn/modules/module.py", line 1130, in _call_impl
    return forward_call(*input, **kwargs)
  File "/home/pytorch/LiangXiaohan/MI_Same_limb/Joint_Motion_Decoding/SelfAten_Mixer/model/S_CAMLP_Net.py", line 202, in forward
    x = self.time_mixing_unit(x)
  File "/home/pytorch/anaconda3/envs/pytorch_env/lib/python3.7/site-packages/torch/nn/modules/module.py", line 1130, in _call_impl
    return forward_call(*input, **kwargs)
  File "/home/pytorch/LiangXiaohan/MI_Same_limb/Joint_Motion_Decoding/SelfAten_Mixer/model/S_CAMLP_Net.py", line 186, in forward
    x = self.mixing_unit(x)
  File "/home/pytorch/anaconda3/envs/pytorch_env/lib/python3.7/site-packages/torch/nn/modules/module.py", line 1130, in _call_impl
    return forward_call(*input, **kwargs)
  File "/home/pytorch/LiangXiaohan/MI_Same_limb/Joint_Motion_Decoding/SelfAten_Mixer/model/S_CAMLP_Net.py", line 147, in forward
    x = self.activate(x)
  File "/home/pytorch/anaconda3/envs/pytorch_env/lib/python3.7/site-packages/torch/nn/modules/module.py", line 1130, in _call_impl
    return forward_call(*input, **kwargs)
  File "/home/pytorch/anaconda3/envs/pytorch_env/lib/python3.7/site-packages/torch/nn/modules/activation.py", line 772, in forward
    return F.leaky_relu(input, self.negative_slope, self.inplace)
  File "/home/pytorch/anaconda3/envs/pytorch_env/lib/python3.7/site-packages/torch/nn/functional.py", line 1633, in leaky_relu
    result = torch._C._nn.leaky_relu(input, negative_slope)
RuntimeError: CUDA out of memory. Tried to allocate 2.49 GiB (GPU 0; 23.70 GiB total capacity; 21.49 GiB already allocated; 550.81 MiB free; 21.53 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation.  See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

因为自己写的程序训练完成一轮会有输出,所以这些信息是在模型预测过程中发生的

关键的报错信息:

RuntimeError: CUDA out of memory. Tried to allocate 2.49 GiB (GPU 0; 23.70 GiB total capacity; 21.49 GiB already allocated; 550.81 MiB free; 21.53 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation.  See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

大体意思就是显存不够了。

通过下面的代码查看程序运行过程中显卡的状态:

nvidia-smi -l 1

模型加载完成后,此时的显卡状态:

在这里插入图片描述

模型训练过程中显卡的状态:

在这里插入图片描述

模型训练完成,开始模型预测阶段,并且是数据输入模型之后,紧接着出现如下的显卡状态,并且这个状态持续时间很短,在显示过程中,只有一次输出结果是这样的:

在这里插入图片描述

紧接着程序报错,显卡内存被释放,显卡的任务栏中,运行的程序也没有了:

在这里插入图片描述

然后,就感觉很奇怪,觉得是梯度的问题,因为在训练的时候很正常,然后模型预测就出现问题了,然后模型训练需要梯度信息,模型预测不需要梯度信息,就尝试着解决梯度的问题:

就是在模型训练代码的前面加入下面这句话:

with torch.no_grad():

更改后的代码如下所示:

with torch.no_grad():
    # validation
    model.eval()
    inputs = x_eval.to(device)
    val_probs = model(inputs)
    val_acc = (val_probs.argmax(dim=1) == y_eval.to(device)).float().mean()
    # print(f"Eval : Epoch : {iter} - kfold : {kfold+1} - acc: {val_acc:.4f}\n")
    epoch_val_acc += val_acc

更改之后模型预测阶段显卡的状态如下所示:

在这里插入图片描述
然后开始新一轮的训练过程,显卡的显存占用情况也没有再发生变化。

这样就不再报错了!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/340776.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于JavaEE的智能化跨境电子商务平台的设计

技术&#xff1a;Java、JSP、框架等摘要&#xff1a;伴随着近年来互联网的迅猛发展&#xff0c;网上零售逐渐成为了一种影响广泛、方便快捷的购物渠道。我国网上零售业发展的步伐很快。在如今经济全球化的影响下&#xff0c;消费者的网购行为趋于开放化、多元化&#xff0c;对于…

设计模式-中介者模式详解

定义 中介模式的英文翻译是 Mediator Design Pattern。在 GoF 中的《设计模式》一书中&#xff0c;它是这样定义的&#xff1a; Mediator pattern defines a separate (mediator) object that encapsulates the interaction between a set of objects and the objects delega…

chatGPT都可以干什么呢?来一睹风采吧

文章目录1. 写代码2. 写文案3. 写剧本4. 写歌诗5. 写报告6. 查公式7. 写对联8. 写文章9. 做表格10. 做计划11. 等等1. 写代码 2. 写文案 3. 写剧本 4. 写歌诗 5. 写报告 这妥妥的翻译文&#xff0c;数据完全不对。 6. 查公式 傅里叶变换的时域性质有如下几点&#xff1a; 对…

Android 内存优化(基础轮)必看~

本次分享主要分为五个部分内容&#xff0c;第一部分内容是 5W2H 分析内存优化&#xff0c;第二部分内容是内存管理机制&#xff0c;第三部分内容是内存优化 SOP&#xff0c;第四部分内容是 内存优化指导原则&#xff0c; 最后一部分内容是总结与展望。 如果学完内存优化的基础论…

webgl深入理解视图矩阵

文章目录前言三角形构成三维物体视点、目标、正方向视图矩阵辅助函数&#xff1a;归一化、向量差、点积、叉积视图矩阵的数学表示与使用视图矩阵构建三维世界注意前言 在前面的学习中&#xff0c;已经得知了webgl是如何绘制二维图形&#xff0c;并进行仿射变换&#xff08;矩阵…

mysql的架构图

Mysql逻辑架构图主要分三层&#xff1a;1) 第一层负责连接处理&#xff0c;授权认证&#xff0c;安全等等每个客户端连接都会在服务器进程中拥有一个线程&#xff0c;服务器维护了一个线程池&#xff0c;因此不需要为每一个新建的连接创建或者销毁线程。当客户端连接到Mysql服务…

基于JavaEE的“三味”书屋网上售书系统

技术&#xff1a;Java、JSP等摘要&#xff1a;美国最先提出Internet的概念,如今,全球各地的人们纷纷加入到这个网络行列, 使 Internet 真正走向全球化。随着用户、网民越来越多,网络的范围也愈来愈大,领域也慢慢走向了多元化&#xff0c;一体化 。“三味”书屋设计就是网络浪潮…

GORM设计原理和实践(七)——GORM

文章目录一、重点内容&#xff1a;1、GROM设计原理2、GROM配置3、GROM使用即CRUD二、详细知识点介绍&#xff1a;1、GORM设计原理图2、SQL是怎么生成的3、GROM配置开启go model设置go model输入代理&#xff1a;导入依赖&#xff1a;4、GROM操作初体验代码&#xff1a;5、模型定…

【Shell1】shell语法,ssh/build/scp/upgrade,环境变量,自动升级bmc

文章目录1.shell语法&#xff1a;shell是用C语言编写的程序&#xff0c;是用户使用Linux的桥梁&#xff0c;硬件>内核(os)>shell>文件系统1.1 变量&#xff1a;readonly定义只读变量&#xff0c;unset删除变量1.2 函数&#xff1a;shell脚本传递的参数中包含空格&…

app逆向篇之安卓模拟器环境搭建

前言 本教程适配:安卓7以上的安卓模拟器(包括雷电9等安卓9的模拟器&#xff09; 准备工具 雷电模拟器面具debug版LSPosed 正式步骤 安装雷电模拟器&#xff0c;这里怎么安装就不需要说了吧安装好雷电模拟器之后应该能够在桌面上看到两个图标&#xff0c;如下&#xff1a; …

分页和mmap

文章目录一、内存分页1、基本概念2、分页机制下&#xff0c;虚拟地址和物理地址是如何映射的&#xff1f;3、快表(TLB)二、mmap基本原理和分类一、内存分页 1、基本概念 CPU并不是直接访问物理内存地址&#xff0c;而是通过虚拟地址空间来间接的访问物理内存地址。 页&#x…

CSS ~ 从入门到入坑。

CSS ~ 从入门到入坑。 文章目录CSS ~ 从入门到入坑。what。css 三种实现方式。选择器。id 选择器 > class 选择器 > 标签选择器。标签选择器。类选择器。id 选择器。层次选择器。后代选择器。子选择器。相邻兄弟选择器。通用选择器。结构伪类选择器。属性选择器。字体风格…

OpenAI ChatGPT模型训练

打开VSCode 新建一个工作目录 使用pip install --upgrade openai 配置环境变量&#xff1a; OPENAI_API_KEY<你的open ai key> windows配置:(需要重启) setx OPENAI_API_KEY "你的open ai key" 准备训练数据集文件&#xff1a; 格式如下&#xff1a; 放到工作目…

NSSROUND#8[Basic]

文章目录一、[NSSRound#8 Basic]MyDoor二、[NSSRound#8 Basic]Upload_gogoggo三、[NSSRound#8 Basic]MyPage四、[NSSRound#8 Basic]ez_node一、[NSSRound#8 Basic]MyDoor <?php error_reporting(0);if (isset($_GET[N_S.S])) {eval($_GET[N_S.S]); }if(!isset($_GET[file])…

如何备考系统集成项目管理工程师?

首先了解考试信息&#xff0c;做好备考计划&#xff0c;准备好备考资料等~现在网上也有很多的视频教程&#xff0c;跟着一起学习&#xff0c;大概一周的时间就能过完。如果时间紧张&#xff0c;可以直接抓重点章节真题的复习。考试重点诺&#xff0c;重点章节标红了的&#xff…

NSACE高级WEB安全专家

目录信息收集基本信息收集域名注册信息收集子域名信息收集IP查询系统鉴定端口扫描搜索引擎信息收集 信息收集包括基本信息收集和搜索引擎收集 基本信息收集 基本信息收集方式如下&#xff1a; 域名注册信息查询&#xff1a;例如www.baidu.com 的注册信息&#xff0c;包含注…

vue3的核心知识点合集

Vue3 中文文档(新) Vue.js - 渐进式 JavaScript 框架 | Vue.js vue3的优点&#xff1a; 首次渲染更快diff 算法更快内存占用更少打包体积更小更好的 Typescript 支持Composition API 组合 API首先理解一下vite 构建工具&#xff1a; vite是一种新型前端构建工具&#xff0c;…

解答vue组件中一级组件可不可以作二级组件这个疑惑

引子 大家请看如下情况&#xff0c;我需要做一个项目&#xff0c;首页上的“产品介绍”部分同样也是导航导向的一部分&#xff1a; 首页中的部分&#xff1a; 导航栏导向的部分&#xff1a; 这里我要表达的是&#xff0c;组件Case在导航栏中属于一级路由&#xff0c;而在首…

解决idea出现的java.lang.OutOfMemoryError: Java heap space的问题

文章目录1. 复现问题2. 分析问题3. 解决问题4. 补充解决java.lang.OutOfMemoryError: PermGen space问题1. 复现问题 今天使用idea开发时&#xff0c;突然报出如下错误&#xff1a; Exception in thread "main" java.lang.OutOfMemoryError: Java heap spaceat org.…

【测试开发】web 自动化测试 --- selenium4

目录1. 什么是自动化为什么要做自动化2. 为什么选择selenium作为我使用的web自动化工具3. 什么是驱动&#xff1f;驱动的工作原理是什么5. 第一个自动化程序演示6. selenium基本语法6.1 定位元素的方法6.2 操作页面元素6.3 等待6.4 信息打印获取当前页面句柄&#xff0c;窗口切…