锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

为什么 AI 芯片时代必然到来——从TPU开始的几十倍性能之旅

时间:2023-08-04 01:37:00

核心提示:ACM 通讯在线杂志近期刊登了一篇作者来自谷歌的文章,带领我们重新审视了近几十年的半导体发展历程,以及 AI 研究、应用人员们如今已经接受了的问题:专用处理器为什么好、为什么火起来。

编者按:ACM 通讯(ACM Communications)在线杂志近期刊登了一篇作者来自谷歌的文章,带领我们重新审视了近几十年的半导体发展历程,以及 AI 研究、应用人员们如今已经接受了的问题:专用处理器为什么好、为什么火起来。值得注意的是,这篇文章的作者之一正是谷歌 TPU 团队成员、UC 伯克利大学退休教授、2017 年图灵奖获得者 David Patterson。全文编译如下。

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

核心观点

· 虽然 TPU 是一种专用,但它运行的程序来自 TensorFlow 框架下的神经网络,驱动了谷歌数据中心的许多重要应用,包括图像识别、翻译、搜索和游戏。

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

 ·   神经网络的推理阶段通常会有严格的响应时间要求,这降低了通用计算机所使用技术的有效性;通用计算机通常运行得较快,但某些情况下也会较慢。

所有指数增长都将有结尾

1965 年,据创始人之一的 Gordon Moore 预测,芯片中的晶体管数量每一两年都会增加一倍。尽管 2017 年 1 月的 ACM 通讯封面呼吁道:“担心我会终结简直是杞人忧天”,摩尔定律确实还是寿终正寝了。2014 年推出的 芯片包含了 80 亿个晶体管,而在人们的预测中即使到了 2019 年,带有 160 亿个晶体管的 DRAM 芯片也不会大规模生产,但根据摩尔定律的预测,四年里晶体管数量应该变成四倍多。2010 年款的英特尔至强 E5 处理器拥有 23 亿个晶体管,而 2016 年的至强 E5 也只有 72 亿个晶体管,或者说比摩尔定律预计的数值低 2.5 倍——显然,纵使半导体行业还在进步,但其脚步已十分缓慢。

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

