深度学习的异构加速技术(一)效率因通用而怠,构架为 AI 而生

一、概述:通用 == 低效

在开始AI处理器的讨论之前,先上一张经典的类比图:分别以“可编程能力/灵活性”和“开发难度/定制性/计算效率/能耗”为横轴和纵轴,将当前主流处理器CPU、GPU、FPGA、专用ASIC置于下图中。

图1.1 计算平台选择依据

可见,无所不能的CPU,其最大限度的灵活性是以牺牲计算效率和能耗为代价的。FPGA和ASIC则更倾向于针对某一特定应用,达到较高的计算效率和能耗比。无疑,专用ASIC具有最高的计算效率和最低的功耗,但在架构、设计、仿真、制造、封装、测试等各个环节将消耗大量的人力和物力。而在深度学习模型不断涌现的环境下,对CNN、RNN等各个模型分别进行构架设计甚至定制一款独立ASIC是一件非常奢侈的事情,因此在AI处理器的设计上,大家的做法逐渐一致,设计一款在AI领域具备一定通用性的FPGA/ASIC构架,即与GPU类似的领域处理器。使其可以覆盖深度学习中的一类(如常见CNN模型),或多类(如CNN+RNN等)。

二、嵌入式VS云端,不同场景下,AI处理器的两个选择

2.1 AI处理器的发展和现状

伴随着深度学习模型的深化和算力需求的提升,从学术界兴起的AI处理器方案已经迅速蔓延到工业界。目前,各大互联网、半导体、初创公司的方案归纳如表1所示,若感兴趣可转到唐杉同学维护的列表:https://basicmi.github.io/Deep-Learning-Processor-List/。

表1 深度学习处理器方案列表

图1.2 AI处理器的发展和设计目标

AI处理器的发展过程如图1.2所示。在早期,计算规模较小,算力较低,故研发的AI处理器主要针对嵌入式端的应用;随着模型的逐渐加深,对算力的需求也相应增加,导致了带宽瓶颈,即IO问题(带宽问题的成因详见2.2节),此时可通过增大片内缓存、优化调度模型来增加数据复用率等方式解决;当云端的AI处理需求逐渐浮出水面,多用户、高吞吐、低延迟等需求对算力的需求进一步提升,传统的方式已经不能IO问题极大的阻碍了处理器性能。此时,片上HBM(High Bandwidth Memory,高带宽存储器)的出现使深度学习模型完全放到片上成为可能,从而解决了IO瓶颈,使云端的发展方向从解决IO带宽问题,转向解决算力伸缩问题。

到目前为止,以HBM/HMC的应用为标志,云端高性能深度学习处理器的发展共经历了两个阶段:

1 第一阶段,解决IO带宽问题(与嵌入式的方式类似);

2 第二阶段,解决算力伸缩问题。

2.2 带宽瓶颈

第一阶段,囊括了初期的AI处理器,以及至今的大部分嵌入式前段的解决方案,包括第一代TPU、目前的FPGA相关构架、寒武纪的ASIC构架,以及90%以上的学术界成果等。欲达到更高的性能,一个有效的方法是大幅度提升计算核心的并行度,但算力的扩张使IO带宽成为瓶颈。例如,图1.3中的1个乘加运算单元若运行在500MHz的频率下,每秒需要4GB的数据带宽;一个典型的高性能FPGA(以Xilinx KU115为例)共有5520个DSP,跑满性能需要22TB的带宽;而一条DDR4 DIMM仅能提供19.2GB的带宽。因此在第一阶段,设计的核心是,一方面通过共享缓存、数据调用方式的优化等方式提升数据复用率,并利用高带宽的片上缓存减少片外存储器的数据加载。另一方面通过模型优化、低位宽量化、稀疏化等方式简化模型和计算。

数据复用的例子如图像卷积时,对于一张输入的特征图(FeatureMap),其卷积核(Kernel)只需加载一次即可在整张FeatureMap上复用;而增加并行任务数量(Batchsize)可以进一步使同一组Kernel复用于更多FeatureMap。

图1.3 一个乘加单元及其带宽计算

2.3 算力伸缩

尽管片上分布的大量缓存能提供足够的计算带宽,但由于存储结构和工艺制约,片上缓存占用了大部分的芯片面积(通常为1/3至2/3),限制了缓存容量的进一步提升,如图1.4所示。

