前言

最近的工作中,用到了Pytorch框架训练医学图像分割模型。精心设计的模型经常会因为显存不足而失败。减小模型训练过程中对显存的占用,可能我们能想到最简单的方法就是减小batchsize,减少卷积核数量,裁剪输入图像的大小等。但是,以上方法可能会影响模型性能。经过多次尝试,总结了几种尽可能不改变模型结构,不影响模型性能且能够节省显存的训练方法。

清理GPU缓存

Pytorch提供了torch.cuda.empty_cache()函数用来清理GPU的缓存数据,在实际的模型训练中,我们可以将此函数与异常处理相结合,一旦发生显存溢出,异常处理机制可以捕获异常信息,清理GPU缓存,以保证模型正常训练。总体实现代码如下:

...

try:

output_data = model(input_data)

loss = calcloss(output_data,input_label)

...

except RuntimeError as exception:

if "out of memory" in str(exception):

print("GPU 显存不足!")

if hasattr(torch.cuda,"empty_cache"):

torch.cuda.empty_cache()

else:

raise exception

...

此方法能够起作用的前提是模型自身占用显存较小,如果模型过大,很容易丢失大量训练数据,影响模型性能。

改进反向传播中activation的存储方式

Tianq

释放pytorch占用的gpu显存_Pytorch 节省显存的训练方法总结相关推荐

  1. PyTorch节省显存占用方法

    1-使用inplace操作 2-使用混合精度运算 参考: [1]混合精度训练 http://kevinlt.top/2018/09/14/mixed_precision_training/ [2]py ...

  2. snb处理器hd3000显卡专用extra_一文看懂显卡的GPU,流处理器,显存,位宽,核心频率是啥?...

    大家好,我是行者,今天的电脑配件中,显卡越来越贵,也越来越重要.有时比一块CPU能贵出2倍甚至更多.所以我们迫切的需要更深的认识这块卡,使我们能更好的去选择与运用它.下面我给大家介绍一下这几个常见名词 ...

  3. pytorch节省显存_节省新房子的照明

    pytorch节省显存 Our final move into the new house is this weekend. We did a three phase, three week move ...

  4. torch.cuda.amp自动混合精度训练 —— 节省显存并加快推理速度

    torch.cuda.amp自动混合精度训练 -- 节省显存并加快推理速度 文章目录 torch.cuda.amp自动混合精度训练 -- 节省显存并加快推理速度 1.什么是amp? 2.为什么需要自动 ...

  5. GPU信息查看以及确认Pytorch使用了GPU计算模块进行深度学习的训练

    GPU信息查看以及确认Pytorch使用了GPU计算模块进行深度学习的训练 目录 GPU信息查看以及确认Pytorch使用了GPU计算模块进行深度学习的训练 GPU基础信息查看 Pytorch是否使用 ...

  6. 显卡内存和计算机内存,显卡爆显存和满显存有什么区别

    显卡"爆显存"就是指显卡的本地显存不够用了,显卡需要去借用内存;而"满显存"是指显存的使用量接近全部的本地显存容量. 因为现在的主流显存都是GDDR5,速度达到 ...

  7. pytorch在调用GPU的时候出现cuda runtime error (2) : out of memory at ..\aten\src\THC\THCGeneral.cpp:50

    这是因为GPU中的显存占满了,在任务管理器中关闭程序即可 @[TOC](pytorch在调用GPU的时候出现cuda runtime error (2) : out of memory at -\at ...

  8. bios设置_bios怎么设置显存 bios设置显存教程【图文】

    有些用户可能会发现打开电脑系统信息窗口显示的内存容量与实际容量不同,例如系统内存显示4G,可用3.73G.那么不可用的那部分内存到哪里去了呢?其实是被集成显卡占用当做显存使用了.下面我们就通过 bio ...

  9. pytorch之多GPU使用—— CUDA_VISIBLE_DEVICES=0,1 python main.py

    在输入命令行:可以直接指定 多卡训练: CUDA_VISIBLE_DEVICES=0,1 python main.py 其中0,1 代表 两个卡同时 单独写一个0 或者1 时候是指定单卡进行训练. 下 ...

最新文章

  1. Apache下实现禁止目录浏览
  2. 维特根斯坦:为何夸大人工智能是对人性的贬损?
  3. 2006年世界杯小组赛日程表
  4. JavaSE(三)——数组及继承
  5. Linkis生产部署服务器配置参考指南
  6. MYSQL主从同步故障一例及解决过程
  7. Tomcat-部署多个项目(不同端口)
  8. ElasticSearch fuzzy模糊查询(英文检索)
  9. RAC架构之业务分割
  10. 什么是大数据,模式识别和人工智能算法实现
  11. 谷歌浏览器批量图片下载插件-合成pdf
  12. python 对 文件内容 搜索_python实现搜索文本文件内容脚本
  13. ME525 刷机历险记
  14. [计算机组成原理] 第六章 控制系统与CPU
  15. Linux - 权限管理(用户)
  16. oracle11配置远程登录,oracle11g远程登录设置方法
  17. 装逼利器:QQ号转换成16进制登陆--用了这么长时间QQ竟然不知道
  18. ServiceMesh到底好不好
  19. 乐观锁和悲观锁区别以及使用场景
  20. Response设置响应数据功能介绍及重定向

热门文章

  1. 浅议SWOT分析在企业管理中的具体应用
  2. wps宏编程js宏编辑器之代码调试讲解
  3. 这是一个有故事的项目
  4. Linux编程基础:第5章Linux文件系统与操作 课后习题
  5. 安卓耳机左右音量调节_教你一招,手机耳机音量一键同步!
  6. i7 8700k linux,问答:i7-8700k和i7-8700哪个性价比更高?
  7. python 判断 ‘NoneType’的方法
  8. AutoCAD .Net 创建多段线Polyline
  9. ZCU102基于Petalinux挂载NVMe SSD
  10. 人类生来真的平等吗?