pytorch内存泄漏

问题描述:

内存泄漏积累过多最终会导致内存溢出,当内存占用过大,进程会被killed掉。

解决过程:

在代码的运行阶段输出内存占用量,观察在哪一块存在内存剧烈增加或者显存异常变化的情况。但是在这个过程中要分级确认问题点,也即如果存在三个文件main.py、train.py、model.py。
在此种思路下,应该先在main.py中确定问题点,然后,从main.py中进入到train.py中,再次输出显存占用量,确定问题点在哪。随后,再从train.py中的问题点,进入到model.py中,再次确认。如果还有更深层次的调用,可以继续追溯下去。

import psutil
process = psutil.Process()
current_memory = process.memory_info().rss
print(f"0--------------Current memory usage: {current_memory / (1024 ** 3):.4f} GB")

具体使用的代码

for epoch in range(start_epoch+1, args.epochs+1):process = psutil.Process()current_memory = process.memory_info().rssprint(f"0--------------Current memory usage: {current_memory / (1024 ** 3):.4f} GB")count_step = (epoch-1)*len(train_loader)  print(f"1--------------Current memory usage: {current_memory / (1024 ** 3):.4f} GB")mean_loss, lr = train_one_epoch(model, optimizer, train_loader, device, epoch, count_step,writer,lr_scheduler,print_freq=args.print_freq)print(f"2--------------Current memory usage: {current_memory / (1024 ** 3):.4f} GB")val_info = evaluate_vgg(model, epoch, val_loader, device, writer, num_classes=num_classes)print(f"3--------------Current memory usage: {current_memory / (1024 ** 3):.4f} GB")with open(results_file, "a") as f:# 记录每个epoch对应的train_loss、lr以及验证集各指标       train_info = f"[epoch: {epoch}]\n" \f"train_loss: {mean_loss:.4f}\n" \f"lr: {lr:.6f}\n"f.write(train_info + val_info + "\n\n")save_vgg_file = {"model": model.state_dict(),"optimizer": optimizer.state_dict(),#  "lr_scheduler": lr_scheduler.state_dict(),"epoch": epoch,"args": args}torch.save(save_vgg_file, 'checkpoints/fcn_model_Adam-StepLR_1e-2.pth')print(f"update checkpoints/fcn_model_Adam-StepLR_1e-2.pth")print(f"4--------------Current memory usage: {current_memory / (1024 ** 3):.4f} GB")

在这里插入图片描述
每个epoch训练完之后所占内存会不断增加,也就是说,每轮跑完之后会有冗余的数据一直在消耗内存。于是criterion、train_one_epoch、evaluate三个部分

criterion部分
Mem usage:5310 MiB在这里插入图片描述train_one_epoch部分
Mem usage:4439 MiB
在这里插入图片描述
evaluate部分
Mem usage:10644
在这里插入图片描述
在这里插入图片描述
evaluate部分可以看到,所占用内存突然增大,并且之后的代码也占用了大量内存,继续监控得知在下一个epoch中criterion部分占用内存也是16064MiB,由此推测出内存消耗在evaluate部分

解决办法:

删除变量数据在for循环外,把暂时不用的可视化代码注释掉,发现占用内存变化很小
在这里插入图片描述
在这里插入图片描述

解决pytorch训练时的显存占用递增的问题
Pytorch训练过程中,显存(内存)爆炸解决方法
Python代码优化工具——memory_profiler

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

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

相关文章

基于Jenkins构建生产CICD环境(上篇)

目录 环境概述 Jenkins简介 持续集成 持续集成的效益 持续集成的作用 持续集成的特点 持续交付 持续部署 Maven 介绍 安装配置Jenkins Jenkins配置 1、修改jenkins初始密码 2、安装 Jenkins 必要插件 环境概述 随着软件开发需求及复杂度的不断提高,团队…

怎样通过本地电脑搭建SFTP服务器,并实现公网访问?

本地电脑搭建SFTP服务器,并实现公网访问 文章目录 本地电脑搭建SFTP服务器,并实现公网访问1. 搭建SFTP服务器1.1 下载 freesshd 服务器软件1.3 启动SFTP服务1.4 添加用户1.5 保存所有配置 2. 安装SFTP客户端FileZilla测试2.1 配置一个本地SFTP站点2.2 内…

appium2 安装 和出现问题解决

1.安装环境 A macOS, Linux, or Windows operating systemNode.js version in the SemVer range ^14.17.0 || ^16.13.0 || >=18.0.0NPM version >= 8 (NPM is usually bundled with Node.js, but can be upgraded independently) 1.1只要安装nodejs最新版就好了 1.2安…

el-table分页后序号连续的两种方法

实现效果&#xff1a; 第一页排序到10&#xff0c;第二页的排序应从11开始 实现方法一&#xff1a; 在el-table的序号列中使用template定义 <el-table><el-table-columnmin-width"10%"label"序号"><template slot-scope"scope"…

网络协议的定义、组成和重要性?

什么是网络协议&#xff1f; 网络协议是在计算机网络中&#xff0c;用于规定通信实体之间进行数据传输和通信的规则集合。网络协议涵盖了各种通信细节&#xff0c;包括数据包格式、错误处理、数据传输速率等&#xff0c;是用于分组交换数据网络的一种协议&#xff0c;其任务仅…

二、SQL,如何实现表的创建和查询

