前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >鹅厂内部万亿大模型训练加速框架上线公有云!

鹅厂内部万亿大模型训练加速框架上线公有云!

作者头像
腾讯云开发者
发布2023-03-24 18:10:13
2K1
发布2023-03-24 18:10:13
举报

👉腾小云导读

随着ChatGPT的兴起,人们越来越重视大参数规模训练模型的重要性。但是在不断增加参数规模的情况下,模型所需的算力和存储需求也在不断提高。为了减少训练大模型所需的成本,腾讯推出了 AngelPTM 训练框架。鉴于最近大模型的火热趋势,我们决定将内部成熟落地的 AngelPTM 框架推广给广大公有云用户,以帮助广大开发爱好者实现业务降本增效。

👉看目录,点收藏

1 AngelPTM技术原理简介

1.1 ZeRO-Cache 优化策略

    1.2 统一视角存储管理

    1.3 统一视角存储管理

    1.4 统一视角存储管理

    1.5 统一视角存储管理

    1.6 统一视角存储管理

    1.7 从面向集群到面向应用的调度编排

2 大模型训练加速效果

3 总结

最近 ChatGPT 凭借其强大的语言理解能力、文本生成能力、对话能力等在多个领域均取得了巨大成功,掀起了新一轮的人工智能浪潮。ChatGPT、GPT3、以及 GPT3.5 都是基于 Transformer 架构堆叠而成。研究发现,随着训练数据量和模型容量的增加可以持续提高模型的泛化能力和表达能力,研究大模型成为了近两年的趋势。国内外头部科技公司均对此有布局,发布了若干千亿规模以上的大模型,如下图所示:

近几年 NLP 预训练模型规模的发展,模型已经从亿级发展到了万亿级参数规模。具体来说,2018 年 BERT 模型最大参数量为 3.4 亿,2019 年 GPT-2 为十亿级参数的模型。2020 年发布的百亿级参数规模的有 T5 和 T-NLG,以及千亿参数规模的 GPT-3。在 2021 年末,Google 发布了 SwitchTransformer,首次将模型规模提升至万亿参数。然而 GPU 硬件发展的速度难以满足 Transformer 模型规模发展的需求。近四年中,模型参数量增长了十万倍,但 GPU 的显存仅增长了 4 倍。

举例来说,万亿规模的模型训练仅参数和优化器状态便需要 1.7TB 以上的存储空间,至少需要 425 张 A100-40G,这还不包括训练过程中产生的激活值所需的存储。在这样的背景下,大模型训练不仅受限于海量的算力, 更受限于巨大的存储需求。

业内大模型预训练的解决方案主要包括微软的 DeepSpeed 和英伟达的 Megatron-LM。DeepSpeed 引入 ZeRO(Zero Redundancy Optimizer )优化器,将模型参数、梯度、优化器状态按需分配到不同的训练卡上,满足大模型对存储的极致要求;Megatron-LM 基于 3D 并行(张量并行、流水并行、数据并行)将模型参数进行切分,满足大模型在有限显存资源下的训练诉求。

腾讯内部也有非常多的大模型预训练业务,为了以最小的成本和最快的性能训练大模型,太极机器学习平台对 DeepSpeed 和 Megatron-LM 进行了深度定制优化,推出了 AngelPTM 训练框架。2022 年 4 月腾讯发布的混元 AI 大模型便是基于 AngelPTM 框架训练而来。下面将为大家详细介绍:

01

AngelPTM 技术原理简介

1.1 ZeRO-Cache 优化策略

ZeRO-Cache 是一款超大规模模型训练的利器,如下图所示,其通过统一视角去管理内存和显存,在去除模型状态冗余的同时扩大单个机器的可用存储空间上限,通过 Contiguous Memory 显存管理器,管理模型参数的显存分配/释放进而减少显存碎片,通过多流来均衡各个硬件资源的负载,通过引入 SSD 进一步扩展单机模型容量。

ZeRO-Cache概图

1.2 统一视角存储管理

大模型训练时模型状态都位于 CPU 内存中,在训练时会拷贝到 GPU 显存,这就导致模型状态的冗余存储(CPU 和 GPU 同时存在一份),此外大模型的训练中会用到大量的 pin memory,pin memory 的使用会提升性能,但同时也会导致物理内存的大量浪费,如何科学合理的使用 pin memory 是 ZeRO-Cache 着重要解决的问题。

本着极致化去冗余的理念,AngelPTM 引入了 chunk 对内存和显存进行管理,保证所有模型状态只被存储一份,通常模型会存储在内存 or 显存上,ZeRO-Cache 引入异构统一存储,采用内存和显存共同作为存储空间,击破了异构存储的壁垒,极大扩充了模型存储可用空间,如下图左侧所示:

统一视觉存储管理

在 CPU 内原生 Tensor 的底层存储机制对于实际占用的内存空间利用率极不稳定,对此问题 AngelPTM 实现了 Tensor 底层分片存储,在极大的扩展了单机可用存储空间的同时,避免了不必要的 pin memory 存储浪费,使得单机可负载的模型上限获得了极大提升,如上图右侧所示。

1.3 ZeRO-Cache 显存管理器

