教年轻 AIoT 创业者如何从 0 到 1 实现AIoT 创业项目 了解详情
写点什么

微软提出训练巨型模型的新模式:ZeRO-Offload 可训练高达 700 亿参数的模型

  • 2022-05-06
  • 本文字数:2138 字

    阅读完需:约 7 分钟

微软提出训练巨型模型的新模式:ZeRO-Offload可训练高达700亿参数的模型

它可以在单个 GPU 上训练超过 130 亿个参数的模型,与 PyTorch 等流行框架相比规模增加了 10 倍,而且它不需要数据科学家做任何模型更改,也不需要牺牲计算效率。


资料来源:Jie Ren 等人在arxiv上的文章


巨型模型的训练过程优化正成为 ML 领域的一大趋势。


我们已经见识了谷歌的 Switch Transformers 和 OpenAI 的 GPT-3,现在是时候看看微软新出的 ZeRO-Offload 了。该模型[1]的设计重点在于通过新的优化技巧,将从 GPU 到 CPU 的卸载成本降到最低。它能够训练参数多达 700 亿的模型,这样的数字实在太令人惊叹了。


这个模型的主要卖点之一是:它经过充分优化,可以在单个 GPU 上进行训练,因此,实际上每个人都可以使用它(你用不着购买大量昂贵的硬件才能使用这个模型)。他们主要通过异构深度学习方法来做到这一点,这种方法显著优化了 CPU 与 GPU 之间的协作效率。

背景知识


在我们开始深入研究这个模型之前,我们首先需要了解它所要解决的问题的性质。ML 模型往往会消耗大量内存。为什么?因为它们的参数、梯度和优化器的状态[1]在训练期间必须存储在内存中才行。一个常见的解决方案是将这些模型状态分割在多个 GPU 上,然而这种做法的实用性不高,因为大多数数据科学家并没有那么多 GPU 可用。


其他方法包括将状态保存到硬盘上并重用它,或者以某种方式压缩它们。我们将在本文中讨论的方法则是使用 CPU 的内存。这可能算不上是一种新方法,然而这种方法到目前为止并不是很成功,因为在 GPU 和 CPU 之间有很大的通信成本。


这篇论文的一个独特想法体现在他们寻找解决方案的路径上。他们决定使用数据流图和第一原理分析来建模这个通信问题。而这方面大部分的工作都是为了在 CPU 和 GPU 设备之间高效地划分这些图。

深入研究模型细节


此外,我们的第一原理分析表明,ZeRO-Offload 在最大限度地节省内存,同时最大限度地减少通信开销和 CPU 计算开销方面为大型模型训练提供了一个唯一的最佳解决方案。ZeRO-Offload 是围绕三大支柱设计的:i)效率,ii)可扩展性,和 iii)可用性。


资料来源:Jie Ren 等人在 arxiv 上的文章


图正在成为机器学习中的一个热门话题。它们也是复杂计算机科学问题解决方案的基本组成部分之一(如果读者感兴趣,我建议看看 Dijkstra 的算法)。这篇论文使用的图模型将节点之间的数据流表示为边,将数据量表示为这些边的权重。


这里的一个要点是,论文的作者必须充分利用 GPU 和 CPU 各自的主要优势。虽然 CPU 的计算能力通常不是很高,但如果你把合适的计算需求卸载到它上面,你的训练过程就会变得更顺畅。而这正是他们所做的事情:他们将前向和后向传播过程移到了 GPU 上,并将剩余的计算过程卸载到了 CPU 上。他们称前向和后向传播节点为“超级节点”。能看到计算机系统方面的技巧被用来优化机器学习是很令人欣慰的(我是操作系统和 Linux 内核的忠实粉丝!)。这篇论文可以提醒你,机器学习不仅仅是关于数学和数据分析的学科。


下一部分是最小化 CPU 和 GPU 之间的通信量。要做到这一点,你必须考虑如何才能以最优化的方式切割这些图,因为如果你不能正确地分割它,就只能继续向前和向后发送数据。他们提出了一个解决方案,其中的图有 4 个节点:一个超级节点(传播),一个参数数据节点(p16),一个梯度数据节点(g16),以及一个更新超级节点的节点。他们假设超级节点肯定是与参数数据节点(在 GPU 上)放在一起的,这很合理。


他们做了几个实验来证明这一点,结果内存使用量有了惊人的缩减!这是这篇论文中我最喜欢的部分之一:他们把问题绘成了一个图,然后分配正确的节点,再剖析问题。

单步延迟参数更新技巧


即使在优化了 CPU 和 GPU 之间的通信后,CPU 的算力限制仍然会带来很大的开销。为了解决这个问题,他们引入了一个新颖的参数延迟技巧。


我们开发了单步延迟参数更新(DPU),将 CPU 和 GPU 的计算重叠起来,通过单步延迟参数更新来隐藏 CPU 的计算开销。我们在评估中验证了 DPU 不会影响训练的最终准确性。


资料来源:Jie Ren 等人在 arxiv 上的文章