图1.4 芯片中片上缓存的规模,左图为第一代TPU,蓝色部分为缓存区域,占用芯片面积的37%;右图为寒武纪公司的DiaoNao AI ASIC设计,缓存占面积的66.7%(NBin+NBout+SB)。

而以HBM为代表的存储器堆叠技术,将原本一维的存储器布局扩展到三维,大幅度提高了片上存储器的密度,如图1.5所示,标志着高性能AI处理器进入第二阶段。但HBM在工艺、封装、IP等方面的要求大幅度提升了成本,因此仅出现在互联网和半导体巨头的设计中(NVIDIA、AMD、Google、Intel)。HBM使片上缓存容量从MB级别提升到GB级别,可以将整个模型放到片上而不再需要从片外DDR中加载;同时,堆叠存储器提供的带宽不再受限于芯片IO引脚的制约而提升100倍,使带宽不再是瓶颈。此时,设计的核心在于高效的计算构架、可伸缩的计算规模、和分布式计算能力。

图1.5 HBM与片内垂直堆叠技术

在后续的论述中,这两个阶段的构架方案有较大区别,分别如下;若仅对科技巨头的方案感兴趣,可忽略(二)。为保证论述的一致性,TPU和TPU2的内容合并在(三)中讨论。

深度学习的异构加速技术(二)带宽扼喉下的百花齐放

深度学习的异构加速技术(三)算力释放与异构集群

未完待续。。。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

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

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI研习社

为什么 GPU 会成为通用计算的宠儿?

编者按:文章来源自 Mapd,作者 Jonathan Symonds,AI 研习社编译。 █ 英伟达在 2016 年的强势崛起,GPGPU (GPU 通用计算)...

3245
来自专栏机器人网

一文读懂:无人机无线电干扰原理

1、引言 近年来无人机(本文指民用多轴飞行器)正以空前的速度普及,由此引发的关于安全的忧虑日益增多。许多有关部门甚至个人都希望采取一些措施,阻止无人机飞临敏感区...

3494
来自专栏IT派

AI工程师为什么要了解架构?

为什么AI工程师要懂一点架构? AI 时代,我们总说做科研的 AI 科学家、研究员、算法工程师离产业应用太远,这其中的一个含义是说,搞机器学习算法的人,有时候会...

2773
来自专栏机器之心

深度 | 从GPU制造者到服务器提供商:英伟达的计算平台转型

这是一次巨大的转变,但对所有以计算为中心的平台供应商而言,这个过程终将——在某些情况下逐渐地发生。

860
来自专栏机器之心

业界 | ARM推出新一代移动端CPU和GPU:提升机器学习效率

选自anandtech 机器之心编译 参与:吴攀、蒋思源 在 PC 制造商展示最新和最好的英特尔 CPU 计算机的 2017 台北国际电脑展(Computex...

2075
来自专栏AI科技大本营的专栏

创新工场王咏刚:为什么 AI 工程师要懂一点架构?

AI 时代,我们总说做科研的 AI 科学家、研究员、算法工程师离产业应用太远,这其中的一个含义是说,搞机器学习算法的人,有时候会因为缺乏架构(Infrastru...

2837
来自专栏腾讯高校合作

【犀牛鸟论道】深度学习的异构加速技术(一)

一、概述:通用 == 低效 作为通用处理器,CPU (Central Processing Unit) 是计算机中不可或缺的计算核心,结合指令集,完成日常工作中...

3565
来自专栏Albert陈凯

大数据人工智能词汇索引S大数据人工智能词汇索引S

大数据人工智能词汇索引S S ---- 流处理(Stream processing):流处理被设计来用于持续地进行流数据的处理。与流分析技术(指的是能够持续地计...

3567
来自专栏人工智能头条

为什么 AI 工程师要懂一点架构?

1824
来自专栏王玉伟的专栏

深入理解 CPU 和异构计算芯片 GPU/F10PGA/ASIC

深度学习在线预测、直播中的视频转码、图片压缩解压缩以 HTTPS 加密等各类应用对计算的需求已远远超出了传统 CPU 处理器的能力所及...

3.2K2

扫码关注云+社区