PyTorch 自带的显存管理器可以 Cache 几乎所有显存,进行二次快速分配,在显存压力不大的情况下,这种显存分配方式可以达到性能最优,但是对于超大规模参数的模型,就会导致显存压力剧增,且由于梯度参数频繁的显存分配导致显存碎片明显增多,PyTorch Allocator 尝试分配显存失败的次数增加导致训练性能急剧下降。

为此,ZeRO-Cache 引入了一个 Contiguous Memory 显存管理器,如下图所示,其在 PyTorch Allocator 之上进行二次显存分配管理,模型训练过程中参数需要的显存的分配和释放都由 Contiguous Memory 统一管理,在实际的大模型的训练中其相比不使用 Contiguous Memory 显存,分配效率以及碎片有显著提升,模型训练速度有质的飞越。

ZeRO-Cache 显存管理器

1.4 PipelineOptimizer

ZeRO-Infinity 利用 GPU 或者 CPU 更新模型的参数,特别是针对大模型,只可以通过 CPU 来更新参数,由于 CPU 更新参数的速度与 GPU 更新参数有数十倍的差距,且参数更新几乎可以占到整个模型训练时间的一半,在 CPU 更新参数的时候 GPU 空闲且显存闲置,造成极大的资源浪费。

如下图所示,ZeRO-Cache 会在模型参数算出梯度之后开始 Cache 模型的优化器状态到 GPU 显存,并在参数更新的时候异步 Host 和 Device 之间的模型状态数据传输,同时支持 CPU 和 GPU 同时更新参数。ZeRO-Cache pipeline 了模型状态 H2D、参数更新、模型状态 D2H,最大化地利用硬件资源,避免硬件资源闲置。

PipelineAdam

此外,AngelPTM 自研了异构 Adafactor 优化器,如下图所示,支持 CPU 和 GPU 同时进行参数的更新,其可以减少 33% 的模型状态存储空间,同时可提高模型训练精度。

异构Adafactor

1.5 多流异步化

大模型训练过程中有大量的计算和通信,包括 GPU 计算、H2D 和 D2H 单机通信、NCCL 多机通信等,涉及的硬件有 GPU、CPU、PCIE 等。

如下图所示,ZeRO-Cache 为了最大化地利用硬件,多流异步化 GPU 计算、H2D 和 D2H 单机通信、NCCL 多机通信,参数预取采用用时同步机制,梯度后处理采用多 buffer 机制,优化器状态拷贝采用多流机制。

多流计算通信

1.6 ZeRO-Cache SSD 框架

为了更加低成本地扩展模型参数,如下图所示,ZeRO-Cache 进一步引入了 SSD 作为三级存储,针对 GPU 高计算吞吐、高通信带宽和 SSD 低 PCIE 带宽之间的 GAP,ZeRO-Cache 放置所有 fp16 参数和梯度到内存中,让 foward 和 backward 的计算不受 SSD 低带宽影响,同时通过对优化器状态做半精度压缩来缓解 SSD 读写对性能的影响。

ZeRO-Cache SSD框架

02

大模型训练加速效果

测试使用的方案版本信息如下:

方案

DeepSpeed

Megatron-DeepSpeed

社区方案

0.8.1+258d2831

7212b58

AngelPTM 方案

0.6.1+474caa20

c5808e0

注意:其他环境,例如 OS/python/CUDA/cuDNN/pytorch 等版本二者一致。

最大容纳模型规模

同等模型规模训练性能

多机扩展比

千亿模型性能

注意:4机32卡训练性能提升比例(26.8%)相比单机有所下降主要是由于网络带宽限制。这里使用的是 100Gbps RDMA 网络,未来腾讯云会推出更高带宽 RDMA 的高性能计算集群,预期性能提升会与单机接近。

03

总结

AngelPTM 已加入 TACO Train 加速组件,助力大模型训练显存上限、性能大幅提高。

腾讯云秉承为客户解决实际业务难题,创造增量价值的初衷,不仅要让客户在云上业务可靠运行,还要辅助客户真正发挥出云服务器的算力性价比优势。我们希望通过 TACO Train、TACO Infer、qGPU 共享技术等软件附加值产品,助力客户提升算力效率,降低业务成本,形成可持续发展的长期合作模式。

TACO Train 新增 AngelPTM 训练加速组件,结合高性能计算集群 HCC,可以实现:

  • AngelPTM 将单机 A100 40G 容纳的模型规模提升了94.71%
  • 基于社区方案能容纳的最大模型规模,AngelPTM 性能提升了44.42%
  • 千亿模型规模下,AngelPTM 多机扩展比接近线性

未来,除了 AngelPTM 大模型加速组件,TACO Train 还会推出 TCCL 集合通信库,动态编译特性支持等。相信随着 TACO Train 的不断发展,使用 TACO Train 的性能收益将会越来越高。

以上是本次分享全部内容,欢迎大家在评论区分享交流。如果觉得内容有用,欢迎转发~

-End-

原创作者|腾讯云异构计算专家级工程师 冯克环

技术责编|腾讯云异构计算专家级工程师 冯克环

最近微信改版啦

很多开发者朋友反馈收不到我们更新的文章

大家可以关注并点亮星标

不再错过小云的知识速递🥹

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-03-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯云开发者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 01
  • 02
  • 03
    • AngelPTM 已加入 TACO Train 加速组件,助力大模型训练显存上限、性能大幅提高。
    相关产品与服务
    对象存储
    对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档