Norman P. Jouppi, Cliff Young, Nishant Patil, David Patterson 作者

2017图灵奖得主:通用芯片每年仅提升3%,神经专用架构才是未来

2017 年图灵奖获得者、《计算机体系结构:量化研究方法》一书的作者、谷歌杰出工程师 David Patterson 等人近日在 ACM Communications 上撰文介绍了对于计算芯片架构未来的展望。作者认为深度神经网络加速的特定领域架构将成为未来主流,而随着制程提升的困难,通用计算芯片现在每年的提升仅有 3%,或许在 2038 年以前性能都无法翻倍。

摩尔定律的终结将使特定领域的架构成为计算的未来。一个开创性的例子就是谷歌 2015 年推出的张量处理单元(TPU),目前已经在为超过十亿人提供服务。TPU 使深度神经网络(DNN)的计算速度提高了 15-30 倍,能耗效率比现有类似技术的 CPU 和 GPU 提高了 30-80 倍。

本文要点

  • 虽然 TPU 是一种专用集成电路,但它适用于神经网络框架 TensorFlow 下的大量程序,驱动了谷歌数据中心的许多重要应用,包括图像识别、翻译、搜索和游戏。

  • 通过专门为神经网络重新分配芯片计算资源,TPU 在真实数据中心负载环境下效率要比通用类型的计算机高 30-80 倍,目前已为全球 10 亿人服务。

  • 神经网络的推理阶段通常遵循严格的响应时间限制,这降低了通用计算机所使用技术的效率,该通用计算机通常运行得较快,但某些情况下也会较慢。

1965 年英特尔创始人之一戈登·摩尔预测芯片中的晶体管数量每两年会增加一倍。尽管 2017 年 1 月的 ACM Communications 封面呼吁道:「说我要终结还为时过早了」,摩尔定律确实寿终正寝。2014 年推出的 DRAM 芯片包含了 80 亿个晶体管,而在人们的预测中即使到了 2019 年,带有 160 亿个晶体管的 DRAM 芯片也不会大规模生产——如果看摩尔定律的话,四年里晶体管数量应该变成四倍多。2010 年款的英特尔至强 E5 处理器拥有 23 亿个晶体管,而 2016 年的至强 E5 也只有 72 亿个晶体管,或者说比摩尔定律预计的数值低 1.5 倍。毫无疑问,半导体行业还在不断进步,但其步伐已经放缓。

Dennard Scaling 是一个鲜为人知,但同样重要的观察结果,Robert Dennard 在 1974 年认为,晶体管不断变小,但芯片的功率密度不变。如果晶体管尺寸线性缩小了二分之一,那么同样面积上芯片中晶体管的数量就会变为 4 倍。同时,如果电流和电压都降低了二分之一,它所使用的功率将下降 4 倍,在相同的频率下提供相同的功率。Dennard Scaling 在被发现的 30 年后结束,其原因并不是因为晶体管的尺寸不再缩小,而是因为电流和电压不能在继续下降的同时保持可靠性了。

计算架构师们一直信奉摩尔定律和 Dennard Scaling,并通过复杂的处理器设计和内存层次结构,将资源转化为性能,而在这其中并没有顾及到程序员知识中各指令之间的并行性。不幸地是,架构师们最终耗尽了可以有效利用的指令的并行性。2004 年 Dennard Scaling 的结束,以及缺乏更有效指令级并行性方法的状况,迫使业界选择从单核高耗能处理器转换到多核高效率处理器。

今天我们遵守吉恩·阿姆达尔(IBM 著名工程师,阿姆达尔定律的提出者)在 1967 年提出的定律,该定律认为不断增加处理器数量会导致性能提升的递减。阿姆达尔定律说,并行计算的理论加速受到任务顺序部分的限制;如果任务的 1/8 是串行的,则最大加速比原始性能高 8 倍——即使任务的其余部分很容易并行,并且架构师增加了 100 个处理器也是如此。

下图显示了过去四十年以来,上述三大定律对处理器性能的影响。按照目前的速度,标准处理器的性能在 2038 年以前不会翻倍。

图 1. 依照 Hennessy 和 Patterson 的理论,我们绘制了过去 40 年中,32 位和 64 位处理器内核每年最高的 SPECCPUint 性能;面向吞吐量的 SPECCPUint_rate 反映了类似的情况,即使其平稳期延迟了几年。

