10倍!微软开源深度学习优化库DeepSpeed,可训练1000亿参数模型
点上方蓝字计算机视觉联盟获取更多干货
在右上方 ··· 设为星标 ★,与你不见不散
编辑:Sophia
计算机视觉联盟 报道 | 公众号 CVLianMeng
转载于 :微软
AI博士笔记系列推荐:
博士笔记 | 周志华《机器学习》手推笔记“神经网络”
人工智能的最新趋势是,更大的自然语言模型可以提供更好的准确性,但是由于成本、时间和代码集成的障碍,较大的模型难以训练。
微软日前开源了一个深度学习优化库 DeepSpeed,通过提高规模、速度、可用性并降低成本,可以在当前一代的 GPU 集群上训练具有超过 1000 亿个参数的深度学习模型,极大促进大型模型的训练。同时,与最新技术相比,其系统性能可以提高 5 倍以上。
根据微软的介绍,DeepSpeed 库中有一个名为 ZeRO(零冗余优化器,Zero Redundancy Optimizer)的组件,这是一种新的并行优化器,它可以大大减少模型和数据并行所需的资源,同时可以大量增加可训练的参数数量。
研究人员利用这些突破创建了图灵自然语言生成模型(Turing-NLG),这是最大的公开语言模型,参数为 170 亿。
ZeRO 作为 DeepSpeed 的一部分,是一种用于大规模分布式深度学习的新内存优化技术,它可以在当前的 GPU 集群上训练具有 1000 亿个参数的深度学习模型,其吞吐量是当前最佳系统的 3 到 5 倍。它还为训练具有数万亿个参数的模型提供了一条清晰的思路。
ZeRO 具有三个主要的优化阶段,分别对应于优化器状态、梯度和参数分区。
ZeRO 克服了数据并行和模型并行的局限性,同时实现两者的优点,它通过跨数据并行进程将模型状态划分为上图所示的参数、梯度和优化器状态分区,而不是复制它们,从而消除了数据并行进程之间的内存冗余。
在训练期间使用动态通信规划(dynamic communication schedule),在分布式设备之间共享必要的状态,以保持数据并行的计算粒度和通信量。
目前实施了 ZeRO 的第一阶段,即优化器状态分区(简称 ZeRO-OS),具有支持 1000 亿参数模型的强大能力,此阶段与 DeepSpeed 一起发布。
DeepSpeed 与 PyTorch 兼容,DeepSpeed API 是在 PyTorch 上进行的轻量级封装,这意味着开发者可以使用 PyTorch 中的一切,而无需学习新平台。此外,DeepSpeed 管理着所有样板化的 SOTA 训练技术,例如分布式训练、混合精度、梯度累积和检查点,开发者可以专注于模型开发。
同时,开发者仅需对 PyTorch 模型进行几行代码的更改,就可以利用 DeepSpeed 独特的效率和效益优势来提高速度和规模。
DeepSpeed 在以下四个方面都表现出色:
规模:目前最先进的大型模型,例如 OpenAI GPT-2、NVIDIA Megatron-LM 和 Google T5,分别具有 15 亿、83 亿和 110 亿个参数,而 DeepSpeed 的 ZeRO 第一阶段提供系统支持,以运行多达 1000 亿个参数的模型,这是比当前最先进的模型大 10 倍。
未来计划增加对 ZeRO 第二和第三阶段的支持,从而提供高达 2000 亿个乃至数万亿个参数的模型的能力。
速度:在各种硬件上,目前观察到的吞吐量比当前最先进技术高出 5 倍。例如,为了在 GPT 系列工作负载上训练大型模型,DeepSpeed 将基于 ZeRO 的数据并行与 NVIDIA Megatron-LM 模型并行相结合,在具有低带宽互连的 NVIDIA GPU 集群上(没有 NVIDIA NVLink 或 Infiniband),与仅对具有 15 亿参数的标准 GPT-2 模型使用 Megatron-LM 相比,DeepSpeed 将吞吐量提高了 3.75 倍。
在具有高带宽互连的 NVIDIA DGX-2 集群上,对于 20 至 800 亿个参数的模型,速度要快 3 到 5 倍。这些吞吐量的提高来自 DeepSpeed 更高的内存效率以及使用较低程度的模型并行和较大的批处理量来拟合这些模型的能力。
成本:提高吞吐量意味着大大降低训练成本,例如,要训练具有 200 亿个参数的模型,DeepSpeed 需要的资源是原来的 3/4。
易用性:只需更改几行代码即可使 PyTorch 模型使用 DeepSpeed 和 ZeRO。与当前的模型并行库相比,DeepSpeed 不需要重新设计代码或重构模型,它也没有对模型尺寸、批处理大小或任何其它训练参数加以限制。
对于参数多达 60 亿的模型,可以方便地使用由 ZeRO 提供的数据并行能力,而无需模型并行。而相比之下,对于参数超过 13 亿的模型,标准数据并行将耗尽内存。ZeRO 第二和第三阶段将进一步增加仅通过数据并行即可训练的模型大小。此外,DeepSpeed 支持 ZeRO 支持的数据并行与模型并行的灵活组合。
更具体的介绍查看微软的博客:
https://www.microsoft.com/en-us/research/blog/zero-deepspeed-new-system-optimizations-enable-training-models-with-over-100-billion-parameters
END
声明:本文来源于网络
如有侵权,联系删除
联盟学术交流群
扫码添加联盟博士,可与相关学者研究人员共同交流学习:目前开设有人工智能、机器学习、计算机视觉、自动驾驶(含SLAM)、Python、求职面经、综合交流群扫描添加CV联盟微信拉你进群,备注:CV联盟
最新热文荐读
GitHub | 计算机视觉最全资料集锦
Github | 标星1W+清华大学计算机系课程攻略!
Github | 吴恩达新书《Machine Learning Yearning》
收藏 | 2020年AI、CV、NLP顶会最全时间表!
收藏 | 博士大佬总结的Pycharm 常用快捷键思维导图!
收藏 | 深度学习专项课程精炼图笔记!
笔记 | 手把手教你使用PyTorch从零实现YOLOv3
笔记 | 如何深入理解计算机视觉?(附思维导图)
笔记 | 深度学习综述思维导图(可下载)
笔记 | 深度神经网络综述思维导图(可下载)
总结 | 2019年人工智能+深度学习笔记思维导图汇总
点个在看支持一下吧
10倍!微软开源深度学习优化库DeepSpeed,可训练1000亿参数模型相关推荐
- 微软开源深度学习优化库 DeepSpeed,可训练 1000 亿参数的模型
人工智能的最新趋势是,更大的自然语言模型可以提供更好的准确性,但是由于成本.时间和代码集成的障碍,较大的模型难以训练.微软日前开源了一个深度学习优化库 DeepSpeed,通过提高规模.速度.可用性并 ...
- 微软开源深度学习优化库 DeepSpeed 连登 GitHub 趋势榜!
[编者按]近期,深度学习社区发生了一件大事:微软研究院发布了图灵自然语言生成模型T-NLG,据称这是史上最大的自然语言处理模型.T-NLG拥有170亿个参数,性能远胜于其他大型深度学习语言模型,例如B ...
- 基于微软开源深度学习算法,用 Python 实现图像和视频修复
作者 | 李秋键 编辑 | 夕颜 出品 | AI科技大本营(ID:rgznai100) 图像修复是计算机视觉领域的一个重要任务,在数字艺术品修复.公安刑侦面部修复等种种实际场景中被广泛应用.图像 ...
- 28款GitHub最流行的开源机器学习项目,推荐GitHub上10 个开源深度学习框架
20 个顶尖的 Python 机器学习开源项目 机器学习 2015-06-08 22:44:30 发布 您的评价: 0.0 收藏 1收藏 我们在Github上的贡献者和提交者之中检查了用Python语 ...
- 基于PyTorch、易上手,细粒度图像识别深度学习工具库Hawkeye开源
转载自丨机器之心 鉴于当前领域内尚缺乏该方面的深度学习开源工具库,南京理工大学魏秀参教授团队用时近一年时间,开发.打磨.完成了 Hawkeye--细粒度图像识别深度学习开源工具库,供相关领域研究人员和 ...
- GitHub 上 57 款最流行的开源深度学习项目【转】
GitHub 上 57 款最流行的开源深度学习项目[转] 2017-02-19 20:09 334人阅读 评论(0) 收藏 举报 分类: deeplearning(28) from: https:// ...
- ARM_NEON_CNN编程 SIMD单指令多数据流 intrinsics指令 内联汇编 CNN卷积网络优化 深度学习优化
ARM_NEON_CNN编程 SIMD单指令多数据流 intrinsics指令 内联汇编 CNN卷积网络优化 深度学习优化 博文末尾支持二维码赞赏哦 _ 本文github 神经网络arm neon加速 ...
- 专治“炼丹侠”各种不服:1分钟就能搞个AI应用 | 最新开源深度学习框架工具套件TinyMS问世...
贾浩楠 金磊 发自 凹非寺 量子位 报道 | 公众号 QbitAI "炼丹侠"们苦当前深度学习框架久矣. 本来,AI框架的初衷是简化.加速和优化开发流程.但是轮子这么多,有从学界走 ...
- 2017年深度学习优化算法最新进展:如何改进SGD和Adam方法?
2017年深度学习优化算法最新进展:如何改进SGD和Adam方法? 深度学习的基本目标,就是寻找一个泛化能力强的最小值,模型的快速性和可靠性也是一个加分点. 随机梯度下降(SGD)方法是1951年由R ...
最新文章
- LeetCode简单题之至少是其他数字两倍的最大数
- html5简单拖拽实现自动左右贴边+幸运大转盘
- 你有哪些deep learning(rnn、cnn)调参的经验?
- tomcat 和 jdk 版本 对应关系
- C语言hw,[c语言]EmailAddresses(for hw)
- 手把手教你建github技术博客
- How Nokia both helped and hindered Microsoft's earnings
- epoll非阻塞IO
- python循环体执行的次数与其他不同的是_【单选题】下面Python循环体执行的次数与其他不同的是( )...
- php 常用函数 180,php 部分常用函数
- 本地HTML打不开 总打开360页面,彻底解决IE浏览器打不开网页时自动跳转到hao.360.cn导航页的问题-网络教程与技术
-亦是美网络...
- 计算年龄:DATEDIF函数
- pkg打包node项目
- 创建LV报错/dev/vgdata/data: not found: device not cleared Aborting. Failed to wipe start of new LV.
- Due to limitations in metric names, topics with a period ('.') or underscore ('_') could collide. To
- DM36x IPNC远程升级
- NYOJ_170聪明的kk
- Android post参数太长请求失败问题解决
- 学历的事情,你要反省,太没有效率,太托,托墨迹,太没有决断力,太TM纠结了。
- 防火门监控系统在智能建筑消防的重要性及应用介绍
热门文章
- 数学rect什么意思_数学怎么审题?孩子必须知道的几个点!
- python打开文件对话框_python实战演练:如何通过对话框打开文件并对文件进行对比...
- 不能从远程创建com+对象_红蓝对抗攻防实战:寻找COM对象
- JSP和Tag之文件上传
- 内网服务器文件如何加密,局域网共享文件如何加密?
- ds1302模块 树莓派_树莓派用4g模块实现三网通开机自启动
- c++ string截取字符串_String类的常见用法
- Anaconda安装新模块
- mybatis逆向工程generatorConfiguration详细配置
- 路由器配置——广播多路访问链路上的OSPF