Pytorch多GPU并行Bug收集(长期):多个模型同时放在不同GPU上并行

##概述

最近几天有个模型,使用了local adaptation,就是在inference阶段也加入了训练的过程,因为需要进行模型复制和较大的batch_size进行训练,这样就导致我显卡直接爆炸。我用的看的K80,显存12G。模型用的BERT+文本分类,输入的Sequence_size=512(下简写为seq_size)。

##思考过程

接下来分享一下我的思考过程,可以看到就模型本身是不大的,即使扩大一倍也不会爆显存,问题就出在这个输入上,seq_size较大的时候,batch_size就要注意了,不然会导致计算的时候矩阵过大,有可能爆显存。我一直把inference的input_batch_size调小到1,都还是不行。说明目前来看不是输入位置的和前向计算过程中导致的爆显存。

接下来调试代码到local adaptation部分,这里会从memory里匹配出32个数据来进行模型参数的更新,我在训练阶段就没有设置过这么大的batch_size,因为一定会爆,问题应该就出在这里了。

##解决过程

首先想到的就是直接开并行,在model的最外层直接用DataParallel封装。使用4个GPU并行处理,发现不行,在local adaptation的地方出现数据分发的错误,源代码很长,就改成一个类似伪代码的片段给大家展示一下

import torch
class Net(torch.nn.Module):
    def __init__(model_path):
        super(Net, self).__init__()
        self.classify = load_model(model_pat
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值