加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

单张GPU搞定GPT-3超参数!先训练小模型,然后一键迁移

发布时间:2022-03-15 10:11:45 所属栏目:大数据 来源:互联网
导读:一个GPU没法训练GPT-3,更别提在上面调整超参数了。 不不不,现在情况有变 在单个GPU上完全可以调整大规模模型的超参数。 怎么说? 原来有人发现了一种新的调参方法,无论模型规模怎么变化,所得的最优超参数都能保持性能稳定。 由此一来,我们可以先训练一
       “一个GPU没法训练GPT-3,更别提在上面调整超参数了。”
 
      不不不,现在情况有变——
 
     在单个GPU上完全可以调整大规模模型的超参数。
 
     怎么说?
 
原来有人发现了一种新的调参方法,无论模型规模怎么变化,所得的最优超参数都能保持性能稳定。
 
由此一来,我们可以先训练一个小版本的模型,在上面间接调整好超参,然后以零样本的方式直接将它们复制到全尺寸模型上,就能获得相当不错的性能。
 
这对手里GPU资源不够的人来说简直不要太好了吧。
 
目前,相关帖子也在Reddit上引起热议,得到了300+的点赞支持。
 
 
在一个GPU上调参GPT-3大模型
 
方法名叫muP (Maximal Update Parametrization),作者分别来自微软和OpenAI。
 
想法很简单,利用的是他们在之前的工作中发现的一个叫做 P的特殊参数化思路:
 
窄神经网络和宽神经网络共享同一组最优超参数,即使宽度无限大(width->∞)时也一样。
 
具体原理可以参见论文《Feature Learning in Infinite-Width Neural Networks》。
 
可共享的超参数包括学习率learning rate、learning rate schedule、initialization、parameter multipliers……甚至可以单独针对每个参数张量。
 
作者在宽度高达4096的Transformer以及ResNet上验证了这一结论。
 
因此,资源匮乏的炼丹er就可以在单张GPU上对一个小版本的GPT-3模型进行超参数调整:
 
如果在这个小模型上得到的参数接近最优,那么在大模型上也可以得到一样的结果。
 
ps. 这种调参方式又被命名为“ 迁移( Transfer)”。
 
 
具体效果如何?
 
作者训练了一个只有4000万参数规模的小型GPT-3,它小到可以直接跑在一张GPU上。
 
然后把它的超参数“ 迁移”到一个有67亿参数的大规模GPT-3上,结果发现它的性能和原始的GPT-3完全相当——尽管原GPT-3的参数规模还是它的两倍!
 
而这一调整成本只占整个预训练成本的7%。
 
由于模型规模增大,直接调整小型模型的成本仍大致相同,如果用该方式来调参175亿规模的GPT-3,其成本可能最多只有总预训练成本的0.3%。
 
好了,这时你可能会问:能不能只缩小模型的宽度呢?
 
作者表示,对于“non-width stuff”,没有理论保证。
 
不过好消息是,他们在preLN Transformer的合理范围内对depth、batch size、sequence length和timestep的迁移效果进行了测试。
 
 
其中,他们将BERT-base和BERT-large在宽度和深度上缩小到同样的规模, 然后同时进行超参数调整后发现:
 
相比已经调优的megatron BERT基线,两者的性能都得到了改善,尤其是BERT-large提升更大。
 
 
由此也总结出一个道理:
 
迁移后的模型规模越大,收益越高。
 
所以作者还调侃道,虽然我们没有测试175亿规模的GPT-3,但保证结果能让你“流口水”。
 
 
说了这么多,到底如何实现?
 
下表概括了如何通过fan-in或fan-out调整你的模型的initialization和learning rate。
 
其中粉色文本为 P,括号中的灰色文本为pytorch默认值。
 
当然,如果你不想自己手动操作,作者也开源了Pytorch实现,通过pip install mup就可以应用到你的模型中。
 

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读