计算架构师们一直笃定摩尔定律和 Dennard Scaling,并通过复杂的处理器设计和内存层次结构,将资源转化为性能,这些设计利用了不同的处理指令的之间的并行性,但架构师们并没有什么编程的知识。ε=(′ο`*))) 唉,于是架构师们最终还是再也找不到新的办法可以利用指令级别的并行性。Dennard Scaling在 2004 年终结了,祸不单行的是继续提升指令级别并行性的方法也开始缺席,这迫使业界只能从单核高耗能处理器转换到多核高效率处理器。

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

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

(图 1. 依照Hennessy和Patterson的理论,我们绘制了过去40年中,32位和64位处理器内核每年最高的SPEUint性能;面向吞吐量的SPECCPUint_rate反映了类似的情况,即使其平稳期延迟了几年) 晶体管看来没什么进步空间了(这反映了摩尔定律的结束),而每平方毫米芯片面积的功耗正在增加(毕竟 Dennard Scaling 也结束了),但人们对于芯片的功率预算却并没有增加(因为电子的移动、机械和发热限制),芯片设计师们已经在充分发挥多核心的能力了(但这也受到阿姆达尔定律的限制),架构师们现在普遍认为,能显著改进性能、价格、能源三者平衡的唯一途径就是特定领域的架构——它们只适用于处理几种特定的任务,但效率非常高。

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

神经网络类似于人脑中神经的功能,基于简单的人工神经元,它们是输入的加权和的非线性函数,例如 max(0,value)。这些人工神经元被分为许多不同的层,其中一层的输出就会作为下一层的输入。深度神经网络中的“深层”代表有多个层,由于云上有极大的数据集,只需换用更大、更多的层就可以构建出更准确的模型,它也就可以获取更高阶抽象的模式或是概念,而 GPU 可以提供足够的计算能力帮我们开发 DNN。

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

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

下表展示了两个例子,共三类、六个 DNN 实例的运行效率——这代表了谷歌数据中心 2016 年 95% 的深度神经网络推理工作负载,我们把它们作为 benchmark。它们在 TensorFlow 中的代码都非常短,只有 100-1500 行。这些例子是主服务器上运行较大应用程序中的小组件,这些大应用可能会由数千到数百万行 C++代码构成。应用程序通常面向用户,这就对响应时间带来了严格的要求。

(表 1. 2016年7月,谷歌TPU上的DNN工作负载。共六种DNN应用(三种DNN类型),代表95%的TPU工作负载) 如表 1 所示,每个模型需要 500 万至 1 亿个权重,即便只是访问这些权重都需要花费大量时间和能耗。为了降低访问成本,在训练或者推理中会针对一批完全不相干的输入样本都使用同样的权重,这种做法可以提高性能。

TPU 起源、架构及实现

早在 2006 年,谷歌就开始考虑在其数据中心部署 GPU(图形处理器),或者 (field programmable gate array,现场可编程门阵列),或者专用集成电路(ASIC)。当时的结论是,能在专门的硬件上运行的应用并不多,它们使用谷歌大型数据中心的富余计算能力即可,基本可以看做是免费的,另外也很难不怎么花钱就带来很大改进。情况在 2013 年出现了变化,当时谷歌用户每天使用语音识别 DNN 语音搜索三分钟,使得谷歌数据中心的计算需求增加了一倍,而如果使用传统的 CPU 将非常昂贵。因此,谷歌启动了一项优先级别非常高的项目,快速生产一款定制芯片用于推理,并购买现成的 GPU 用于训练。谷歌的目标是将性价比提高 10 倍。为了完成这项任务,谷歌在其数据中心设计、验证、构建并部署了 TPU,而这一过程仅仅用了 15 个月。

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

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

图 2:TPU 的架构示意图。TPU 指令通过 PCI-e Gen3x16 总线从主机被发送到指令中。内部计算模块通常通过 256 字节宽度的路径连接在一起。对于右侧的芯片布局图,从右上角开始,矩阵乘法单元是 TPU 的核心,256×256 MAC 可以对有符号或无符号的整型执行 8 位乘法和加法运算。得到的 16 位的结果会存入矩阵计算单元下方的共 4MB 空间的 32 位累加器中。这四个 MiB 代表含有 4,096 个 256 元素的 32 位累加器。矩阵计算单元每周期产生一个 256 元素的部分和。

(图 2. TPU架构示意图及芯片布局图) 矩阵单元的权重通过片内「权重 FIFO」来分级,该 FIFO 从我们称之为「权重存储器」的片外 8GB DRAM 中读取;对于推理,权重仅作读取;8GB 空间可以支持同时激活多个模型。权重 FIFO 有四层深。中间结果保存在 24MiB 的片上「统一缓冲器」中,可以作为矩阵计算单元的输入。可编程 DMA 控制器会z z哎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 数据中心部署,因为生产环境的计算负载也就只能在这里运算。谷歌数据中心的很多服务器和谷歌规模对应用程序可靠性的要求意味着机器必须至少检查内存错误。由于英伟达 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、响应时间、吞吐量

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

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

为了在 TPU 上使用 Roofline 模型,当DNN应用被量化时,我们首先将浮点运算替换成整数运算。由于 DNN 应用的权重通常无法装入片上内存,因此第二个改变就是将运算密度重新定义为每读取 1 字节的权重值时的整数乘积累加运算操作数目,如表1所示。

图 3 展示了单个 TPU、CPU 和 GPU 硅片以 Roofline 模型评估的性能指标,图中是指数坐标。TPU 的 Roofline 模型“倾斜”部分较长,从计算密度角度考虑,这意味着性能更多地受限于内存带宽,而不是计算能力峰值。六个应用中有五个都接近天花板,MLP 和 LSTM 受限于内存,CNN 受限于计算。

(图 3:TPU、CPU和GPU在 Roofline 模型上的性能表现。五角星表示TPU,三角形表示英伟达Tesla K80 GPU,圆表示英特尔酷睿处理器(Haswell);所有TPU五角星都与其他两种芯片的 Roofline 模型持平或在后者之上) 如图 3 所示,在 Haswell 以及 K80 上,这六个 DNN 应用距离 Roofline 天花板的距离都大于 TPU 上的距离。响应时间是原因所在。这些应用中的很多个是面向终端用户服务的一部分。研究表明,即使响应时间的些微增加都会导致用户使用该服务的

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章