晶体管看来不会再有很大提升了(这反映了摩尔定律的结束),而每平方毫米芯片面积的功耗正在增加(Dennard Scaling 也结束了),但人们对于芯片功率的预算却并没有增加(因为电子移动、机械和发热限制),芯片设计师们已经在充分发挥多核心的能力了(但这也受到阿姆达尔定律的限制),架构师们现在普遍认为,在性能效率上进行重大改进的唯一途径是特定领域的架构——它们只适用于处理特定的任务,但效率非常高。

在云端的大型数据集和大量计算机之间的协作使得机器学习近年来有了很大的发展,特别是在深度神经网络(DNN)方面。与一些其他领域不同,DNN 应用方面很广泛。DNN 的突破包括将语音识别的错词率降低了 30%(近 20 年来的最大进步);自 2011 年以来,将图像识别的错误率从 26% 降低至 3.5;在围棋上击败了人类世界冠军;提升了搜索排名等等。单个 DNN 架构或许应用范围很窄,但这种方法仍然催生出了大量应用。

神经网络一定程度上模拟了人类大脑中神经的功能,基于简单的人工神经元 - 输入的加权和的非线性函数(例如 max(0,value))。这些人工神经元被集中到一层,一层的输出是下一层的输入。深度神经网络中的「深度」代表有多个层,由于云中的大数据集,我们可以使用更大、更多的层来让神经网络获取更抽象、更准确的概念,而 GPU 会帮助我们快速进行计算。

DNN 运行的两个阶段被称为训练(或学习)和推理(或预测),分别指代发展与生产。训练一个 DNN 可能需要数天,但训练好的 DNN 进行推理只需要几毫秒。针对不同的应用,开发者需要选择神经网络的类型和层数,并训练出合适的权重。几乎所有的训练都是浮点运算,这就是 GPU 在深度学习时代如此受欢迎的原因之一。

被称为「量化」的转换将浮点数转为整数——通常只有 8 位——这种程度通常足以满足推断要求了。与 IEEE 754 16 位浮点乘法相比,8 位整数乘法只需要 1/6 的能耗,占用 1/6 的空间,而整数加法也能带来 13 倍能耗和 38 倍空间的提升。

下表展示了两个例子,共六种 DNN 的运行效率——这代表了谷歌数据中心 2016 年 95% 的深度神经网络工作负载。它们在 TensorFlow 中的代码都非常短,只有 100-1500 行。这些示例代表在主机服务器上运行较大应用程序的小组件,可以是数千到数百万行 C ++代码。应用程序通常面向用户,这会导致严格的响应时间限制。
表 1. 2016 年 7 月,谷歌 TPU 上的 DNN 工作负载。共六种 DNN 应用(三种 DNN 类型),代表 95% 的 TPU 工作负载。

如表 1 所示,每个模型需要 500 万至 1 亿个权重,这可能需要花费大量时间和能耗来访问。为了压缩访问成本,在一批独立示例中重复使用相同的权重可以提高性能。

TPU 起源、架构及实现

早在 2006 年,谷歌就开始考虑在其数据中心部署 GPU——现场可编程门阵列(field programmable gate array,FPGA)或专用集成电路(ASIC)。结论是,只有为数不多的能在特殊硬件上运行的应用可以免费使用谷歌大型数据中心的过剩容量,而且很难自由改进。情况在 2013 年出现了转机,当时谷歌用户每天使用语音识别 DNN 语音搜索三分钟,使得谷歌数据中心的计算需求增加了一倍,而如果使用传统的 CPU 将非常昂贵。因此,谷歌启动了一项优先级别非常高的项目,快速生产一款定制芯片用于推理,并购买现成的 GPU 进行训练。谷歌的目标是将性价比提高 10 倍。为了完成这项任务,谷歌在其数据中心设计、验证、构建并部署了 GPU,而这一过程仅仅用了 15 个月。

为了降低部署延迟的风险,谷歌工程师将 TPU 设计成 I/O 总线上的协处理器,并允许它像 GPU 一样插入现有服务器,而不是使 TPU 与 CPU 紧密集成。此外,为了简化硬件设计和调试,主机服务器将指令发送给 TPU 令其执行,而不是让 TPU 去自行获取。因此,TPU 在理念上更接近浮点单元(FPU)协处理器,而不是 GPU。

谷歌工程师将 TPU 看做一个系统进行优化。为了减少与主机 CPU 的交互,TPU 运行整个推理模型,但提供了与 2015 年及以后的 DNN 相匹配的灵活性,而不局限于 2013 年的 DNN。

