解决pytorch训练的过程中内存一直增加的问题

来自:解决pytorch训练的过程中内存一直增加的问题 - 知乎

pytorch训练中内存一直增加的原因(部分)

  • 代码中存在累加loss,但每步的loss没加item()

    import torch
    import torch.nn as nn
    from collections import defaultdict

    if torch.cuda.is_available():
    device = 'cuda'
    else:
    device = 'cpu'

    model = nn.Linear(100, 400).to(device)
    criterion = nn.L1Loss(reduction='mean').to(device)
    optimizer = torch.optim.Adam(model.parameters(), lr=0.001)

    train_loss = defaultdict(float)
    eval_loss = defaultdict(float)

    for i in range(10000):
    model.train()
    x = torch.rand(50, 100, device=device)
    y_pred = model(x) # 50 * 400
    y_tgt = torch.rand(50, 400, device=device)

    复制代码
      loss = criterion(y_pred, y_tgt)
      optimizer.zero_grad()
      loss.backward()
      optimizer.step()
      
      # 会导致内存一直增加,需改为train_loss['loss'] += loss.item()
      train_loss['loss'] += loss
    
      if i % 100 == 0:
          train_loss = defaultdict(float)
          model.eval()
          x = torch.rand(50, 100, device=device)
          y_pred = model(x) # 50 * 400
    
          y_tgt = torch.rand(50, 400, device=device)
          loss = criterion(y_pred, y_tgt)
    
          # 会导致内存一直增加,需改为eval_loss['loss'] += loss.item()
          eval_loss['loss'] += loss

以上代码会导致内存占用越来越大,解决的方法是:train_l oss['loss'] += loss.item() 以及 eval_loss['loss'] += loss.item()。值得注意的是,要复现内存越来越大的问题,模型中需要切换model.train() 和 model.eval(),train_loss以及eval_loss的作用是保存模型的平均误差(这里是累积误差),保存到tensorboard中。

相关推荐
Code Slacker1 天前
第八届传智杯AI虚实共振实拍创作大赛练习题库
人工智能
格林威1 天前
Baumer相机碳纤维布纹方向识别:用于复合材料铺层校验的 5 个核心技巧,附 OpenCV+Halcon 实战代码!
人工智能·数码相机·opencv·算法·计算机视觉·视觉检测
人工智能培训1 天前
如何将模拟器中的技能有效迁移到物理世界?
人工智能·大模型·知识图谱·具身智能·人工智能 培训·企业人工智能培训
AI有元力1 天前
解锁AI营销新密码,GEO优化助力品牌连接精准AI买家
人工智能
GISer_Jing1 天前
原生HTML项目重构:Vue/React双框架实战
vue.js·人工智能·arcgis·重构·html
ZCXZ12385296a1 天前
YOLOv11-C3k2-wConv改进脐橙目标检测与分级模型研究
人工智能·yolo·目标检测
K姐研究社1 天前
实测 Kimi K2.5 ,最接近Gemini 3 Pro 的国产开源模型
人工智能
源于花海1 天前
深度迁移学习:深度对抗网络迁移(三种核心方法)
人工智能·机器学习·迁移学习·深度迁移学习·深度对抗网络
wujian83111 天前
ChatGPT和Gemini导出pdf方法
人工智能·ai·chatgpt·pdf·deepseek
香芋Yu1 天前
【深度学习教程——】02_神经网络如何自动求导?反向传播的数学魔法
人工智能·深度学习·神经网络