关于使用模型预训练过程中面对内存溢出问题的解决方案

前言:

据我了解很多较为成熟的模型,比如说:bert等,他们的实验过程都是在云TPU上进行了微调,且相关TPU的容量均为64GB;
我们目前一般企业中的服务器均为GPU,且内存层面16G、32G不等。
也就是说我们此时的硬件条件如果强行使用官方给出来的指导参数,很可能会出现内存溢出现象,这个问题笔者最近接受了领导安排的一些新模型的调研任务中感受颇深,接下来简单聊聊。

在这里插入图片描述

调研过程中遇到的问题

  • 内存溢出

问题解决思路

1、鉴于内存使用量与批量大小有直接关系,所以我优先想到的就是调整batch_size大小;
2、使用较短的最大序列长度进行微调以节省服务器内存,将max_seq_length从默认值512,直接调整到128(此处数值调整还需要客观参考训练集中的数据的实际情况来确定,非无脑调整),不仅解决有利于解决模型在预训练过程中的内存溢出问题,还加快了模型的训练速度;
3、查看相关模型的源码发现,该模型默认优化器是Adam,这需要很多存储m和v向量的额外内存。所以我对优化器也做了调整,切换了SGD;

当我做完以上三点调整之后,直接启动了模型的预训练过程,但是在预训练过程中,依然出现了内存溢出问题;
之后我又在查看model_path的过程中,发现我他娘的使用的是Large model,果断调整了Base model;

4、查阅资料发现,Large model要比Base model需要消耗多得多的内存(requires significantly more memory than Base.),调整之后发现,一起正常,问题解决;

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值