图 2:TPU 的框图。TPU 指令通过外围组件互连高速(PCIe)Gen3x16 总线从主机被发送到指令缓冲器中。内框通常通过 256 字节宽度的路径连接在一起。从右上角开始,矩阵乘法单元为 TPU 的核心,256×256 MAC 可以对有符号或无符号的整数执行 8 位乘法和加法运算。这个 16 位的产品聚集在矩阵单元下方的 32 位累加器的 4MB 中。这四个 MiB 代表含有 4,096, 256 个元素的 32 位累加器。矩阵单元每周期产生一个 256 元素的部分和。

图 2. TPU 框图及平面图

矩阵单元的权重通过片内「权重 FIFO」来分级,该 FIFO 从我们称之为「权重存储器」的片外 8GB DRAM 中读取;为了推理,权重仅作读取;8GB 支持很多同时激活的模型。权重 FIFO 有四层深。中间结果保存在 24MiB 的片上「统一缓冲器」中,可以作为矩阵单元的输入。可编程 DMA 控制器将数据传送到 CPU 主机存储器和统一缓冲器或从二者中传送数据。为了能在谷歌的规模上可靠地部署,内存储器和外存储器包含内置错误检查与纠正硬件。

TPU 微架构的原理是保持矩阵单元繁忙。为了实现这一目标,读取权重的指令遵循解耦访问/执行原理,因为它可以在发送地址之后、从权重存储器中取出权重之前完成。如果输入激活或权重数据没有准备好,矩阵单元将停止。

由于读取大型静态随机存取存储器(Static Random-Access Memory,SRAM)消耗的算力比算法多得多,矩阵单元使用「脉动执行」通过减少统一缓冲器的读写来节约能量。它依赖于来自不同方向的数据,这些数据以规则的间隔到达阵列中的单元,这些方向在间隔中组合到一起。给定的含有 65,536 个元素的向量-矩阵乘法运算作为对角波前在矩阵中移动。这些权重被预加载,并随着新数据块的第一个数据一起随着前进波生效。控制和数据被流水线化,给程序员一种错觉,即 256 个输入被一次读取,并立即更新 256 个累加器中每个累加器的一个位置。从正确性的角度来看,软件不了解矩阵单元的脉动特性,但为了提高性能,必须考虑单元的延迟。

TPU 软件栈必须与为 CPU 和 GPU 开发的软件栈兼容,这样应用可以快速移植到 TPU。在 TPU 上运行的应用部分通常用 TensorFlow 编写,并编译成可以在 GPU 或 TPU 上运行的 API。

CPU、GPU、TPU 平台

多数体系架构研究的论文基于运行小型、易于移植的基准测试模拟,这些基准测试可以预测潜在的性能(如果实施的话)。本文与上述论文不同,而是对 2015 年以来数据中心运行真实、大型生产工作负载的机器进行回顾性评估,其中一些机器的日常用户超过 10 亿。表 1 中列出的六种应用代表了 2016 年 TPU 数据中心 95% 的使用。

由于正在测量生产工作负载,要比较的基准平台也必须可以在 Google 数据中心部署,因为这是生产工作负载运行的唯一处所。谷歌数据中心的很多服务器和谷歌规模对应用程序可靠性的要求意味着机器必须至少检查内存错误。由于英伟达 Maxwell GPU 和最近的 Pascal P40 GPU 不检查内存中的错误,在谷歌的规模中部署这些处理器并满足谷歌应用程序的严格可靠性要求是不可行的。

表 2 显示了部署在谷歌数据中心的服务器,可以将其与 TPU 进行比较。传统的 CPU 服务器以英特尔的 18 核双插槽 Haswell 处理器为代表,该平台也是 GPU 或 TPU 的主机服务器。谷歌工程师在服务器中使用四个 TPU 芯片。

表 2. 基准测试的服务使用 Haswell CPU、K80 GPU 及 TPU。

很多计算机架构师没有考虑到从产品发布到芯片、主板、软件可以服务于数据中心的用户之间的时间差。表 3 指出,2014 年至 2017 年,商业云公司的 GPU 时间差为 5 至 25 个月。因此,可以媲美 2015 年 TPU 的 GPU 显然是英伟达 K80,后者处于相同的半导体工艺中,在 TPU 部署前六个月发布。

