当前位置: 首页 > 科技观察

单个GPU处理GPT-3超参数!先训练小模型,再“一键迁移”

时间:2023-03-14 12:44:18 科技观察

本文经AI新媒体量子位(公众号ID:QbitAI)授权转载,转载请联系出处。不不不,现在情况变了——完全可以在单个GPU上调整大规模模型的超参数。怎么说?原来有人发现了一种新的调参方法。无论模型大小如何变化,得到的最优超参数都能保持稳定的性能。因此,我们可以先训练一个小版本的模型,在其上间接调整超参数,然后以零样本的方式直接复制到全尺寸模型中,以获得相当不错的性能。这对于那些没有足够GPU资源的人来说不太好。目前,相关帖子也在Reddit上引起热议,获得了300+的点赞和支持。在GPU上调整GPT-3大模型的方法称为muP(MaximalUpdateParametrization),作者来自微软和OpenAI。这个想法很简单,使用了他们在之前的工作中发现的一种称为μP的特殊参数化思想:窄神经网络和宽神经网络共享同一组最优超参数,即使在宽度为无限大(width->∞)时也是相同的。具体原理可以参考论文《Feature Learning in Infinite-Width Neural Networks》。可共享的超参数包括学习率learningrate、learningrateschedule、初始化、参数乘法器……甚至是单个参数张量。作者在宽度高达4096的Transformer和ResNet上验证了这个结论。因此,资源匮乏的炼金术士可以在单个GPU上对小版本的GPT-3模型进行超参数调整:如果在这个小版本上获得的参数模型接近最优,那么在大模型上也可以得到同样的结果。的结果。附言。这种参数调整方法也被命名为“μTransfer”。具体作用是什么?作者训练了一个小型的GPT-3,参数规模只有4000万,小到可以直接在GPU上运行。然后它把它的超参数“迁移”到一个有67亿个参数的大规模GPT-3上,发现它的性能和原来的GPT-3完全一样——尽管原来GPT-3的参数规模仍然是它的两倍!而这个调整成本只占整个预训练成本的7%。由于模型尺寸的增加,直接调整小模型的成本还是差不多的。如果用这种方法调整175亿规模的GPT-3的参数,成本可能最多占预训练总成本的0.3%。那么,此时你可能会问:能不能把模型的宽度缩小一下?作者指出,对于“非宽度的东西”,没有理论上的保证。但好消息是,他们测试了preLNTransformer在合理范围内的深度、batchsize、sequencelength和timestep的迁移效果。其中,他们将BERT-base和BERT-large缩小到宽度和深度相同的尺寸,然后同时调整超参数,发现:与已经调好的megatronBERTbaseline相比,两者的性能都有所提升.尤其是BERT-large提升更大。这也总结出一个道理:迁移模型规模越大,收益越高。所以笔者也开玩笑说,虽然我们没有测试175亿规模的GPT-3,但保证结果会让你“流口水”。说了这么多,怎么实现呢?下表总结了如何通过扇入或扇出调整模型的初始化和学习率。其中,粉色文字为μP,括号中的灰色文字为pytorch默认值。当然,如果你不想手动操作,作者也开源了Pytorch实现,可以通过pipinstallmup应用到你的模型中。关于作者名字叫GregYang,微软高级研究员。通讯作者为微软研究院深度学习技术中心合伙人研究经理、IEEEFellow高建峰。还有两位来自微软的华人作者,刘晓东(北京邮电大学校友)和陈伟柱(在微软工作了16年)。他们的工作已被NeurIPS2021接受。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/评论/tb0jm6/r_you_cant_train_gpt3_on_a_single_gpu_but_you_can/