为了进一步优化 CPU 的计算过程,他们提出了一个优化的Adam算法。如果你不熟悉 Adam(自适应矩估计)算法的话这里简单说一下:它是机器学习中最经常使用的优化算法之一。他们针对 CPU 优化的 Adam 算法需要将[1]参数、梯度、动量和方差放入 CPU 的矢量寄存器。这些寄存器本质上是 CPU 中的存储区域,包含专门为单指令多数据矢量计算设计的操作数。它们也在矢量模式下运行标准的算术运算,并以平铺的方式将所需的数据移动到 GPU 上。这实质上意味着它们是在不重叠的“开放窗口”中移动数据的。


论文中还提到了很多其他方面的优化,但我不想涵盖论文中的每一个细节,我只想给大家展示我眼中最有用和最创新的技巧。

最后的想法和收获


关于巨型模型优化的论文最近频频出新,主要是[1]因为巨型 transformer 的使用率有了惊人的增长。此外,这些 transformer 的大小在不断增加,可数据科学家不应该依赖昂贵的 GPU 和硬件来解决相关问题。我将很快写另一篇文章来对比其中一些巨型模型,因为我目前正在思考这个问题。

参考文献

[1]ZeRO-Offload:让十亿规模的模型训练走向大众化。JieRen、Samyam Rajbhari、Reza Yazdani Aminabadi、Olatunji Ruwasea、、Shuangyan Yang、Minjia Zhang、Dong Li、Yuxiong He。2021 发表于arxiv


原文链接:


https://medium.com/the-techlife/microsoft-zero-offload-democratizing-billion-scale-model-training-e43ad70c287

活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2022-05-06 18:573165
用户头像
刘燕 InfoQ高级技术编辑

发布了 1112 篇内容, 共 455.6 次阅读, 收获喜欢 1946 次。

关注

评论

发布
暂无评论
发现更多内容

Docker新手FAQ系列 1

混沌畅想

【“互联网+”大赛华为云赛道】IoT命题攻略:仅需四步,轻松实现场景智能化设计

华为云开发者联盟

IoT 华为云 LiteOS 互联网+ IoT边缘

工作多年,分享16条职场经验给新人朋友

架构精进之路

职场 成长 经验分享 8月日更

从0开始的TypeScriptの二:类型系统

空城机

JavaScript typescript 8月日更

架构实战营-毕业总结

阿体

听说你对explain 很懂?

艾小仙

sql 大前端

容器最佳实践系列-查看docker的文件系统

混沌畅想

浅谈BU安全建设

I

项目管理 企业安全 BU安全 安全建设

从技术到文案,还回技术么?

escray

学习 极客时间 朱赟的技术管理课 8月日更

毕业设计-电商秒杀系统

chenmin

带你看论文丨全局信息对于图网络文档解析的影响

华为云开发者联盟

文档 CNN网络 图网络 非结构化文档 全局信息

The Data Way Vol.1|风口下的开源市场:如何看待开源与商业的关系?

SphereEx

数据库 开源

iPhone Shortcuts 使用与场景

TroyLiu

iphone 效率工具 快捷指令 shortcuts nfc

手撸二叉树之二叉搜索树中的搜索

HelloWorld杰少

数据结构与算法 8月日更

十大排序算法--桶排序

Ayue、

排序算法 8月日更

vivo 全球商城:优惠券系统架构设计与实践

vivo互联网技术

服务器 架构设计

AI + K8S 驱动存储技术变革

焱融科技

人工智能 Kubernetes 云原生 高性能 存储

使用Grafana显示Prometheu监控

Rubble

Grafana Prometheus 8月日更

kubernetes入门:dashboard可视化界面部署springboot项目

小鲍侃java

8月日更

字节跳动《实时音视频通讯技术》学习笔记之RTC概述及技术简介

Regan Yue

音视频 RTC 8月日更

oeasy教您玩转vim - 11 - # 向前向后

o

万字长文讲透低代码

百度开发者中心

最佳实践 开发者 方法论 低代码 语言 & 开发

架构实战营 毕业设计

Dylan

架构实战营

十万高层齐卸甲,竟无一人有慈心。前阿里员工看阿里高管不法侵害女员工事件

刘悦的技术博客

阿里巴巴 面试 职场 职场 PUA

【“互联网+”大赛华为云赛道】EI命题攻略:华为云EI的能力超丰富,助你实现AI梦想

华为云开发者联盟

大数据 modelarts 大赛 互联网+ 华为云EI

设计电商秒杀系统

thewangzl

iOS开发:上架遇到NSBluetoothAlwaysUsageDescription被拒问题(已解决)

三掌柜

8月日更 8月

【Flutter 专题】73 图解自定义 ACECheckBox 复选框

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 8月日更

简单的Postman,还能玩出花?

码农参上

8月日更

TCP如何进行拥塞控制

W🌥

计算机网络 TCP/IP 8月日更

netty系列之:中国加油

程序那些事

Java Netty nio 程序那些事

  • 扫码添加小助手
    领取最新资料包
微软提出训练巨型模型的新模式:ZeRO-Offload可训练高达700亿参数的模型_AI_Mostafa Ibrahim_InfoQ精选文章