表 3. 2015 年到 2017 年,英伟达 GPU 从发布到云端部署的时间差距,这 4 代 GPU 分别为 Kepler、Maxwell、Pascal 和 Volta 架构。

每个 K80 卡包含两个裸片,并提供内部存储器和 DRAM 的错误检测和纠正机制。这种服务器中最多可安装 8 个 K80 裸片,这也是我们基准测试的配置。CPU 和 GPU 都使用大型芯片:大约 600 mm2,或者是英特尔 Core i7 的三倍。

性能:Roofline、响应时间、吞吐量

为了说明这六个 app 在三个处理器上的性能,我们使用了高性能计算机群(HPC)的 Roofline 性能模型。这一简单的视觉模型虽然不完美,但揭示了性能瓶颈出现的原因。该模型背后的假设是 app 无法适应片上缓存,因此它们要么计算受限,要么内存带宽受限。对于 HPC,y 轴表示每秒浮点运算性能(单位是 FLOPS),因此峰值计算率形成了 roofline 的「平缓」区(flat part)。x 轴表示运算密度(operational intensity),单位是 FLOPS/byte。内存带宽表示每秒多少比特,形成了 roofline 的「倾斜」部分(slanted part),因为 (FLOPS/sec)/ (FLOPS/Byte) = Bytes/sec。没有充足的运算密度时,程序受限于内存带宽,性能只能在 roofline 的「倾斜」部分之下。

一个应用的每秒实际计算量与其天花板计算量之间的距离代表了保持运算密度不变时性能提升的潜力;提升运算密度的优化(如缓存块)可能带来更大的性能提升。

为了在 TPU 上使用 Roofline 模型,当 DNN 应用被量化时,我们首先将浮点运算替换成整数运算。由于权重步伐无法正常适应 DNN 应用的片上内存,因此第二个改变就是将运算密度重新定义为每权重比特的整数乘积累加运算(integer multiply-accumulate operations per byte of weights),如表 1 所示。

图 3 展示了单个 TPU、CPU 和 GPU 在 log-log scale 上的 Roofline 模型。TPU 的 Roofline 模型「倾斜」部分较长,其运算密度意味着性能更多地受限于内存带宽,而不是计算峰值。六个应用中有五个都接近天花板,MLP 和 LSTM 受限于内存,CNN 受限于计算。

图 3:TPU、CPU 和 GPU 在 log-log 图上的 roofline 模型。五角星表示 TPU,三角形表示英伟达 Tesla K80 GPU,圆表示英特尔酷睿处理器(Haswell);所有 TPU 五角星都与其他两种芯片的 roofline 模型持平或在后者之上。

如图 3 所示,这六个 DNN 应用与 Haswell 和 K80 roofline 天花板的距离大于与 TPU roofline 天花板的距离。响应时间是原因所在。这些应用中的很多个是面向终端用户服务的一部分。研究表明,即使响应时间的些微增加都会导致用户使用该服务的频率降低。训练可能没有苛刻的响应时间 deadline,但推断通常有,或者说相比于吞吐量,推断更偏好 latency。

例如,按照应用开发者的要求,MLP0 的 99th 百分位响应时间通常为 7ms。(每秒推断和 7ms 的延迟包括服务器主机时间和加速器时间。)如果对响应时间的限制不严格,Haswell 和 K80 分别以 MLP0 最高吞吐量的 42% 和 37% 运行。这些限制也会影响到 TPU,它会以 80% 的吞吐量来运行,更加接近 TPU 的 MLP0 最大吞吐量。与 CPU 和 GPU 相比,单线程 TPU 没有复杂的微架构特征,即消耗晶体管和功率来提高平均性能,而非 99th 百分位的情况,即 TPU 没有缓存、分支预测、乱序执行、多处理、推测预取(speculative prefetching)、地址合并(address coalescing)、多线程、上下文切换(context switching)等。极简是领域专用处理器的优势。

表 4 显示了每个芯片的相对推断性能底线,包括两个加速器 vs. CPU 的主机服务器开销,展示了这六个 DNN 应用相对性能的加权平均值,表明 K80 芯片速度是 Haswell 的 1.9 倍,TPU 芯片速度是 Haswell 的 29.2 倍,TPU 芯片速度是 GPU 的 15.3 倍。

表 4:在 DNN 工作负载下 K80 GPU 芯片和 TPU 芯片与 CPU 的性能比。加权平均值使用了表 1 中六个 app 的实际混合。

