广告

如何突破AI的内存瓶颈?

2021-10-08 Sally Ward-Foxton 阅读:
人工智能(AI)发展到今天,业内批评人士认为,目前内存是其发展的最大瓶颈。因为无法加速处理器和内存之间的数据传输,内存性能瓶颈阻碍了实际应用。本文将探讨CPU和内存之间的瓶颈及未来发展趋势。

人工智能(AI)发展到如今的地步,业内批评人士认为,目前内存是其发展的最大瓶颈——因为无法加速处理器和内存之间的数据传输,内存性能的瓶颈阻碍了实际应用。本文将探讨CPU和内存之间的瓶颈及未来发展趋势。mkKednc

在数据中心内用于训练人工智能模型的AI加速器需要极高的内存带宽。理想情况下,整个模型可以存储在一个处理器中,这种方法能够消除片外内存,但是按照目前的技术发展来看这几乎是不可能的,因为现在大的模型通常都有10亿到万亿个参数。也就是说之前的内存瓶颈使得整个系统受限,而如今数据中心正不遗余力通过构建各种技术来克服内存瓶颈。mkKednc

另一方面,人工智能的“疯狂炒作”阶段逐渐结束,现在到了对未来AI和机器学习技术发展前景和本身缺陷重新评估的时候了,而这也可以称为人工智能技术发展的新纪元。mkKednc

高带宽存储器

目前业界最流行的解决方案是使用高带宽存储器(HBM),这涉及到CPU架构的革新,通常是用一个硅基连接层将4层、8层或者12层DRAM芯片通过3D堆叠方式连接到处理器中。目前业界最新的技术是HBM2E,其单个内存引脚具有高达3.6Gb/s的传输速率,三星和海力士都可提供8层HBM2E堆栈,总容量为16Gb,拥有460GB/s带宽(根据海力士数据,目前主流的DDR5为2.4GB/s,GDDR6为64GB/s)。未来的HBM3可能拥有更快的速度和更高的容量。mkKednc

mkKednc

图1:Nvidia的A100数据中心GPU有6个HBM2E内存进行堆叠(目前量产版只堆了5个内存)。(图片来源:Nvidia)mkKednc

A100 CPU是Nvidia专为旗舰级数据中心设计的专用型CPU,目前提供高达80GB的HBM2E内存和2TB/s的内存带宽,其内部有5个16GB的DRAM Die进行堆叠(图1)。另一个版本采用的是40GB的HBM2E,其总带宽为1.6TB/s,但是其深度学习的人工智能模型训练速度相差了三倍之多。mkKednc

同时,数据中心专用的CPU正在向DRAM“借力”,Intel下一代的至强系列Sapphire Rapids将推出具备HBM的Xeon系列产品。这是Intel第一款采用新的AMX指令拓展的数据中心用CPU(AMX拓展是专门为人工智能浮点运算而设计的指令集),并且可以使用片外的DDR5 DRAM或者HBM内存。mkKednc

Intel高级工程师Arijit Biswas在最近Hot Chips的演讲中说:“CPU可以提升带负载能力,而加速器或者GPU则提升了带宽;目前CPU发展迅猛,使得内存容量和带宽的瓶颈越来越明显,二者没有均衡发展。全新一代的Sapphire Rapids系列原生支持两种内存(DDR和HBM),通过多层内存结构加上内部软件支持,可以让系统得到进一步增强。”mkKednc

Intel的首席工程师Nevine Nassif 也告诉笔者,每一代HBM内存升级都是以裸片面积增大为代价的。兼容HBM的裸片有些与众不同,其内部还包含一个HBM主控芯片(这是有别于DDR5主控的)。在只采用DDR的Sapphire Rapids系列CPU中,Intel在芯片上设计了一个裸片区域,用于进行加密和压缩等功能的加速器;而HBM版本中则没有这些,只保留了数据流加速器,因为设计时为了满足HBM带宽需求,必须对裸片的布局做出一定改变。mkKednc

除了CPU和GPU外,HBM也是FPGA的“座上宾”,Intel的Stratix和Xilinx的Versal FPGA都有HBM版本,一些专用于AI的ASIC也使用HBM,例如腾讯数据中心的AI专用ASIC——Enflame,采用HBM的DTU 1.0设备,专为云AI训练加速进行了优化,该设备拥有采用HBM的高达80T flops(FP16/BF16)的两块芯片,为片上数据网提供512GB/s带宽。mkKednc

mkKednc

图2:Enflame的DTU 1.0数据中心AI加速芯片。(图片来源:Enflame)mkKednc

成本是关键

尽管HBM为数据中心人工智能加速器所需的片外存储器提供了极高的带宽,但仍有一些人认为“不值得”。Graphcore在Hot Chips上的演讲中提到,虽然目前业界的共识是大型人工智能模型训练需要更快的内存带宽和更大的内存容量,而且目前各家也都在研究自己的HBM,但是却忽略了成本、功耗和散热等问题。图3比较了采用不同技术的内存的容量和带宽。mkKednc

 mkKednc

图3:对采用不同技术的内存的容量和带宽进行比较。(图片来源:Graphcore)mkKednc

Graphcore第二代智能处理单元(IPU)采用的是超大SRAM芯片(896MiB)来支持其1472个处理器核心所需要的内存带宽,这样可以尽可能地避免内存带宽不足带来的性能瓶颈。但是人工智能模型太大,不适合片上的型式,而是采用服务器级DDR低带宽远程DRAM来满足存储容量的需求。目前该IPU设备部署到主机处理器上,允许中等规模的模型在一个集群中训练。mkKednc

