面向深度神经网络的特定领域架构(上)

简介: 面向深度神经网络的特定领域架构(上)

随着 AI 对算力的需求不断增长,以 TPU 为代表的面向 DNN 的特定领域架构为 DNN 计算提供了几十倍的性能提升以及能效优化。本文基于谷歌真实业务场景数据,介绍了 TPU 相对 CPU/GPU 的实际性能、能效指标。原文: A Domain-Specific Architecture for Deep Neural Networks


摩尔定律的终结使人们意识到特定领域架构才是计算的未来。谷歌的张量处理单元(TPU)就是一个开创性的例子,自从 2015 年首次部署以来,已经为超过 10 亿人提供了服务。TPU 运行深度神经网络(DNN)的速度比同时代 CPU 和 GPU 要快 15 到 30 倍,能效比同类技术的 CPU 和 GPU 高 30 到 80 倍。


所有指数定律都有终结的时候[26]。


1965 年,Gordon Moore 预测芯片的晶体管数量将每一两年翻一番。尽管 Communications 杂志 2017 年 1 月的封面报道认为:"关于摩尔定律死亡的报道被大大夸大了",但摩尔定律确实正在终结。2014 年推出的 DRAM 芯片包含 80 亿个晶体管,而 160 亿个晶体管的 DRAM 芯片要到 2019 年才量产,但摩尔定律预测 DRAM 芯片的规模应该会扩大 4 倍。2010 年的英特尔至强 E5 微处理器有 23 亿个晶体管,而 2016 年的至强 E5 有 72 亿个晶体管,与摩尔定律相差 2.5 倍。半导体技术仍然在继续演进,但比过去慢很多。


另一个没那么出名但同样重要的观察是 Dennard Scaling。Robert Dennard 在 1974 年发现,当晶体管变小时,功率密度是不变的。如果晶体管的线性尺寸缩小 2 倍,那就可以提供 4 倍的晶体管数量。如果电流和电压也都缩小 2 倍,那么功率就会下降 4 倍,从而在相同频率下得到相同的功率。Dennard Scaling 在首次被观察到 30 年后就结束了,不是因为晶体管没有继续缩小,而是因为电流和电压无法在保证可靠的情况下不断下降。


计算机架构师们利用摩尔定律和 Dennard Scaling 通过增加资源、采用复杂的处理器设计和内存层次结构,提高指令的并行性,从而在程序员不知情的情况下提升了性能。不幸的是,架构师们最终耗尽了可以有效利用的指令级并行性。2004 年,Dennard Scaling 的结束和缺乏更多(有效的)指令级并行性,迫使业界从单核处理器芯片转向多核处理器。


重要见解

  • 虽然 TPU 是特定应用集成电路,但通过支持基于 TensorFlow 框架编程的神经网络,用以驱动谷歌数据中心的许多重要应用,包括图像识别、语言翻译、搜索和游戏。
  • 通过利用专门用于神经网络的芯片资源,TPU 在全球超过 10 亿人日常使用的实际数据中心工作负载上比通用计算机提高了 30-80 倍的性能。
  • 神经网络推理阶段通常需要服从严格的响应时间限制,这降低了通用计算机技术的有效性,这些计算机通常运行速度较快,但在某些情况下性能不佳。


image.png


Gene Amdahl 在 1967 年提出的一个观点现在来看仍然正确,这一观点说明增加处理器数量带来的收益会逐渐递减。Amdahl 定律说,并行化的理论速度提升受到任务顺序部分的限制,如果任务的 1/8 是串行的,即使其余部分很容易并行,而且架构师增加能够增加 100 个处理器,其速度提升最多是原来性能的 8 倍。


图 1 显示了过去 40 年里这三个定律对处理器性能的影响。按照目前的速度,标准处理器基准性能在 2038 年前不会翻倍。


image.png