性价比、总体拥有成本(TCO)、性能/功耗(Performance/Watt)

大批量购买计算机时会更多地考虑性价比而非性能。数据中心最好的成本指标是总体拥有成本(TCO)。组织(如谷歌)购买数千张芯片时所支付的实际价格取决于与相关企业的谈判沟通。由于涉及商业机密,我们无法公开此类价格信息或数据。但是,功率与 TCO 相关,我们可以公开每台服务器的功耗数,因此这里我们使用性能/功耗比代替性能/TCO 比。这部分我们对比了整个服务器而不是单个芯片。图 4 显示了 K80 GPU 和 TPU 相对于 Haswell CPU 的平均性能/功耗比。我们给出了两种不同的性能/功耗比计算。我们展示了两种不同的性能/功耗计算方法。第一种「total」包括计算 GPU 和 TPU 的性能/功耗时主机 CPU 服务器所消耗的功率;第二种「incremental」从 GPU 和 TPU 中减去了主机 CPU 服务器所消耗的功率。

图 4:GPU 服务器与 CPU 服务器的性能/功耗对比(蓝色条)、TPU 服务器与 CPU 服务器的功耗对比(红色条)、TPU 服务器与 GPU 服务器的功耗对比(橙色条)。TPU' 是使用 K80 的 GDDR5 内存将 TPU 进行改进后的芯片。

对替代性 TPU 设计的评估

和 FPU 类似,TPU 协同处理器比较容易评估,因此我们为六个应用创建了一个性能模型。模型结果和硬件性能的平均差距小于 10%。

我们使用性能模型来评估一款假设的 TPU 芯片 TPU'(使用同样的技术再用 15 个月我们也能设计出这款芯片)。更具攻击性的逻辑合成和模块设计仍然可以把时钟频率提高 50%。为 GDDR5 内存设计接口电路(就像 K80 那样)可以将权重内存带宽(weight memory bandwidth)提高四倍,将 roofline 脊点从 1350 降到 250。

将时钟频率提高到 1,050 MHz 而不帮助内存并没有什么作用。如果我们使时钟频率为 700MHz,但使用 GDDR5 作为权重内存,则加权平均值飞跃至 3.9。同时实行这两种措施无法改变平均值,因此假设的 TPU' 具备更快的内存。

将 DDR3 权重内存替换成等价的 K80 GDDR5 内存需要将内存通道的数量翻一倍,即 4 个通道。这一改进可以将芯片大小扩大约 10%。GDDR5 还能够将 TPU 系统的功率预算从 861W 提高到 900W 左右,因为每台服务器都有四个 TPU。

图 4 显示,TPU'的总体性能/功耗/芯片是 Haswell 的 86 倍,K80 的 41 倍。其 incremental 指标是 Haswell 的 196 倍,K80 的 68 倍。

讨论

这部分按照 Hennessy 和 Patterson 的谬误-陷阱-反驳格式来展开:

谬误。数据中心的 DNN 推断应用将吞吐量和响应时间置于同等重要的地位。我们惊讶于谷歌 TPU 开发者对响应时间有这么高的要求,2014 年就有人透露:对于 TPU 来说,批尺寸应该足够大,以到达性能峰值或者对延迟的要求不用那么苛刻。一个强大的应用是离线图像处理,谷歌开发者的直觉是,如果交互式服务也需要 TPU,则大部分服务需要累积足够大的批量。即使 2014 年谷歌关注响应时间(LSTM1)的应用开发者称,2014 年的限制是 10ms,而真正向 TPU 移植时 10ms 将被减少至 7ms。很多此类服务对 TPU 的意料之外的要求,以及它们对快速响应时间的影响和偏好,改变了这个等式。应用编写者通常会选择降低延迟,而不是累积更大的批量。幸运的是,TPU 具备一个简单、可重复的执行模型,来满足交互式服务的响应时间要求,此类高峰值吞吐量、小批量大小导致 TPU 具备比当前 CPU 和 GPU 更好的性能。

