【编者按】近期,深度学习社区发生了一件大事:微软研究院发布了图灵自然语言生成模型T-NLG,据称这是史上最大的自然语言处理模型。T-NLG拥有170亿个参数,性能远胜于其他大型深度学习语言模型,例如BERT和GPT-2。很难想象训练如此大规模的模型需要多少计算量。微软在宣布这一消息的同时,还开源了训练T-NLG背后的技术:DeepSpeed,该库中包括新型并行优化器ZeRO。

而从本周四开始,DeepSpeed就登上了GitHub Trending榜,至今仍保持在Top 5的位置,目前已获得1500多star,并有不断上涨的趋势。

作者 | Jesus Rodriguez

译者 | 弯月

整理 &责编 | 夕颜

出品 | CSDN(CSDNnews)

通过提高规模、速度、可用性并降低成本,DeepSpeed可以在当前一代的GPU集群上训练具有超过1000亿个参数的深度学习模型,极大促进大型模型的训练。同时,与最新技术相比,其系统性能可以提高5倍以上。

根据微软的介绍,DeepSpeed库中有一个名为 ZeRO (零冗余优化器,Zero Redundancy Optimizer)的组件,这是一种新的并行优化器,它可以大大减少模型和数据并行所需的资源,同时可以大量增加可训练的参数数量。研究人员利用这些突破创建了截至目前最大的公开语言模型——图灵自然语言生成模型(Turing-NLG),它的参数可达170亿,CSDN早前也对此有过详细报道。

T-NLG背后的技术DeepSpeed究竟是怎样一个深度学习库?这个库中包含的新型并行优化器ZeRO又有何特别指出?为何一经推出便广受关注?我们通过这个项目的细节来深入了解一下。

首先放出DeepSpeed GitHub开源地址:https://github.com/microsoft/DeepSpeed

以下为译文:

T-NLG:史上最大规模语言模型

在自然语言模型方面,肯定是模型越大越好。T-NLG(Turing Natural Language Generation)是基于Transformer的生成式语言模型,因此它可以生成单词完成开放式的文本任务。除了能够补齐未完成的句子外,它还可以针对问题直接生成答案,也可以给出输入文档的摘要。在自然语言任务中,模型越大,预训练数据的多样化和全面性越好,在一般化至多种下游任务时的表现也会更好,即使下游任务的训练实例较少的情况下亦是如此。构建大型的多任务模型语言要比为某个语言任务训练新模型更容易。

T-NLG到底有多大?除了170亿个参数外,T-NLG模型还有78个Transformer层,包括4256个隐藏层以及 28 个注意力头。该架构代表了大型自然语言模型的一次巨大的飞跃,如下图所示:

T-NLG的强大不仅在于规模和性能,而且其训练过程也让人叹为观止。虽然利用如今的技术构建大型的NPL模型也没问题,但是训练如此大规模的模型所耗费的巨额成本会让大多数组织望而却步。扩展训练的过程基于两个基本的并行化:数据并行和模型并行。数据并行的重点是在单个节点/设备上扩展训练,而模型并行则寻求将训练分布到多个节点上。然而,这两种技术都面临各自的难题:

  • 数据并行无法减少每个设备的内存占用量:对于拥有超过10亿个参数的模型来说,即使是拥有32GB内存的GPU也会面临内存告急的问题。

  • 由于训练需要细粒度的计算和昂贵的通信,模型并行很难扩展到单个节点之外。模型并行框架常常需要根据实际的模型架构修改大量代码。

为了克服这些难题,微软研究院开发出了自己的优化器,并实现了大型深度学习模型训练的并行化。

ZeRO:兼顾数据并行和模型并行优点,克服局限性

ZeRO(Zero Redundacy Optimizer,零冗余优化器)是一个优化模块,可以最大化内存和扩展效率。在发布T-NLG的同时,微软还发布了一篇研究论文,其中概述了ZeRO背后的细节。从概念上看,这个优化器旨在兼顾数据并行和模型并行优点的同时,努力克服二者的局限性。ZeRO使用一种名叫“ZeRO支持的数据并行”方法,将OGP模型的状态分区(而不是复制)到多个数据并行进程上,消除了数据并行进程之间的内存冗余;并在训练的过程中使用动态通信计划,保证了数据并行的计算粒度和通信量,从而保证了计算/通信的效率。随着数据并行度的增加,这种方法可以线性地减少模型中每个设备占用的内存,同时还可以保持通信量接近正常的数据并行下的通信量。此外,ZeRO支持的数据可以与传统的模型并行方法结合使用,以进一步优化性能。