图 1. 按照 Hennessy 和 Patterson[17]的说法,我们绘制了过去 40 年 32 位和 64 位处理器内核每年最高 SPECCPUint 性能;面向吞吐量的 SPECCPUint_rate 也反映了类似的情况,并在几年后逐渐平稳。


由于晶体管技术没有多大进步(反映了摩尔定律的终结),每平方毫米芯片面积的峰值功率在增加(由于 Dennard Scaling 的终结),但每芯片功率预算没有增加(由于电迁移和机械及热限制),而且芯片设计师已经转向多核(受 Amdahl 定律的限制),架构师们普遍认为在性能-成本-能耗方面进行重大改进的唯一途径是特定领域架构[17]。


云上大型数据集和为其提供动力的众多计算机之间的协作使机器学习取得了显著进步,特别是在 DNN 方面。与其他领域不同,DNN 具有广泛的适用性。DNN 的突破包括将语音识别的单词错误率相对传统方法降低了 30%,这是 20 年来最大的进步[11]; 将 2011 年以来进行的图像识别比赛的错误率从 26%降低到 3.5%[16][22][34]; 在围棋中击败人类冠军[32]; 提高搜索排名; 等等。虽然 DNN 架构只能适用于某个较小的领域,但仍然有许多应用。


神经网络以类似大脑的功能为目标,基于简单的人工神经元: 基于非线性函数(例如max(0,value))及其输入的加权和(weighted sum of the inputs)。这些人工神经元按层组织,一个层的输出成为下一层的输入,DNN 的"深度"部分就来自于多层的处理。因为云上大型数据集允许通过使用额外的更大的层来捕捉更高层次的模式或概念来建立更精确的模型,而 GPU 能够提供足够的算力来开发这些模型。


DNN 的两个阶段被称为训练(或学习)和推理(或预测),类似于开发和生产。训练 DNN 一般需要几天时间,但训练好的 DNN 可以在几毫秒内完成推理或预测。开发者选择层数和 DNN 类型(见"深度神经网络的类型"),训练决定权重。几乎所有训练都是以浮点方式进行的,这也是 GPU 在训练中如此受欢迎的原因之一。


深度神经网络的类型

目前有三种 DNN 在谷歌数据中心很受欢迎:

  • 多层感知器(MLP, Multi-layer perceptron) 。对于多层感知器,每个新层都是一组由先前所有输出(完全连接)的加权和组成的非线性函数;
  • 卷积神经网络(CNN, Convolutional neural network) 。在卷积神经网络中,后面的每个层是一组来自前一层输出的空间上邻近的子集的加权和的非线性函数,权重在空间上重复使用; 以及
  • 循环神经网络(RNN), Recurrent neural network) 。对于 RNN,每个后续层是前一层状态的加权和的非线性函数的集合。最流行的 RNN 是长短期记忆(LSTM, long short-term memory),LSTM 的艺术在于决定要忘记什么,以及把什么作为状态传递到下一层。权重在不同步骤中被重复使用。


一个被称为"量化(quantization)"的步骤将浮点数转化为足以用于推理的窄整数(通常只有 8 位)。与 IEEE 754 的 16 位浮点乘法相比,8 位整数乘法所需能耗和芯片面积可减少 6 倍,而整数加法的优势是能耗减少 13 倍,面积减少 38 倍[10]。


表 1 针对三种类型的 DNN 分别例举了两个例子,代表了 2016 年谷歌数据中心 95%的 DNN 推理工作量,我们将其作为基准。这些 DNN 通常是用 TensorFlow 编写的[1],代码很短,只有 100 到 1500 行。这些例子代表了在主机服务器上运行的较大应用程序的小组件,这些应用程序可能是数千到数百万行的 C++代码,通常是面向最终用户的,从而需要严格的响应时间限制。


image.png


