「如何实现流动式软件发布」线上课堂开课啦,快来报名参与课堂抽奖吧~ 了解详情
写点什么

谷歌披露了 TensorFlow 处理器单元架构的细节

2017 年 5 月 16 日

本月早些时间谷歌进一步披露了更多关于一年前发布的TPU 的细节。TPU 项目和团队的高级架构师 Norm Jouppi 表示,与 Nvidia K80 Haswell E5-2699 V3 等主流高性能处理器相比,使用 TPU 执行神经网络计算可以获得成数量级的性能增益。Jouppi 说:

“据估计 TPU 会比 K80 GPU 和 Haswell CPU 快大概 15 倍到 30 倍……在 6 个神经网络用例中,有 4 个在 TPU 上是内存或带宽受限的,假如让 TPU 使用和 K80 GPU 一样的内存系统,那它就可以比 GPU 和 CPU 快 30 到 50 倍……在一个标准的效率指标功耗效率比(TOPS/Watt)测试中,TPU 的测试结果也比传统处理器高 30 到 80 倍。”

最早定制 ASIC 的动机来自于使用谷歌翻译 API 的计算需求,注意,假设这个地球上的每台手机每天都使用谷歌翻译 API 三分钟,那就得多搭建好几十个数据中心。

架构白皮书上记录了把K80 和E5-2699 作为计算核心进行一定范围内的神经网络计算时,相应的实验设计、数据收集和分析等细节。TPU 现在不是用于训练神经网络的。它最早就是用作矩阵乘法器,通过矩阵乘法器、板载内存和缓存系统一起,实现神经网络的多层功能。其中包括在各层之间保存感知器的输出和状态等,这些在MLP 和CNN 等内部都广为使用。

但TPU 并不仅仅限于神经网络的实现,它是通用的,它的架构是基于Jouppi 和团队研究的全面用例的。这么做的部分动机就是要支持TPU 的按时交付,还有必要的灵活性来优化矩阵浮点运算,而这也是芯片要执行的最基本的运算操作。而把TPU 和包含了应用程序所需的其它部件的CPU/GPU 架构结合起来很方便,只需要用上PCIe 总线就好了。

这样的架构让CPU/GPU 可以在神经网络的计算之外执行训练或TensorFlow 程序的任意部分。比如程序要提前加载数据,或者要把指令输入TensorFlow 运行等等,这些都要由CPU/GPU 管理并发给TPU。从这方面看,TPU 非常像显卡或 FPU

“TPU 像 CPU 或 GPU 一样都是可编程的。它并不专为某个神经网络模型设计,可以在多种网络上执行 CISC 指令(卷积、LSTM 模型、大型全连接模型等)。所以它是可编程的,但使用矩阵作为原语,而不是向量或标量。”

就像 CPU 和 GPU 架构的时变优化特性一样,TPU 具有确定性的特性,在功耗效率比的测试中 TPU 优于基准芯片及每秒千万亿次的超级计算机。据测试数据来看,TPU 在功耗效率比的测试中性能超出一般处理器 30 到 80 倍。

“与 K80 GPU 的 32 位浮点运算相比,TPU 使用的是 8 位收缩矩阵乘法器,消耗的能量少了几个数量级,压缩了25 倍的 MAC (65536 8 位对 2496 32 位)和 3.5 倍的板上内存(28MB 对 8MB)。更大的内存有助于增加应用程序的操作强度,让它们可以更充分地使用额外的 MAC……商业产品在计算架构上很少出现数量级的差别,因此 TPU 可能会成为专用领域架构的一个原型。”

作为实验设计研究阶段的一部分,Jouppie 和团队在谷歌的平台上研究了神经网络的使用,他们发现了更多关于时间敏感型应用的需求,而不是关于他们最初设想的吞吐量敏感型应用,这让他们意识到,对大量廉价资源的适当使用仍然可以得到性价比很高的高性能,这也符合阿姆达尔定律

TPU 实验涉及六种神经网络: MLP CNN LSTM 各两种。MLP 和 LSTM 都是内存受限型的,因此调整实验的内存和带宽排列对性能的影响非常大。这可能要归因于 MLP 和 CNN 会重用前层的权重,而且也会在一定程度上重用前层的输出。另一方面,LSTM 会在各个时间步长重用权重,但只会选择性地使用前层的输出,这样就会不受限于内存,更多地是受限于计算能力。这一点在考察 TPU 使用的 PCIe 总线 IO 带宽时也适用。

经过 15 个月多的开发周期,以及在假设以 TPU 为核心的架构上对内存和缓存的改进,Jouppie 和团队声称他们已经获得了比 K80 和 E5-2699 性能高 30 到 50 倍的成绩。

阅读英文原文 TensorFlow Processor Unit Architecture

2017 年 5 月 16 日 19:001961
用户头像

发布了 152 篇内容, 共 60.2 次阅读, 收获喜欢 56 次。

关注

评论

发布
暂无评论
发现更多内容

架构师训练营 2 期 Week08 作业

CJian

第十二周 作业

熊桂平

极客大学架构师训练营

「奇淫技巧」如何写最少的代码

Kerwin

Java 代码设计 代码技巧

Java并发编程:多线程并发内存模型

码农架构

Java并发

ARTS打卡 第27周

引花眠

微服务 ARTS 打卡计划 springboot

减肥为什么会失败,有可能是因为你仍然在摄入容易消化的食用糖。

叶小鍵

科普 减肥、廋身 盖里·陶比斯 加工食用糖

ETH场外交易系统开发流程丨ETH场外交易开发源码案例

系统开发咨询1357O98O718

ETH场外交易系统开发

OKO疯矿链系统开发案例(源码)

系统开发咨询1357O98O718

OKO疯矿链系统开发

架构1期 第十二周作业

haha

智天下APP系统开发|智天下软件开发

开發I852946OIIO

系统开发

Week_12 总结

golangboy

极客大学架构师训练营

第十二周 数据应用(一)总结

钟杰

极客大学架构师训练营

架构师训练营 - 第12周

袭望

week8-作业一

未来已来

week8-作业二-根据当周学习情况,完成一篇学习总结

未来已来

第12周作业

paul

Week 12 作業

Christy LAW

Week 12 學習總結

Christy LAW

架构师训练营 12 周作业

郎哲158

LeetCode题解:433. 最小基因变化,BFS,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

ARTS打卡 第25周

引花眠

微服务 ARTS 打卡计划 springboot

第十二周 架构方法学习总结 —— 数据应用

兵长

SpringBoot系列(6)- 测试

引花眠

spring springboot

ARTS打卡 第26周

引花眠

微服务 ARTS 打卡计划 springboot

与前端训练营的日子 --Week07

SamGo

学习

架构师训练营 12 周笔记

郎哲158

三金本体挖矿模式系统开发丨三金本体平台源码设计

系统开发咨询1357O98O718

三金本体挖矿模式源码

使用Angular8和百度地图api开发《旅游清单》

徐小夕

Java angular.js 前端 angular

第十二周 学习总结

熊桂平

极客大学架构师训练营

区块链钱包系统开发方案丨多币种钱包系统开发详情

系统开发咨询1357O98O718

区块链钱包开发

vivo 全球商城:从 0 到 1 代销业务的融合之路

vivo互联网技术

架构 分布式 商城项目 商城

谷歌披露了TensorFlow处理器单元架构的细节-InfoQ