越来越多的芯片公司将以1美元的性能回报来衡量公司的业绩,Graphcore拒绝HBM的主要原因也似乎是出于成本的考量。“HBM与人工智能CPU融合的净成本是服务器用DDR成本的10倍以上,即便是容量不大的情况下,HBM也占据了整个模块的大部分成本(图4)。如果人工智能模块可以使用DDR,那么它可以在成本同样的情况下拥有更多的处理器核心。”mkKednc

 mkKednc

图4:HBM2内存的成本是DDR4的10倍。(图片来源:Graphcore)mkKednc

40GB的HBM是同一封装内CPU成本的三倍之多,对于同样都是8GB的HBM和DDR4来说,HBM裸片的成本是DDR的两倍,这还不算TSV蚀刻、堆叠、组装和封装成本,以及各个制造商的利润。反观DDR芯片,这些额外增加的成本都不用考虑,用户可以直接从内存制造商手里买来成品,这种插件化生态就是为了减少成本。mkKednc

多核心分布式方案

在Hot chips的众多演讲中,Esperanto也向业界展示了其关于内存瓶颈问题的解决方案,该公司的1000核心RISC-V人工智能加速器目标是超大规模运营商(hyper-scaler)推荐模型推理,而不是传统的人工智能模型训练。Esperanto创始人Ditzel称,客户并不想要250MB的内存,而只需要100MB——他们希望所有的推理任务都在100MB的存储空间内完成,任何超过这个内存容量的任务所需的成本都大得多。mkKednc

CEO Ditzel还补充说,“客户喜欢将大量DRAM与处理器放在同一块卡上,并且建议我们把所有东西都放到这块卡上并使用快速接口。如果通过这种方式支持100GB内存比PCI-E总线快,那么就是一个成功。”mkKednc

我们不妨来比较下Esperanto和其他的数据中心推理加速器的异同,Ditzel说,“其他家关注的是整个处理器的功率,而Esperanto则是将多个低功耗CPU安装在双M.2加速卡上,这样能更好地利用片外存储(图5)。”HBM可以在引脚数少的情况下获得一个非常高的带宽收益,但是HBM也是真的昂贵和功率低。mkKednc

mkKednc

图5:Esperanto的方案是将6个小裸片连接到LPDDR4x。(图源来源:Esperanto)mkKednc

Esperanto多核心方案使得更多的I/O口用于片外DRAM通信,除了6颗CPU芯片,还采用了24颗低价LPDDR4x DRAM芯片,在低电压情况下,其功耗和HBM方案基本一样。因为LPDDR4x的带宽比HBM要低,所以我们通过扩大IO来获得更大的带宽,在加速卡的内存系统上采用了1500bit的内存,对于每个数据引脚来说,必须拥有两个电源和接地引脚,但是这样一来引脚数又太多了。经过Esperanto的内部讨论,决定把整个系统分开,举例来说,192GB的内存容量需要通过822GB/s的带宽进行访问,对于64bit DRAM来说,我们可以分成96x 16bit通道,不仅可以更好地处理内存延迟,还能把功耗控制在120W以内。mkKednc

权重分配

无独有偶,另一家晶圆级人工智能加速器设计公司Cerebras也在Hot Chips上向业界展示了用于解决存储瓶颈的方案——MemoryX(图6),该系统专为高性能计算和科学海量运算设计,可用于CS-2的人工智能加速系统。MemoryX是DRAM和NAND的结合体,并且是在芯片级别合二为一,其内部框架具有极好的兼容性,可容纳从4TB到2.4PB(2000亿到120万亿个)参数,足以容纳世界上最大的人工智能模型。 mkKednc

图6:Cerebras的MemoryX系统是其CS-2晶圆级引擎系统的片外存储器,作用跟片上存储器一样。(图片来源:Cerebras)mkKednc

Cerebras联合创始人兼CEO Sean Lie表示,为了让片外存储表现得和片内存储一样,Cerebras对MemoryX进行了优化,把参数和对应的权重都输入到CPU中,能极大f地消除延迟带来的影响(图7)。mkKednc

mkKednc

图7:Cerebras利用权重分配来消除延迟带来的影响。(图片来源:Cerebras)mkKednc

在系统训练过程中,必须立即访问对延迟敏感的激活存储器。Cerebras设计整个芯片都处于激活状态,系统将绝大多数权重存储在MemoryX中,当系统有需要时输入到CPU中,这样可以最大程度地避免延迟,也可以解决不同层之间的依赖性(在前一层权重分配完成之前就可以开始为新的层分配权重)。mkKednc

同时,更加细分的权重分配能够避免训练迭代之间的依赖,给不同层分配不同的权重能够消除外部调度带来的延迟,从而提升整个系统的性能。mkKednc

(原文刊登于EDN姐妹网站EETimes美国版,参考链接:Solving AI’s Memory Bottleneck,由Jenny Liao编译。)mkKednc

本文为《电子技术设计》2021年10月刊杂志文章,版权所有,禁止转载。免费杂志订阅申请点击这里mkKednc

本文为EDN电子技术设计 原创文章,禁止转载。请尊重知识产权,违者本司保留追究责任的权利。
  • 微信扫一扫
    一键转发
  • 最前沿的电子设计资讯
    请关注“电子技术设计微信公众号”
广告
热门推荐
广告
广告
EE直播间
在线研讨会
广告
广告
面包芯语
广告
向右滑动:上一篇 向左滑动:下一篇 我知道了