表 1. 截至 2016 年 7 月,6 个 DNN 应用(每种 DNN 类型 2 个应用)代表了 TPU 95%的工作量。列是 DNN 名称; 代码行数; DNN 类型和层数; FC 是全连接; Conv 是卷积; Vector 是二进制运算; Pool 是 pooling,在 TPU 上做非线性裁剪; 非线性函数; 权重数; 运算强度; 批量大小; 以及截至 2016 年 7 月的 TPU 应用普及度。多层感知器(MLP)是 RankBrain[9]; 长短时记忆(LSTM)是 GNM Translate 的一个子集[37]; 卷积神经网络(CNN)是 Inception 和 DeepMind AlphaGo[19][32]。ReLU 代表 Rectified Linear Unit,是函数 max(0,value)。


如表 1 所示,每个模型需要 500 万到 1 亿权重,需要消耗大量时间和资源来访问(参见"能耗比例")。为了分摊访问成本,推理或训练期间,通过在独立示例之间重用相同的权重从而提高性能。


能耗比例(Energy Proportionality)

热设计功率(TDP, Thermal design power)影响到电源供应成本,数据中心必须在硬件满功率运行时才能提供足够的电力和制冷。然而由于一天中的工作负荷并不相同,电力成本是基于平均消耗的。Barroso 和 Hölzle[4]发现服务器只有在不到 10%的时间里是 100%繁忙的,因此提出了能耗比例,认为服务器耗电量应与工作量成正比。图 4 中对能耗的估计基于谷歌数据中心 TDP 的一部分。

image.png

由于工作负载利用率不同,我们测量了运行生产程序 CNN0 的三台服务器的性能和功率,然后基于服务器芯片数量将其归一化。

上图显示,TPU 功率最低,每芯片 40W,但能耗比例很差(谷歌 TPU 设计时间较短,无法纳入许多节能功能)。Haswell CPU 在 2016 年有最好的能耗比例。在 TPU-Haswell 组合系统中,CPU 的工作量减少了,因此 CPU 功率也减少了。因此,Haswell 服务器加上四个低功耗 TPU 使用不到 20%的额外功率,但因为有四个 TPU 和两个 CPU,运行 CNN0 比单独的 Haswell 服务器快 80 倍。


TPU 的起源、架构和实现


早在 2006 年开始,谷歌就考虑在其数据中心部署 GPU、现场可编程门阵列(FPGA, , field programmable gate array)或特定应用集成电路(ASIC, application-specific integrated circuit)。结论是,少数可以在特殊硬件上运行的应用可以利用谷歌大型数据中心的过剩容量免费实现,而且很难在此基础上有所改进。这种情况在 2013 年发生了变化,当时有一个预测,即谷歌用户每天使用 3 分钟基于语音识别 DNN 的语音搜索,使谷歌数据中心的计算需求增加了一倍,因此使用传统 CPU 将会非常昂贵。于是谷歌启动了一个高优先级项目,快速生产用于推理的定制芯片,并购买现成的 GPU 用于训练,其目标是将性价比提高 10 倍。由于这一任务,只花了 15 个月的时间就完成了 TPU 的设计、验证、制造和部署。


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


谷歌工程师从系统角度优化了设计。为了减少与主机 CPU 的互动,TPU 运行整个推理模型,但不止支持 2013 年的 DNN,还提供了匹配 2015 年及以后的 DNN 的灵活性。


图 2 是 TPU 的框图。TPU 指令通过 PCIe Gen3 x16 总线从主机发送至指令缓冲区,内部块通常由 256 字节宽的路径连接在一起。从右上角开始,矩阵乘法单元是 TPU 的核心,有 256×256 个 MAC,可以对有符号或无符号整数进行 8 位乘法和加法。16 位的乘积被收集在矩阵单元下面的 4M 字节 32 位累加器中,4M 代表 4,096 个 256 元素的 32 位累加器。矩阵单元每周期产生一个 256 元素的部分和。


image.png


