如今,有一个词听到耳根生茧却有些触不可及,这个词就是“人工智能”,曾经它活在科幻小说中,如今它活在新闻标题中,然而降临在我们身边,还是一个未知的时间、未知的地点、未知的场景。
自 2016 年 3 月 AlphaGo 战胜李世石,全世界掀起了一场对人工智能的热恋,一个仍在实验室里的襁褓瞬间就成了国民对象。一场 AI 军备竞赛也逐渐浮出水面,无论是科技大佬还是初创公司,谁都不愿错过这场即将爆发的 AI 风暴。
前几天,谷歌又掀起一场 AI 风波,TPU 来袭、剑指 GPU,本来就难分胜负的 AI 芯片之战,更扑朔迷离。
那么本期《趣科技》我们就来讲讲谁是 AI 时代真正的“硬”角色。
最近我们总听到一种论调“中国人工智能直追美国”,而麦肯锡最新研究报告显示,尽管中国在人工智能的论文数量方面超过美国,但是中国 AI 研究的影响力尚不及美国或者英国。这究竟是为什么?为何一个很鼓舞人心的消息后面总有一个残酷的现实。
在人工智能的赛道上,有三大军团,即算法、计算能力、芯片,而核心阵地显然是在硬件方面。我国与美国的差距也主要是在此方面。
目前,在 AI 芯片领域,有几大竞争主力:
- FPGA,现场可编程门阵列,玩家有赛灵思、Altera(已被英特尔收购)、Lattice、Microsemi;
- ASIC,专用集成电路,美国英特尔、高通、微软,英国 Graphcore,中国中科院计算所、地平线机器人等均有布局;
- 类脑芯片,美国 IBM、高通,中国中科院计算所、北京大学、中星微等已有不俗的成绩。
显然,在 GPU 和 FPGA 上我国缺席,在 ASIC 与类脑芯片上也只是一个追随者,这就是与美国的差距所在。而说我们紧追美国也不为过,在 AI 应用层面,在语音识别和定向广告等方面,百度已经走在全球前列。
随着人工智能的大量涌现,AI 芯片市场群雄争霸,厂商纷纷推出新的产品,都想领跑智能时代——但问题是,谁会担当这个角色呢?
目前来看,GPU 是厚积薄发正当时,在深度学习领域发挥着巨大作用;FPGA 被视为 AI 时代的万能芯片,架构灵活独具特色;ASIC 这个后起之秀,被企业视作引发一轮全面的颠覆的杰作。其推动代表之一就是谷歌,2016 年宣布将独立开发一种名为 TPU 的全新的处理系统,而在前几日,这个神秘的 TPU 现真容。谷歌表示 TPU 已经在谷歌数据中心内部使用大约两年,并且 TPU 在推理方面的性能要远超过 GPU。
TPU,为深度学习而生的 ASIC
TPU 是谷歌专门为加速深层神经网络运算能力而研发的一款芯片,可用来加速神经网络(NN)的推理阶段,其实是一款 ASIC。
我们先来看一下什么是 ASIC,ASIC 指依照产品需求不同而定制化的特殊规格集成电路,由特定使用者要求和特定电子系统的需要而设计、制造。一般来说,ASIC 在特定功能上进行了专项强化,可以根据需要进行复杂的设计,但相对来说,实现更高处理速度和更低能耗。相对应的,ASIC 的生产成本也非常高。
谷歌为什么要做 TPU 呢?一方面是有钱任性,毕竟一般公司很难承担为深度学习开发专门处理器 ASIC 芯片的成本和风险;另一方面是自身需求大,庞大的体量比如谷歌图像搜索、谷歌照片、谷歌云视觉 API、谷歌翻译等产品和服务都需要用到深度神经网络,开发一款 ASIC 可得到广泛的应用。
早在 2011 年谷歌就意识到他们遇到的问题,开始思考使用深度学习网络了,这些网络运算需求高,令他们的计算资源变得紧张。
CPU 能够非常高效地处理各种计算任务,但 CPU 的局限是一次只能处理相对来说很少量的任务;GPU 在执行单个任务时效率较低,而且所能处理的任务范围更小,GPU 是理想的深度学习芯片,但是能耗的问题又非常严重。于是 TPU 应用而生。
下面我们就来看看谷歌是如何夸自家 TPU 的:
- 在神经网络层面的操作上,处理速度比当下 GPU 和 CPU 快 15 到 30 倍;
- 在能效比方面,速度 / 功率比(TOPS/Watt)比 GPU 和 CPU 高 30 到 80 倍,如果在 TPU 中使用 GPU 的 GDDR5 内存,速度(TOPS)将会翻三倍,速度 / 功率比(TOPS/Watt)能达到 GPU 的 70 倍以及 CPU 的 200 倍;
- 在代码上也更加简单,100 到 1500 行代码即可以驱动神经网络。
“TPU 的中心是一个 65536 的 8 位 MAC 矩阵乘法单元,可提供 92 万亿次运算 / 秒(TOPS)的速度和一个大的(28 MiB)的可用软件管理的片上内存。相对于 CPU 和 GPU 的随时间变化的优化方法(高速缓存、无序执行、多线程、多处理、预取……),这种 TPU 的确定性的执行模型能更好地匹配我们的神经网络应用的 99% 的响应时间需求,因为 CPU 和 GPU 更多的是帮助对吞吐量进行平均,而非确保延迟性能。这些特性的缺失有助于解释为什么尽管 TPU 有极大的 MAC 和大内存,但却相对小和低功耗。我们将 TPU 和服务器级的英特尔 Haswell CPU 与现在同样也会在数据中心使用的英伟达 K80 GPU 进行了比较。我们的负载是用高级的 TensorFlow 框架编写的,并是用了生产级的神经网络应用(多层感知器、卷积神经网络和 LSTM),这些应用占到了我们的数据中心的神经网络推理计算需求的 95%。”
关于谷歌 TPU,也许如下几张图给出的说明更清晰:
6 种神经网络应用(每种神经网络类型各 2 种)占据了 TPU 负载的 95%。表中的列依次是各种神经网络、代码的行数、神经网络中层的类型和数量(FC 是全连接层、Conv 是卷积层,Vector 是向量层,Pool 是池化层)以及 TPU 在 2016 年 7 月的应用普及程度。RankBrain 使用了 DNN,谷歌神经机器翻译中用到了 LSTM,Inception 用到了 CNN,DeepMind AlphaGo 也用到了 CNN。
TPU 各模块的框图,主要计算部分是右上方的黄色矩阵乘法单元。其输入是蓝色的「权重 FIFO」和蓝色的统一缓存(Unified Buffer(UB));输出是蓝色的累加器(Accumulators(Acc))。黄色的激活(Activation)单元在 Acc 中执行流向 UB 的非线性函数。
TPU 芯片布局图,蓝色的数据缓存占芯片的 37%。黄色的计算是 30%。绿色的 I/O 是 10%。红色的控制只有 2%。CPU 或 GPU 中的控制部分则要大很多(并且非常难以设计)。
矩阵乘法单元的 systolic 数据流,软件具有每次读取 256B 输入的错觉,同时它们会立即更新 256 个累加器 RAM 中其中每一个的某个位置。
与 GPU 相比,TPU 的优势还体现在:
TPU 使用了大规模片上内存
谷歌可能意识到片外内存访问是 GPU 能效比低的罪魁祸首,因此在 TPU 上放了巨大的内存,高达 24MB 的局部内存、6MB 的累加器内存以及用于与主控处理器进行对接的内存,总共占芯片面积的 37%。这样下成本,可见谷歌是充分做了权衡的。。相比之下,英伟达 K80 只有 8MB 的片上内存,因此需要不断地去访问片外 DRAM。
TPU 采用脉动式数据流
对于 GPU,从存储器中取指令与数据将耗费大量的时间。
TPU 却不同,TPU 甚至没有取命令的动作,而是主处理器提供给它当前的指令,并根据目前的指令做相应操作,这使得 TPU 能够实现更高的计算效率。TPU 加入了脉动式数据流的支持,每个时钟周期数据移位,并取回一个新数据。这样做可以最大化数据复用,并减小内存访问次数,在降低内存带宽压力的同时也减小了内存访问的能量消耗。
TPU 叫板者说了啥?
说的了这么多,TPU 真的如谷歌描述的那样,能成为颠覆 AI 的那个芯片?
早在 2016 年英伟达的 CEO 黄仁勋就表示,两年前谷歌就意识到 GPU 更适合训练,而不善于做训练后的分析决策。由此可知,谷歌打造 TPU 的动机只是想要一款更适合做分析决策的芯片。这一点在谷歌的官方声明里也可得到印证,Google 资深副总裁 Urs Holzle 表示,当前 Google TPU、GPU 并用,这种情况仍会维持一段时间,GPU 可执行绘图运算工作,用途多元;TPU 属于 ASIC,也就是专为特定用途设计的特殊规格逻辑 IC,由于只执行单一工作,速度更快,但缺点是成本较高。
总而言之,TPU 只在特定应用中作为辅助使用,谷歌将继续使用 CPU 和 GPU。
谷歌 TPU 挑衅 GPU,随后英伟达黄仁勋亲自撰文将将 TPU 和英伟达最新品 P40 做比较,针尖对麦芒,要“还原”一个真相。我们看看黄仁勋都说了什么:
“英伟达 Tesla P40 在 GoogleNet 推断任务中的性能是 Google TPU 的 2 倍。不仅如此,P40 的带宽也是 TPU 的十倍还多。”
不过这个结果也是被广大明眼的网友无情吐槽:相同情况下,TPU 的能耗是 75W,而 P40 的能耗是 250W;谷歌论文里的是第一代 TPU(2015 年部署在谷歌数据中心),现在肯定已经升级好几代了——黄仁勋用最新 GPU 与第一代 TPU 对比,GPU 性能更优也无疑是必然的结果;还有一个很现实的问题摆在面前,这就是价格,P40 24GB 版本售价 5 千多美元,TPU 成本估计在几百美元,拿一“贵族”和一个“平民”比品味,这个也有点不合适吧。
不过,黄仁勋在文章里指出的以下几点值得注意:
“虽然 Google 和 NVIDIA 选择了不同的开发道路,但我们的方法中还是有一些共同点。特别是:
- 人工智能需要加速计算。在摩尔定律放缓的时代,加速器提供了深度学习重要的数据处理需求;
- 张量处理是深度学习训练和推理性能的核心;
- 张量处理是企业在构建现代数据中心时必须重点考虑的新工作量;
- 加速张量处理可以大大降低修建现代数据中心的成本。
除了黄仁勋,国内也有 TPU 叫板的声音,指出:谷歌所谓 TPU 其实是新瓶装旧酒——这款芯片仍然沿用了传统的脉动阵列机架构,也是当今许多面向深度学习的 DSP 所采用的的架构。 TPU 在架构方面并没有太多新意。在其架构公开之前,在学术界和工业界其实已经有大量类似的工作(将脉动阵列机用于处理深度学习)。脉动阵列架构本身是个传统技术,早在 1980 年代初,中科院计算所的夏培肃院士和李国杰院士就曾将脉动阵列架构用于石油勘探——计算所曾经研发过的石油勘探专用机就是采用了脉动阵列架构。将脉动阵列架构用于深度学习,其实是近年来 DSP 和硬件加速领域的旧瓶装新酒。
同时,这里要强调一点,中科院计算所的人工智能专用芯片寒武纪团队成员与 Olivier Temam 教授、Paolo Ienne 教授共同发表于 ISCA2015 的 ShiDianNao 学术论文就已经讨论过脉动阵列架构,而 Olivier Temam 教授现在恰恰供职于谷歌。
AI 芯片之争果真让人看不清,TPU 能否搅局成功也一时无法下结论,但是 TPU 的出现让面向神经网络 / 深度学习特定领域加速的芯片趋势更加明显。同时, 谷歌 并没有表现出要在数据中心以外领域使用 TPU 的打算。也许谷歌 TPU 象征意义要大于实际意义,毕竟对于一个没有任何芯片制造历史的公司提出并实现了一个比英伟达 GPU 更快的方案,这是一种超越,更表明英伟达的护城河被攻破。未来是不是有一批公司追随谷歌脚步开发自己的 ASIC 呢,这是一个未知的问题,但是谷歌 TPU 带来一种趋势。
如果你对本系列感兴趣,欢迎点击《趣科技》继续阅读!
与非网原创文章,未经许可,不得转载!