解决网络训练验证过程中显存增加的原因

在进行深度学习网络训练时,遇到显存不断增长导致OOM的问题。通过分析发现,参数保存、eval模式使用不当及未及时清理缓存可能是原因。解决方案包括:在保存参数时使用.item(),将model.eval()放在torch.no_grad()之后,以及使用torch.cuda.empty_cache()清理无用显存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在训练网络时发现网络训练了几个epoch之后就会出现OOM
一开始以为是内存不够,后来才发现是在网络训练过程中,显存会不断的增加。
针对以上的问题,查找资料总结了三种有用的方式

  1. 训练过程过程中,保存参数加.item()
    原代码:
def train_one_epoch(
    model, criterion, train_dataloader, optimizer, epoch, clip_max_norm
):
    model.train()
    device = next(model.parameters()).device
    train_loss = 0
   
    for i, d in enumerate(train_dataloader):
        d = d.to(device)

        optimizer.zero_grad()
        out_net = model(d)
        loss = criterion(out_net, d, epoch)
        train_loss += loss

        loss.backward()
        if clip_max_norm > 0:
            torch
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值