图 2. TPU 框图和平面布置图。主要计算部分是黄色的矩阵乘法单元,它的输入是蓝色的带权重 FIFO 和蓝色的统一缓冲器,输出是蓝色的累加器。黄色的激活单元执行非线性功能。右边的 TPU 芯片平面图显示蓝色存储器占 35%,黄色计算单元占 35%,绿色 I/O 占 10%,红色控制只占芯片的 2%。在 CPU 或 GPU 中,控制部分要大得多(而且更难设计)。


矩阵单元权重通过片上"权重 FIFO"分阶段进行,该 FIFO 从我们称之为"权重存储器"的片外 8GB 字节 DRAM 读取。对于推理,权重是只读的,8GB 字节支持许多同时活跃的模型。权重 FIFO 的深度为 4 层,中间结果被保存在 24M 字节的片上"统一缓冲区"中,可以作为矩阵单元的输入。可编程 DMA 控制器将数据传入或传出 CPU 主机存储器和统一缓冲区。为了能够在大规模可靠部署,内外部存储器内置了硬件错误检测和纠正功能。


TPU 微架构背后的理念是让矩阵单元保持忙碌。为了达到这个目的,读取权重的指令遵循解耦访问/执行的理念[33],因此可以在发送地址后以及从权重存储器获取权重前完成。如果没有活跃输入或权重数据没有准备好,矩阵单元将暂停执行。


由于读取大型静态随机存取存储器(SRAM, static random-access memory)比计算的能耗更大,矩阵单元通过"收缩执行(systolic execution)",即通过减少统一缓冲区的读写来节省能耗[23],因此依赖不同来源的数据以固定时间间隔到达阵列单元,并将其合并。体现为给定 65,536 个元素的向量矩阵乘法操作以对角线波阵的形式在矩阵中移动。权重被预先加载,并随着新区块的第一个数据的推进波生效。控制和数据是流水线式的,这给程序员一种错觉,即 256 个输入被一次性读取,并立即更新 256 个累加器中的一个位置。从正确性的角度来看,软件不知道矩阵单元的收缩性,但为了性能,必须考虑单元的延迟。


TPU 软件堆栈必须与那些为 CPU 和 GPU 开发的软件兼容,以便应用程序可以快速移植到 TPU 上。在 TPU 上运行的那部分应用程序通常是用 TensorFlow 编写的,并被编译成可以在 GPU 或 TPU 上运行的 API[24]。


CPU, GPU, TPU 平台


大多数架构研究论文都基于模拟运行小型、容易移植的基准测试,预测可能的性能。本文不是这样,而是对 2015 年以来在数据中心运行的真实大型生产工作负载的机器进行回顾性评估,其中一些机器由超过 10 亿人常规使用。如表 1 所示,这 6 个应用代表了 2016 年 TPU 数据中心 95%的使用量。


由于我们要测量的是生产工作负载,所以比较的基准平台也必须可以部署在谷歌数据中心,和生产工作负载运行环境一致。谷歌数据中心的大量服务器和大规模应用的可靠性要求意味着机器必须至少能对内存错误做出检查。由于 Nvidia Maxwell GPU 和最近的 Pascal P40 GPU 不检查内部内存错误,因此没法满足谷歌大规模部署的严格可靠性要求。


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


image.png


表 2. 基准服务器采用 Haswell CPU、K80 GPU 和 TPU。Haswell 有 18 个核心,K80 有 13 个处理器,GPU 和 TPU 使用 Haswell 服务器作为主机。芯片工艺单位是 nm。TDP 代表热设计功率; TOPS/s 是 10^12 次操作/秒; 内存带宽是 GB/s。TPU 芯片的大小不到 Haswell 芯片的一半。

image.png

表 3. 2015 年至 2017 年,Nvidia GPU 发布与云计算部署之间的差距[5][6]。GPU 的世代是 Kepler、Maxwell、Pascal 和 Volta。