谬误。K80 GPU 架构很适合进行 DNN 推断。我们发现 TPU 在性能、能耗和成本方面优于 K80 GPU 有五个方面的原因。一,TPU 只有一个处理器,而 K80 有 13 个,单线程当然更容易满足严格的延迟目标。二,TPU 具备一个非常大的二维乘法单元,GPU 有 13 个小的一维乘法单元。DNN 的矩阵相乘密度适合二维阵列中的算术逻辑运算单元。三,二维阵列还能通过避免访问寄存器来促成脉动实现,节约能源。四,TPU 的量化应用使用 K80 并不支持的 8 比特整数而不是 GPU 的 32 比特浮点数。数据小幅度改善的不仅是计算能耗,还能四倍化权重 FIFO 的有效容量和权重内存的有效带宽。(尽管使用的是 8 比特整数,但这些应用被训练来实现与浮点数相同的准确率。)五,TPU 忽略 GPU 需要而 DNN 不需要的特征,从而缩小 TPU 芯片、节约能耗、为其他更新留下空间。TPU 芯片的大小几乎是 K80 的一半,通常运行所需能量是后者的三分之一,而它的内存却是后者的 3.5 倍。这五个因素导致 TPU 在能耗和性能方面优于 K80 GPU 30 倍。

陷阱。在设计领域专用架构时不顾架构历史。不适用通用计算的想法可能适合领域专用架构。对于 TPU 而言,三个重要的架构特征可以追溯到 1980 年代早期:脉动阵列(systolic array)、解耦访问/执行(decoupled access/execute)和复杂的指令集。第一个特征减少了大型矩阵相乘单元的面积和能耗;第二个特征在矩阵相乘单元运算期间并行获取权重;第三个特征更好地利用 PCIe bus 的有限带宽来发送指令。因此,了解架构历史的领域专用架构具备竞争优势。

谬误。如果谷歌对 CPU 使用更加高效,它得到的结果将可以媲美 TPU。由于有效使用高级向量扩展(AVX2)整数支持需要大量工作,最初在 CPU 上只有一个 DNN 有 8 位结果,其收益大约是 3.5 倍。用浮点而不是 roofline 来显示所有 CPU 结果,会更加明确(也不需要太多空间)。如果所有 DNN 都有类似的加速,性能/功耗比将分别从 41 倍和 83 倍降为 12 倍和 24 倍。

谬误。如果谷歌使用合适的新版本,GPU 结果将与 TPU 相匹配。表 3 报告了发布 GPU 和客户何时可以在云中使用 GPU 的区别。与较新的 GPU 进行公平比较将包括新的 TPU,而对于另外的 10W,我们只需使用 K80 的 GDDR5 内存就可以将 28 纳米、0.7GHz、40W TPU 的性能提高三倍。把 TPU 移动到 16 纳米工艺将进一步提高其性能/功耗。16 纳米英伟达 Pascal P40 GPU 的峰值性能是原 TPU 的一半,但在 250 瓦时,能耗却是原来的很多倍。如前所述,缺乏误差检测意味着 Google 无法再去数据中心部署 P40,因此无法在它们身上运行生产工作负载来确定其实际相对性能。

相关研究

两篇介绍 DNN ASIC 的研究文章至少可以追溯到 20 世纪 90 年代初。如 2016 年的《Communications》中所述,DianNao 家族有四种 DNN 架构,通过对 DNN 应用程序中的内存访问模式提供有效的架构支持,可以最大限度地减少片上和外部 DRAM 的内存访问。最初的 DianNao 使用 64 个 16 位整数乘法累加单元的数组。

谷歌 TPU 3.0 于今年 5 月推出,其功能是 2.0 的八倍,性能高达 100petaflops。

DNN 的特定领域架构仍然是计算机架构师的热门话题,主要聚焦于稀疏矩阵架构,这是在 2015 年 TPU 首次部署之后提出的。高效推理机基于第一次传递,通过过滤出非常小的值,将权重数量减少 9 倍左右,然后使用哈夫曼编码进一步缩小数据以提高推理机的性能。Cnvlutin 避免了激活输入为零时的乘法运算,这种几率可以达到 44%,部分原因可能是线性整流函数(ReLU),非线性函数将负值转换为零,使平均性能提高了 1.4 倍。Eyeriss 是一种新颖的低功耗数据流架构,通过游程编码数据利用零来减少内存占用,并通过避免输入为零时的计算来节省功率。Minerva 是一种跨算法、结构和电路学科的协同设计系统,通过用量化数据和小值修剪激活函数的方式把功耗降低到原来的 1/8。2017 年的相关研究是 SCNN——一种稀疏和压缩卷积神经网络的加速器。权重激活函数都被压缩在 DRAM 和内部缓冲器中,从而减少了数据传输所需的时间和能量,并允许芯片存储更大的模型。

