解决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中。

相关推荐
weixin_397574091 分钟前
Agent OS治理平台:资源平面、执行平面与控制平面的架构
人工智能·平面·架构
芝麻开门GEO23 分钟前
泰安GEO优化服务,真的能提升效果吗?
人工智能·python
HIT_Weston24 分钟前
104、【Agent】【OpenCode】webfetch 工具提示词
人工智能·agent·opencode
ai_coder_ai24 分钟前
论边缘计算及其应用
人工智能·边缘计算
1892280486125 分钟前
NV023固态MT29F16T08GWLCEJ9-QBES:C
大数据·服务器·人工智能·科技·缓存
Slow菜鸟27 分钟前
AI 代码知识图谱 教程(三)| Understand-Anything(给人看)
人工智能·知识图谱
Cosolar1 小时前
深度测评 | QoderWork:当 AI 不再只是"聊天搭子",而是真能帮你干活的桌面智能体
人工智能·后端·程序员
MartinYeung51 小时前
[論文學習]大型語言模型的安全與隱私挑戰綜述
人工智能
A10169330711 小时前
从机器翻译到智驾:规则派的黄昏与数据革命的终局(十四)
人工智能·自然语言处理·机器翻译
KaMeidebaby1 小时前
卡梅德生物技术快报|原核表达系统工艺优化:包涵体重折叠 + 分子筛纯化实现功能 RBD 高效制备,附全参数配置
前端·人工智能·算法·数据挖掘·数据分析