一些计算机架构师对于从公布产品直到芯片、板卡和软件都准备好并能可靠服务于数据中心客户所需要的时间没有概念。表 3 指出,从 2014 年到 2017 年,商业云公司部署 GPU 的时间差是 5 到 25 个月。因此,与 2015 年的 TPU 相比,对应的 GPU 显然是 Nvidia K80,它采用相同的半导体工艺,并在 TPU 部署前六个月发布。


每块 K80 卡包含两个芯片,并在内部存储器和 DRAM 上内置了错误检测和纠正功能。每台服务器最多可以安装 8 个 K80 芯片,这就是我们的基准配置。CPU 和 GPU 都使用大型芯片封装,大约为 600mm2,是 Core i7 的三倍。

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
目录
相关文章
|
3月前
|
机器学习/深度学习 PyTorch 算法框架/工具
PyTorch 中的动态计算图:实现灵活的神经网络架构
【8月更文第27天】PyTorch 是一款流行的深度学习框架,它以其灵活性和易用性而闻名。与 TensorFlow 等其他框架相比,PyTorch 最大的特点之一是支持动态计算图。这意味着开发者可以在运行时定义网络结构,这为构建复杂的模型提供了极大的便利。本文将深入探讨 PyTorch 中动态计算图的工作原理,并通过一些示例代码展示如何利用这一特性来构建灵活的神经网络架构。
273 1
|
4月前
|
机器学习/深度学习 算法 网络架构
【YOLOv8改进 - Backbone主干】EfficientRep:一种旨在提高硬件效率的RepVGG风格卷积神经网络架构
【YOLOv8改进 - Backbone主干】EfficientRep:一种旨在提高硬件效率的RepVGG风格卷积神经网络架构
|
4月前
|
机器学习/深度学习 计算机视觉 异构计算
【YOLOv8改进 - Backbone主干】ShuffleNet V2:卷积神经网络(CNN)架构
【YOLOv8改进 - Backbone主干】ShuffleNet V2:卷积神经网络(CNN)架构
|
9天前
|
网络协议 数据挖掘 5G
适用于金融和交易应用的低延迟网络:技术、架构与应用
适用于金融和交易应用的低延迟网络:技术、架构与应用
36 5
|
2月前
|
边缘计算 人工智能 安全
5G 核心网络 (5GC) 与 4G 核心网:架构变革,赋能未来
5G 核心网络 (5GC) 与 4G 核心网:架构变革,赋能未来
134 6
|
2月前
|
存储 监控 物联网
蜂窝网络基础架构详解:从基站到核心网
蜂窝网络基础架构详解:从基站到核心网
227 9
|
2月前
|
编解码 人工智能 文件存储
卷积神经网络架构:EfficientNet结构的特点
EfficientNet是一种高效的卷积神经网络架构,它通过系统化的方法来提升模型的性能和效率。
57 1
|
2月前
|
传感器 监控 物联网
无线传感器网络的基本架构及其广泛应用
无线传感器网络的基本架构及其广泛应用
229 0
|
3月前
|
边缘计算 物联网 5G
软件定义网络(SDN)的未来趋势:重塑网络架构,引领技术创新
【8月更文挑战第20天】软件定义网络(SDN)作为新兴的网络技术,正在逐步重塑网络架构,引领技术创新。随着5G、人工智能、边缘计算等技术的不断发展,SDN将展现出更加广阔的应用前景和市场潜力。未来,SDN有望成为主流网络技术,并在各行各业推动数字化转型。让我们共同期待SDN技术带来的更加智能、安全和高效的网络体验。
|
3月前
|
运维 安全 SDN
网络拓扑设计与优化:构建高效稳定的网络架构
【8月更文挑战第17天】网络拓扑设计与优化是一个复杂而重要的过程,需要综合考虑多方面因素。通过合理的拓扑设计,可以构建出高效稳定的网络架构,为业务的顺利开展提供坚实的支撑。同时,随着技术的不断进步和业务需求的不断变化,网络拓扑也需要不断优化和调整,以适应新的挑战和机遇。

热门文章

最新文章