2016 年以来的另一个趋势是用于训练的特定领域架构。例如,ScaleDeep 用来对专为 DNN 训练和推理而设计的高性能服务器进行评估,该服务器包含数千个处理器。每块芯片包含计算量大和存储量大的块,比例为 3:1,性能优于 GPU 6~28 倍。它用 16 位或 32 位浮点运算来计算。芯片通过与 DNN 通信模式匹配的高性能互连拓扑连接。和 SCNN 一样,这种拓扑只在 CNN 上评估。2016 年,CNN 仅占谷歌数据中心 TPU 工作量的 5%。计算机架构师期待对其它类型的 DNN 和硬件实现进行 ScaleDeep 评估。


DNN 似乎是 FPGA 作为数据中心计算平台的一个良好用例。部署的一个例子是 Catapult。尽管 Catapult 是在 2014 年公开发布的,但它与 TPU 是同一个时代的,因为 2015 年它与 TPU 同时在微软数据中心部署了 28 纳米 Stratix V FPGA。Catapult 运行 CNN 比普通服务器快 2.3 倍。也许 Catapult 和 TPU 最显著的区别在于,为了获得最佳性能,用户必须使用低级硬件设计语言 Verilog 编写长程序,而不是使用高级 TensorFlow 框架编写短程序;也就是说,「可再编程性」(re-programmability)来自于 TPU 的软件,而不是最快 FPGA 的固件。

总结

尽管 TPU 在 I/O 总线上,并且内存带宽相对有限,限制了其使用(六个 DNN 应用程序中有四个内存受限),但每个周期 65536 次乘法累加的一小部分仍然数目不小,如 roofline 性能模型所示。这个结果表明,Amdahl 定律的「cornucopia 推论」——大量廉价资源的低效利用仍然可以提供颇具性价比的高性能。

我们了解到,推理应用具有严格的响应时间限制,因为它们通常是面向用户的应用;因此,当面对 99% 的延迟期限时,DNN 架构需要表现良好。

TPU 芯片利用其在 MAC 和片上内存的优势运行使用特定领域 TensorFlow 框架编写的短程序,该 TensorFlow 框架比 K80 GPU 芯片快 15 倍,因此能获得 29 倍的性能/功耗优势,这与性能/总拥有成本相关。与 Haswell CPU 芯片相比,对应的比率分别为 29 和 83 倍。

有五个架构因素可以解释这种性能差距:

  • 处理器。TPU 只有一个处理器,而 K80 有 13 个,CPU 有 18 个;单线程使系统更容易保持在固定的延迟限制内。

  • 大型二维乘法单元。TPU 有一个非常大的二维乘法单元,而 CPU 和 GPU 分别只有 18 个和 13 个较小的一维乘法单元;矩阵乘法受益于二维硬件。

  • 脉动阵列。二维组织支持脉动阵列,减少寄存器访问和能量消耗。

  • 8 位整数。TPU 的应用使用 8 位整数而不是 32 位浮点运算来提高计算和内存效率。

  • 弃掉的特征。TPU 放弃了 CPU 和 GPU 所需要但是 DNN 用不到的功能,这使得 TPU 更便宜,同时可以节约资源,并允许晶体管被重新用于特定领域的板载内存。

虽然未来的 CPU 和 GPU 在运行推理时速度更快,但是使用 circa-2015 GPU 内存重新设计的 TPU 将比原来快三倍,并使其性能/功耗优势分别为 K80 和 Haswell 的 70 倍和 200 倍。

至少在过去十年中,计算机架构研究人员一直在发布基于模拟的创新成果,这些成果使用了有限的基准,并声称通用处理器的改进为 10% 或更少,而我们现在报告的收益是原来的十倍不止,这是应用于真实生产应用的真实硬件中部署的特定领域架构的收益。

商业产品之间的数量级差异在计算机架构中很少见,而这甚至可能导致 TPU 成为该领域未来工作的典型。我们预计,其它人将会迎头赶上,将门槛提得更高。


原文链接:https://cacm.acm.org/magazines/2018/9/230571-a-domain-specific-architecture-for-deep-neural-networks/fulltext

产业David Patterson图灵奖体系架构芯片TPU谷歌
3
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

激活函数技术

