Ubuntu释放缓存/内存和显存

这篇具有很好参考价值的文章主要介绍了Ubuntu释放缓存/内存和显存。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

深度学习训练模型时,总是出现显存和内存爆满的现象,导致训练中断,这里总结几个好用的方法:

  1. 代码添加指令
  2. 手动释放内存/缓存
  3. 自动定时释放内存/缓存
  4. 代码释放显存(torch)

1. 代码添加指令

代码中存在一些临时变量或者缓存,使用del进行删除,del ***是python删除变量的一种方式,可以尽可能减少不必要的临时变量。
只需在运行代码末尾加入:

del ***
gc.collect()   #内存回收,释放,代码开头记得import gc

2. 手动释放内存/缓存:

进入终端,写如下任一指令即可:

echo 1 > /proc/sys/vm/drop_caches

echo 2 > /proc/sys/vm/drop_caches

echo 3 > /proc/sys/vm/drop_caches

用free -h检查是否成功清除缓存。


3. 自动定时释放内存/缓存:

注:这个是我比较推荐的,建议在root权限下去做:

在自定义的一个路径下(我的是/home/xzy/)建立一个freex.h文件:

vim freex.sh

Ubuntu释放缓存/内存和显存
然后写入如下指令(输入i进行编辑),并保存退出(ESC + : + w + q):

sync; echo 1 > /proc/sys/vm/drop_caches
 
sync; echo 2 > /proc/sys/vm/drop_caches
 
sync; echo 3 > /proc/sys/vm/drop_caches
 
swapoff -a && swapon -a

赋权:

chmod 777 freex.sh

设置定时:

crontab -e

但是第一次进入可能会出现这样的情况:

root@shige-System-Product-Name:/home/xzy#  crontab -e
no crontab for root - using an empty one

Select an editor.  To change later, run 'select-editor'.
  1. /bin/nano        <---- easiest
  2. /usr/bin/vim.basic
  3. /usr/bin/vim.tiny
  4. /usr/bin/emacs25
  5. /bin/ed
Choose 1-5 [1]: 

选择编辑器,我选的vim.basic,也就是输入2,回车:

Choose 1-5 [1]: 2
crontab: installing new crontab

再次进入:

crontab -e

输入以下内容,并保存退出(5分钟自动调用一次):

*/05 * * * * /home/xzy/freex.sh

如图:

Ubuntu释放缓存/内存和显存

查看状态和启动:

service cron status
service cron start

注释:
service cron start # 开启服务
service cron stop # 关闭服务
service cron reload # 重新载入配置
service cron restart # 重启服务

Ubuntu释放缓存/内存和显存

就是有个小疑问,就是图中存在一个:(CRON) info (No MTA installed, discarding output)。
不知道是个啥,不过不影响功能,有知道的可以评论区指导下哈,我搜了一些去除这个问题的博客,感兴趣的可以参考:
博客1
博客2
博客3
Ok!
完成,亲测有效!!!


4. 代码释放显存(torch):

如果显存资源比较紧缺,可以在每个epoch开始时释放下不用的显存资源:文章来源地址https://www.toymoban.com/news/detail-450171.html

torch.cuda.empty_cache()

