怎么用个人电脑做网站临沂做公司网站
怎么用个人电脑做网站,临沂做公司网站,响应式网站方案,pc官方网站问题描述#xff1a;
内存泄漏积累过多最终会导致内存溢出#xff0c;当内存占用过大#xff0c;进程会被killed掉。
解决过程#xff1a;
在代码的运行阶段输出内存占用量#xff0c;观察在哪一块存在内存剧烈增加或者显存异常变化的情况。但是在这个过程中要分级确认…问题描述
内存泄漏积累过多最终会导致内存溢出当内存占用过大进程会被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(f0--------------Current memory usage: {current_memory / (1024 ** 3):.4f} GB)具体使用的代码
for epoch in range(start_epoch1, args.epochs1):process psutil.Process()current_memory process.memory_info().rssprint(f0--------------Current memory usage: {current_memory / (1024 ** 3):.4f} GB)count_step (epoch-1)*len(train_loader) print(f1--------------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_freqargs.print_freq)print(f2--------------Current memory usage: {current_memory / (1024 ** 3):.4f} GB)val_info evaluate_vgg(model, epoch, val_loader, device, writer, num_classesnum_classes)print(f3--------------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 \ftrain_loss: {mean_loss:.4f}\n \flr: {lr:.6f}\nf.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(fupdate checkpoints/fcn_model_Adam-StepLR_1e-2.pth)print(f4--------------Current memory usage: {current_memory / (1024 ** 3):.4f} GB)每个epoch训练完之后所占内存会不断增加也就是说每轮跑完之后会有冗余的数据一直在消耗内存。于是criterion、train_one_epoch、evaluate三个部分
criterion部分 Mem usage5310 MiBtrain_one_epoch部分 Mem usage4439 MiB evaluate部分 Mem usage10644 在evaluate部分可以看到所占用内存突然增大并且之后的代码也占用了大量内存继续监控得知在下一个epoch中criterion部分占用内存也是16064MiB由此推测出内存消耗在evaluate部分。
解决办法
删除变量数据在for循环外把暂时不用的可视化代码注释掉发现占用内存变化很小
解决pytorch训练时的显存占用递增的问题 Pytorch训练过程中显存内存爆炸解决方法 Python代码优化工具——memory_profiler
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/89650.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!