在 计算网络中, 一个节点的激活函数定义了该节点在给定的输入或输入的集合下的输出。标准的计算机芯片电路可以看作是根据输入得到"开"(1)或"关"(0)输出的数字网络激活函数。这与神经网络中的线性感知机的行为类似。 一种函数(例如 ReLU 或 S 型函数),用于对上一层的所有输入求加权和,然后生成一个输出值(通常为非线性值),并将其传递给下一层。

权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

模式匹配技术

在计算机科学中,模式匹配就是检查特定序列的标记是否存在某种模式的组成部分。 与模式识别相比,匹配通常必须是精确的。 模式通常具有序列或树结构的形式。 模式匹配的使用包括输出令牌序列内的模式的位置(如果有的话),输出匹配模式的某个分量,以及用另一个令牌序列(即搜索和替换)替换匹配模式。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

TensorFlow技术

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。

线性整流函数技术

线性整流函数(Rectified Linear Unit, ReLU),又称修正线性单元, 是一种人工神经网络中常用的激活函数(activation function),通常指代以斜坡函数及其变种为代表的非线性函数。比较常用的线性整流函数有斜坡函数f(x)=max(0, x),以及带泄露整流函数 (Leaky ReLU),其中x为神经元(Neuron)的输入。

张量技术

张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数,这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在 维空间内,有 个分量的一种量,其中每个分量都是坐标的函数,而在坐标变换时,这些分量也依照某些规则作线性变换。称为该张量的秩或阶(与矩阵的秩和阶均无关系)。 在数学里,张量是一种几何实体,或者说广义上的“数量”。张量概念包括标量、矢量和线性算子。张量可以用坐标系统来表达,记作标量的数组,但它是定义为“不依赖于参照系的选择的”。张量在物理和工程学中很重要。例如在扩散张量成像中,表达器官对于水的在各个方向的微分透性的张量可以用来产生大脑的扫描图。工程上最重要的例子可能就是应力张量和应变张量了,它们都是二阶张量,对于一般线性材料他们之间的关系由一个四阶弹性张量来决定。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

卷积神经网络技术

卷积神经网路(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。卷积神经网路由一个或多个卷积层和顶端的全连通层(对应经典的神经网路)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网路能够利用输入数据的二维结构。与其他深度学习结构相比,卷积神经网路在图像和语音识别方面能够给出更好的结果。这一模型也可以使用反向传播算法进行训练。相比较其他深度、前馈神经网路,卷积神经网路需要考量的参数更少,使之成为一种颇具吸引力的深度学习结构。 卷积网络是一种专门用于处理具有已知的、网格状拓扑的数据的神经网络。例如时间序列数据,它可以被认为是以一定时间间隔采样的一维网格,又如图像数据,其可以被认为是二维像素网格。

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

逻辑技术

人工智能领域用逻辑来理解智能推理问题;它可以提供用于分析编程语言的技术,也可用作分析、表征知识或编程的工具。目前人们常用的逻辑分支有命题逻辑(Propositional Logic )以及一阶逻辑(FOL)等谓词逻辑。

语音识别技术

自动语音识别是一种将口头语音转换为实时可读文本的技术。自动语音识别也称为语音识别(Speech Recognition)或计算机语音识别(Computer Speech Recognition)。自动语音识别是一个多学科交叉的领域,它与声学、语音学、语言学、数字信号处理理论、信息论、计算机科学等众多学科紧密相连。由于语音信号的多样性和复杂性,目前的语音识别系统只能在一定的限制条件下获得满意的性能,或者说只能应用于某些特定的场合。自动语音识别在人工智能领域占据着极其重要的位置。

图像处理技术

图像处理是指对图像进行分析、加工和处理,使其满足视觉、心理或其他要求的技术。 图像处理是信号处理在图像领域上的一个应用。 目前大多数的图像均是以数字形式存储,因而图像处理很多情况下指数字图像处理。

摩尔定律技术

摩尔定律是由英特尔创始人之一戈登·摩尔提出来的。其内容为:积体电路上可容纳的电晶体数目,约每隔两年便会增加一倍;经常被引用的“18个月”,是由英特尔首席执行官大卫·豪斯所说:预计18个月会将芯片的性能提高一倍。

深度神经网络技术

深度神经网络(DNN)是深度学习的一种框架,它是一种具备至少一个隐层的神经网络。与浅层神经网络类似,深度神经网络也能够为复杂非线性系统提供建模,但多出的层次为模型提供了更高的抽象层次,因而提高了模型的能力。

暂无评论
暂无评论~