从算法的角度来看,ZeRO分三个主要阶段,分别对应于优化器状态的分区、梯度的分区和参数的分区。

1. 优化器状态的分区(Optimizer State Partitioning,Pos):在进行数据并行时,内存使用量减少4倍,通信量保持不变。

2. 增加梯度(Gradient)分区(Pos + g):在进行数据并行时,内存使用量减少8倍,通信量保持不变。

3. 增加参数(Parameter)分区(Pos + g + p):内存使用量减少与数据并行度(Nd)呈线性关系。例如,拆分到64个GPU上(Nd = 64)将减少64倍的内存。通信量会增加50%,尚可接受。

分布式训练的开源库中已经包含了ZeRO的第一个实现。

DeepSpeed:模型训练性能提高10倍

微软的DeepSpeed是一个新的开源框架,致力于优化大型深度学习模型的训练。当前版本包括ZeRO的第一个实现以及其他优化方法。从编程的角度来看,DeepSpeed建立在PyTorch之上,并提供了一个简单的API,工程师只需几行代码即可利用训练并行化的技术。DeepSpeed抽象了大规模训练的所有难点,例如并行化、混合精度、梯度累积和检查点等,因此开发人员只需专注于模型的构建。

从功能的角度来看,DeepScale在以下四个方面都有出色的表现:

  • 规模:DeepSpeed提供的系统支持可以运行多达1000亿个参数的模型,与其他训练优化框架相比,提升了10倍。

  • 速度:在最初的测试中,DeepSpeed表现出的吞吐量是其他库的4-5倍。

  • 成本:使用DeepSpeed训练模型的成本比其他方法低三倍。

  • 易用性:DeepSpeed不需要重构PyTorch模型,仅需几行代码即可使用。

对于深度学习社区而言,Turing-NLG是一个重大的里程碑。微软通过开源DeepSpeed和ZeRO的第一个实现,降低了大型深度学习模型训练的门槛,而且还可以帮助我们实现更完整的对话应用程序。

原文链接:

https://towardsdatascience.com/microsoft-open-sources-zero-and-deepspeed-the-technologies-behind-the-biggest-language-model-in-5fc70e331b2d

本文为CSDN编译,转载请注明出处。

【End】

推荐阅读 

☞QQ 群文件紧急扩容;钟南山团队与阿里云联手推进新冠疫苗研发;PhpStorm 2019.3.3 发布| 极客头条

☞离你最近的疫情小区,终于可以自己查了!

☞蚂蚁金服AAAI收录论文曝光,动态网络剪枝方法、无语预训练的网络剪枝技术有重大突破

☞我是如何用6个月,从0编程经验变成数据科学家的?

☞孟岩:疫情带来的暂停,会让区块链与数字经济迎来更大反弹|算力大学视频公开课全文

☞2.7 亿学生宅家上课,家长有意见了......

你点的每一个在看,我认真当成了喜欢

猛戳“阅读原文”,填写中国远程办公-调查问卷