到了这里,关于Ubuntu释放缓存/内存和显存的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【pytorch】随着epoch增加,显存逐渐增加?解决pytorch显存释放问题

    在训练时,检测 “out of memory” 的error并通过torch.cuda.empty_cache()处理 如: 在测试时,避免忘记设置 torch.no_grad() 如: Pytroch - 显存释放问题

    2024年02月11日
    浏览(59)
  • 【自制C++深度学习框架】前言

    此GitHub项目是一个初学者的深度学习框架,使用C++编写,旨在为用户提供一种简单、易于理解的深度学习实现方式。以下是本项目的主要特点和功能: 计算图:使用计算图来描述深度学习模型的计算过程,利用计算图将神经网络的计算过程视为一个有向无环图。通过构建计算

    2024年02月07日
    浏览(42)
  • 大数据、人工智能、机器学习、深度学习关系联系前言

    1.大数据和人工智能关系 2.机器学习、深度学习、人工智能关系 3.监督学习、无监督学习、半监督学习、强化学习、迁移学习关系 4.机器学习具体内容 1.数据驱动的人工智能 :人工智能系统需要大量的数据来进行训练和学习。大数据提供了海量的信息,可以用于训练机器学习

    2024年02月12日
    浏览(57)
  • 深度学习笔记--解决GPU显存使用量不断增加的问题

    目录 1--问题描述 2--问题解决 3--代码         基于 Pytorch 使用 VGG16 预训练模型进行分类预测时,出现 GPU 显存使用量不断增加,最终出现 cuda out of memory 的问题;         出现上述问题的原因在于:输入数据到网络模型进行推理时,会默认构建计算图,便于后续反向传播

    2024年02月17日
    浏览(42)
  • 【已解决】探究CUDA out of memory背后原因,如何释放GPU显存?

    研究过深度学习的同学,一定对类似下面这个CUDA显存溢出错误不陌生 RuntimeError: CUDA out of memory. Tried to allocate 916.00 MiB (GPU 0; 6.00 GiB total capacity; 4.47 GiB already allocated; 186.44 MiB free; 4.47 GiB reserved in total by PyTorch) 本文探究CUDA的内存管理机制,并总结该问题的解决办法 在实验开始前

    2023年04月20日
    浏览(102)
  • 省显存(内存?)的大语言模型(LLMs)训练/微调/推理方法

    即使 RTX 3090 有着 24GB 的 RAM,使用一块 RTX 3090 依然无法 fp32 精度训练最小号的 LLaMA-6B。 估算模型所需的RAM 首先,需要了解如何根据参数量估计模型大致所需的 RAM,这在实践中有很重要的参考意义。需要通过估算设置 batch_size,设置模型精度,选择微调方法和参数分布方法等

    2024年02月09日
    浏览(45)
  • (学习笔记-内存管理)如何避免预读失效和缓存污染的问题?

    传统的LRU算法存在这两个问题: 预读失效 导致的缓存命中率下降 缓存污染 导致的缓存命中率下降 Redis的缓存淘汰算法是通过 实现LFU算法 来避免 [缓存污染] 而导致缓存命中率下降的问题(redis 没有预读机制) Mysql 和 Linux操作系统是通过 改进LRU算法 来避免 [预读失效和缓存

    2024年02月14日
    浏览(46)
  • pytorch 训练过程内存泄露/显存泄露debug记录:dataloader和dataset导致的泄露

    微调 mask-rcnn 代码,用的是 torchvision.models.detection.maskrcnn_resnet50_fpn 代码,根据该代码的注释,输入应该是: images, targets=None (List[Tensor], Optional[List[Dict[str, Tensor]]]) - Tuple[Dict[str, Tensor], List[Dict[str, Tensor]]] 所以我写的 dataset 是这样的: 大概思路是: 先把所有的标注信息读入内存

    2024年02月14日
    浏览(48)
  • Linux释放内存

    free -m是Linux上查看内存的指令,其中-m是以兆(MB)为单位,如果不加则以KB为单位。 如下图表示,(total)总物理内存是809MB,(used)已使用167MB,(free)剩余285MB,(buff/cache)缓存356MB,(available)可用于新进程的内存514MB,此部分包含包括空闲内存、共享内存和缓冲区/缓

    2024年02月20日
    浏览(39)
  • 动态分配内存与释放

    1.malloc malloc()可以找到一个大小合适的块。 内存是匿名的,也就是说,malloc()分配了内存,但没有为它指定名字。 格式如下: double*ptd; ptd=(double*)malloc(30*sizeof(double)); ps:ptd可以看成是一个数组。 malloc()可能分配不到所需的内存。在这种情况下,该函数返回空指针。

    2024年01月17日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包