丰色丽翔凹非寺物理位社会公众号 QbitAI
“两个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就能应用到你的数学模型中。
关于译者
一作名为Greg Yang,谷歌高级研究员。
通讯译者为谷歌研究院深度自学技术中心合伙人研究经理、IEEE Fellow高剑峰。
还有两位华人译者分别为源自谷歌的Liu Xiaodong(北京邮电大学校友)和Chen Weizhu (已在谷歌工作16年)。
他们的这篇成果已被NeurIPS 2021接收。
GitHub链接:https://github.com/microsoft/mup
学术论文地址:https://arxiv.org/abs/2203.03466
官方博客链接:https://www.microsoft.com/en-us/research/blog/%C2%B5transfer-a-technique-for-hyperparameter-tuning-of-enormous-neural-networks/
Reddit讨论:https://www.reddit.com/r/MachineLearning/comments/tb0jm6/ryoucanttraingpt3onasinglegpubutyoucan/