微软开源深度学习优化库 DeepSpeed 连登 GitHub 趋势榜!相关推荐

  1. 10倍!微软开源深度学习优化库DeepSpeed,可训练1000亿参数模型

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 编辑:Sophia 计算机视觉联盟  报道  | 公众号 CVLianMeng 转载于 :微软 AI博士笔记系列推荐 ...

  2. 微软开源深度学习优化库 DeepSpeed,可训练 1000 亿参数的模型

    人工智能的最新趋势是,更大的自然语言模型可以提供更好的准确性,但是由于成本.时间和代码集成的障碍,较大的模型难以训练.微软日前开源了一个深度学习优化库 DeepSpeed,通过提高规模.速度.可用性并 ...

  3. 深度学习模型大合集:GitHub 趋势榜第一,已斩获 8000+ 星

    点击"小詹学Python",选择"星标"公众号 重磅干货,第一时间送达 本文转载自机器之心,禁二次转载 最近,威斯康辛大学麦迪逊分校统计学助理教授.机器学习和深 ...

  4. 深度学习模型大合集:GitHub趋势榜第一,两天斩获2000星

    机器之心报道 参与:路 最近,威斯康辛大学麦迪逊分校统计学助理教授.机器学习和深度学习研究者 Sabastian Raschka 在 GitHub 上创建了一个项目,包含大量深度学习架构.模型和 ti ...

  5. 基于微软开源深度学习算法,用 Python 实现图像和视频修复

    ‍‍ 作者 | 李秋键 编辑 | 夕颜 出品 | AI科技大本营(ID:rgznai100) 图像修复是计算机视觉领域的一个重要任务,在数字艺术品修复.公安刑侦面部修复等种种实际场景中被广泛应用.图像 ...

  6. 价值1.4万元的课程讲义开源,fast.ai发布新书源代码,登GitHub趋势榜第一

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 转载自量子位 价值2000美元的AI线上课程讲义,现在已经开源了. 一直致力于AI ...

  7. 基于PyTorch、易上手,细粒度图像识别深度学习工具库Hawkeye开源

    转载自丨机器之心 鉴于当前领域内尚缺乏该方面的深度学习开源工具库,南京理工大学魏秀参教授团队用时近一年时间,开发.打磨.完成了 Hawkeye--细粒度图像识别深度学习开源工具库,供相关领域研究人员和 ...

  8. GitHub 上 57 款最流行的开源深度学习项目【转】

    GitHub 上 57 款最流行的开源深度学习项目[转] 2017-02-19 20:09 334人阅读 评论(0) 收藏 举报 分类: deeplearning(28) from: https:// ...

  9. 自动特征工程、NAS、超参调优和模型压缩,微软开源的NNI一库搞定!

    点击我爱计算机视觉标星,更快获取CVML新技术 2018年9月,微软亚洲研究院发布了第一版 NNI (Neural Network Intelligence) ,目前已在 GitHub 上获得 3.8 ...

最新文章

  1. python 定义空集合 和定义空字典的
  2. Iframe上传文件
  3. JAVA数据库连接的另一种实现及简单的数据插入及显示
  4. 阿里NIPS 2017论文解读:如何降低TensorFlow训练的显存消耗?
  5. springboot 远程日志
  6. go get github.com/astaxie/beego 没有反应
  7. 前端程序员容易忽视的一些基础知识
  8. vns可变领域_技师可变工程师!
  9. Principle for Mac:让你五分钟即可制作出一个具有完整交互动画的原型
  10. 工作笔记 - Android make文件学习(主要是编译Android apk)
  11. 微信小程序之----问题
  12. nginx 与php版本,nginx-php不同版本问题
  13. 微软推出 Power Platform 漏洞奖励计划
  14. 07《基于深度学习的车标识别方法研究》学习总结
  15. ubuntu下查看opencv版本
  16. MAC安装中文输入法Rime
  17. SpringMVC:生成Excel和PDF
  18. 自己使用的文本编辑器全部采用Tahoma字体
  19. 基于docker搭建l2tp
  20. Echarts 饼图设置标签颜色(单个标签颜色、多个标签颜色)

热门文章

  1. drawOval(int x,int y,int width,int height)函数
  2. 结对编程——paperOne基于java的四则运算 功能改进
  3. 今天讲座的感悟--java
  4. 《TensorFlow 2.0深度学习算法实战教材》学习笔记(四、TensorFlow 进阶)
  5. 【OpenCV应用】python处理行李图像匹配项目——sift函数
  6. 欣赏多彩的计算机作品教案,三年级上信息技术教案-欣赏多彩的计算机作品(一)云南版...
  7. oracle 建立一个游戏库,Power Designer怎么新建Oracle数据?建立Oracle数据教程分享
  8. php curl header 下载_PHP通过curl下载文件到浏览器
  9. 《推荐系统学习(二)》PCA降维方法的数学推导
  10. rust笔记5结构体