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

相关推荐
元直数字电路验证2 分钟前
AI入门体系化知识框架
人工智能
zhangshuang-peta3 分钟前
MCP 与治理:当 Agent 成为组织决策的一部分
大数据·人工智能·ai agent·mcp·peta
SCBAiotAigc6 分钟前
2026.4.21:在做yolo26分类任务时出现save_dir一直是个固定的一个值的避坑技巧
人工智能·具身智能·yolo26
原我归来是少年9 分钟前
一 InsightMemory - 从 RAG 到 Memory:AI 应用缺的不是搜索,而是持续认知
人工智能
字节架构前端20 分钟前
Life of a Token:像调试代码一样看懂大模型如何生成 Token
人工智能·aigc·openai
七夜zippoe29 分钟前
基于Rokid AI Glasses的「社交眼」:面向社交障碍人群的实时情绪辅助智能体开发实践
人工智能·情绪识别·智能体·眼镜·rokid
弹简特30 分钟前
【AI辅助趣学SpringAI】03-聊天模型之SSE流式编程
人工智能·sse·springai
传说故事31 分钟前
【论文阅读】RoboCodeX: Multimodal Code Generation for Robotic Behavior Synthesis
论文阅读·人工智能·具身智能
桌面运维家43 分钟前
IDV云桌面vDisk机房建设方案如何查看分组使用统计
大数据·人工智能
前端摸鱼匠1 小时前
【AI大模型春招面试题25】掩码自注意力(Masked Self-Attention)与普通自注意力的区别?适用场景?
人工智能·ai·面试·大模型·求职招聘