1、新建表格&#xff08;在当前数据库中新建一个表格&#xff09;&#xff1a; &#xff08;1&#xff09;基础语法&#xff1a; create table [表名]( [字段:列标签] [该列数据类型] comment [字段注释], [字段:列标签] [该列数据类型] comment [字段注释], ……&#xff0c…

SaaS ERP系统:中小企业走向成功的“秘密武器”

**ERP系统**开发已成为企业以最小的复杂性高效运营的必要需求。企业资源规划是业务流程管理战略不可或缺的一部分&#xff0c;因此&#xff0c;要想在当今动荡的市场中保持竞争力&#xff0c;拥有合适的ERP解决方案至关重要。 尽管如此&#xff0c;由于显而易见的原因&#xf…

玩转单元测试之gtest

引言 程序开发的时候&#xff0c;往往需要编写一些测试样例来完成功能测试&#xff0c;以保证自己的代码在功能上符合预期&#xff0c;能考虑到一些异常边界问题等等。 gtest快速入门 1.引入gtest # 使用的是1.10版本&#xff0c;其他版本可根据需要选择 git clone -b v1.1…

自动驾驶——车辆动力学模型

/*lat_controller.cpp*/ namespace apollo { namespace control {using apollo::common::ErrorCode;//故障码 using apollo::common::Status;//状态码 using apollo::common::TrajectoryPoint;//轨迹点 using apollo::common::VehicleStateProvider;//车辆状态信息 using Matri…

皮爷咖啡基于亚马逊云科技的数据架构,加速数据治理进程

皮爷咖啡&#xff08;Peet’s Coffee&#xff09;是美国精品咖啡品牌&#xff0c;于2017年进入中国&#xff0c;为中国消费者带来传统经典咖啡饮品&#xff0c;并特别呈现更加丰富的品质咖啡饮品体验。通过深入应用亚马逊云科技云原生数据库产品Amazon Redshift以及Amazon DMS等…

新研究:Gartner 公有云成本管理框架

2023年6月28日&#xff0c;Gartner 出版了名为《Beyond FinOps: the Gartner Framework for Public Cloud Financial Management》的公有云成本管理框架&#xff0c;旨在帮助企业/组织应对公有云支出的挑战&#xff0c;同时抓住新机遇&#xff0c;推动更有效的 IT 使用。新框架…

Practices11|41. 缺失的第一个正数(数组)、73. 矩阵置零(矩阵)

41. 缺失的第一个正数(数组) 1.题目&#xff1a; 给你一个未排序的整数数组 nums &#xff0c;请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,0] 输出&#xf…

web文件上传

文件上传指的是&#xff0c;将本地的图片、视频、音频上传到服务器&#xff0c;提供给其他用户浏览和下载的过程 前端需求 想要进行文件上传对于web前端来说有三个重要要素 1.<input type"file" name"image"> 提供这样的file文件上传格式 2. metho…

无代码集成飞书连接更多应用

场景描述&#xff1a; 基于飞书开放平台能力&#xff0c;无代码集成飞书连接更多应用&#xff0c;打通数据孤岛。通过Aboter可轻松搭建业务自动化流程&#xff0c;实现多个应用之间的数据连接。 支持包括飞书事件监听和接口调用的能力&#xff1a; 事件监听&#xff1a; 用…

神经网络基础-神经网络补充概念-54-softmax回归

概念 Softmax回归&#xff08;Softmax Regression&#xff09;是一种用于多分类任务的机器学习算法&#xff0c;特别是在神经网络中常用于输出层来进行分类。它是Logistic回归在多分类问题上的推广。 原理 Softmax回归的主要思想是将原始的线性分数&#xff08;得分&#xf…

SOPC之NIOS Ⅱ实现电机转速PID控制

通过FPGA开发板上的NIOS Ⅱ搭建电机控制的硬件平台&#xff0c;包括电机正反转、编码器的读取&#xff0c;再通过软件部分实现PID算法对电机速度进行控制&#xff0c;使其能够渐近设定的编码器目标值。 一、PID算法 PID算法&#xff08;Proportional-Integral-Derivative Algo…

Yalmip入门教程(5)-约束条件操作的相关函数

博客中所有内容均来源于自己学习过程中积累的经验以及对yalmip官方文档的翻译&#xff1a;https://yalmip.github.io/tutorials/ 这篇博客将详细介绍yalmip工具箱中约束条件操作相关函数的用法。 1.约束条件操作的相关函数 1.1 boundingbox函数 boundingbox函数用于求出一组约…

opencv 进阶13-Fisherfaces 人脸识别-函数cv2.face.FisherFaceRecognizer_create()

Fisherfaces 人脸识别 PCA 方法是 EigenFaces 方法的核心&#xff0c;它找到了最大化数据总方差特征的线性组合。不可否认&#xff0c;EigenFaces 是一种非常有效的方法&#xff0c;但是它的缺点在于在操作过程中会损失许多特征信息。 因此&#xff0c;在一些情况下&#xff0c…

PSP - 开源可训练的蛋白质结构预测框架 OpenFold 的环境配置

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/132334671 Paper: OpenFold: Retraining AlphaFold2 yields new insights into its learning mechanisms and capacity for generalization Open…

制作电商网站帮助中心,节省60%的咨询工作量

随着电子商务的快速发展&#xff0c;越来越多的企业选择在网上建立自己的电商平台。然而&#xff0c;一旦电商网站上线&#xff0c;就会面临一系列的问题和挑战。其中一个重要问题是如何有效管理和解答大量用户的咨询和问题&#xff0c;这对于提高用户体验和促进销售至关重要。…