点击上方“视学算法”,选择加"星标"或“置顶

重磅干货,第一时间送达

丰色 发自 凹非寺
量子位 | 公众号 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/r_you_cant_train_gpt3_on_a_single_gpu_but_you_can/

本文系网易新闻•网易号特色内容激励计划签约账号【量子位】原创内容,未经账号授权,禁止随意转载。

点个在看 paper不断!

单张GPU搞定GPT-3超参数!先训练小模型,再“一键迁移” | 已开源相关推荐

  1. 不仅搞定“梯度消失”,还让CNN更具泛化性:港科大开源深度神经网络训练新方法

    原文链接:不仅搞定"梯度消失",还让CNN更具泛化性:港科大开源深度神经网络训练新方法 paper: https://arxiv.org/abs/2003.10739 code: ...

  2. tensorflow超参数优化_机器学习模型的超参数优化

    引言 模型优化是机器学习算法实现中最困难的挑战之一.机器学习和深度学习理论的所有分支都致力于模型的优化. 机器学习中的超参数优化旨在寻找使得机器学习算法在验证数据集上表现性能最佳的超参数.超参数与一般 ...

  3. 一块GPU搞定ChatGPT;ML系统入坑指南;理解GPU底层架构

    1. 跑ChatGPT体量模型,从此只需一块GPU 在发展技术,让大模型掌握更多能力的同时,也有人在尝试降低AI所需的算力资源.最近,一种名为FlexGen的技术因为「一块RTX 3090跑ChatG ...

  4. png 微软ppt 透明度,教你一招永久搞定PPT导出高清图片的小技巧

    常规另存为分辨率太低 说明:PPT在保存选项卡中设置超过96dpi只对PPT格式的演示文稿起作用,对另存为图片不起作用,转存的图片都是96dpi. 其它方法的弊端 常见的截图法,需要你显示器分辨率足够 ...

  5. 300秒搞定第一超算1万年的计算量,量子霸权时代已来?

    (由AI科技大本营付费下载自视觉中国) 作者 | 马超 责编 | 郭芮 来源 | CSDN 博客 近日,美国航天局(NASA)发布了一篇名为<Quantum Supremacy Using a ...

  6. 300 秒搞定第一超算 1 万年的计算量,量子霸权时代已来? | CSDN 博文精选

    作者 | 马超 责编 | 郭芮 出品 | CSDN 博客 近日,美国航天局(NASA)发布了一篇名为<Quantum Supremacy Using a Programmable Superco ...

  7. android 权限作用说明书,AndroidAcp 一句话搞定,简化 Android 6.0 系统复杂的权限操作 @codeKK Android开源站...

    Acp 为 Android check permission 缩写,此库简化 Android 6.0 系统复杂的权限操作而编写. 特点 支持批量权限申请,不需要重写 onRequestPermissi ...

  8. 像背单词一样搞定机器学习关键概念:300张小抄表满足你的所有AI好奇

    入坑数据科学和人工智能的同学都知道,机器学习是一个集合了计算机.统计学和数学知识的交叉领域,除了日常练习,也需要很多枯燥的记忆和理解.单纯读书不容易串联概念,又容易忘记. 可能你和文摘菌一样,读了无数 ...

  9. CV之后,纯MLP架构又来搞NLP了,性能媲美预训练大模型

    视学算法报道 编辑:陈萍.小舟 搞不起大模型,试一下超高性能的纯 MLP 架构? 去年来自谷歌大脑的研究团队在网络架构设计方面挖出新坑,提出 MLP-Mixer ,这是一个纯 MLP 构建的视觉架构. ...

最新文章

  1. 6位技术大咖11月倾心巨献,大数据+安全主题的技术分享合集【阿里云MVP 干货集锦】...
  2. RNA-seq分析流程
  3. matlab 多条函数颜色渐变(没多大用处)
  4. 行为型模式——状态模式(十一)
  5. 时间序列-ARIMA模型调参检验实战
  6. 【Vue中的坑】Vue中的修改变量没有效果?
  7. 计算机与未来的教育阅读答案,作文:计算机与未来的教育
  8. visual studio 2015 比较代码差异的几种方法
  9. javascript常用正则
  10. python实现人脸识别系统_python使用opencv实现人脸识别系统
  11. 专业邮件群发软件,助您轻松邮件营销
  12. 薪火相传,构建生态——记约束求解基础与应用训练营
  13. 知识经济杂志知识经济杂志社知识经济编辑部2022年第33期目录
  14. linux下RTNETLINK answers: File exists的解决方案 慎重
  15. 惠普暗影精灵II代pro进入biso
  16. 操作系统的分类有哪些?
  17. 获奖证书如何批量制作
  18. python简单代码画皮卡丘-利用Python绘制萌萌哒的皮卡丘
  19. mysql5.7内存占用_解决mysql升级到5.7内存占用过大问题
  20. oracle1455解决方法,oracle_1455_错误解决办法.doc

热门文章

  1. 在Windows 7下面IIS7的安装和 配置ASP的正确方法
  2. CSS中实现DIV容器垂直居中
  3. 【青少年编程】【四级】用逗号分隔列表
  4. mysql noinstall_windows mysql noinstall
  5. 基于 OpenCV 的网络实时视频流传输
  6. 元宇宙中可跨语种交流!Meta 发布新语音模型,支持128种语言无障碍对话
  7. 百度香港二次上市,12 岁开发者、AI 机器人同台敲响“芯片代码锣”
  8. 12 种方式轻松实现 Ruby 调用
  9. 必读!53个Python经典面试题详解
  10. wxPython:Python首选的GUI库 | CSDN博文精选