仅需1/5成本:TPU是如何超越GPU,成为深度学习首选处理器的

选自Google Cloud,做者:Kaz Sato,机器之心编译,参与:思源、刘晓坤。缓存

不少读者可能分不清楚 CPU、GPU 和 TPU 之间的区别,所以 Google Cloud 将在这篇博客中简要介绍它们之间的区别,并讨论为何 TPU 能加速深度学习。网络

张量处理单元(TPU)是一种定制化的 ASIC 芯片,它由谷歌从头设计,并专门用于机器学习工做负载。TPU 为谷歌的主要产品提供了计算支持,包括翻译、照片、搜索助理和 Gmail 等。Cloud TPU 将 TPU 做为可扩展的云计算资源,并为全部在 Google Cloud 上运行尖端 ML 模型的开发者与数据科学家提供计算资源。在 Google Next’18 中,咱们宣布 TPU v2 如今已经获得用户的普遍使用,包括那些免费试用用户,而 TPU v3 目前已经发布了内部测试版。架构

第三代 Cloud TPU

如上为 tpudemo.com 截图,该网站 PPT 解释了 TPU 的特性与定义。在本文中,咱们将关注 TPU 某些特定的属性。
机器学习


神经网络如何运算学习

在咱们对比 CPU、GPU 和 TPU 以前,咱们能够先了解到底机器学习或神经网络须要什么样的计算。以下所示,假设咱们使用单层神经网络识别手写数字。测试

若是图像为 28×28 像素的灰度图,那么它能够转化为包含 784 个元素的向量。神经元会接收全部 784 个值,并将它们与参数值(上图红线)相乘,所以才能识别为「8」。其中参数值的做用相似于用「滤波器」从数据中抽取特征,于是能计算输入图像与「8」之间的类似性:动画

这是对神经网络作数据分类最基础的解释,即将数据与对应的参数相乘(上图两种颜色的点),并将它们加在一块儿(上图右侧收集计算结果)。若是咱们能获得最高的预测值,那么咱们会发现输入数据与对应参数很是匹配,这也就最多是正确的答案。网站

简单而言,神经网络在数据和参数之间须要执行大量的乘法和加法。咱们一般会将这些乘法与加法组合为矩阵运算,这在咱们大学的线性代数中会提到。因此关键点是咱们该如何快速执行大型矩阵运算,同时还须要更小的能耗。google


CPU 如何运行云计算

所以 CPU 如何来执行这样的大型矩阵运算任务呢?通常 CPU 是基于冯诺依曼架构的通用处理器,这意味着 CPU 与软件和内存的运行方式以下:

CPU 如何运行:该动图仅展现了概念性原理,并不反映 CPU 的实际运算行为。

CPU 最大的优点是灵活性。经过冯诺依曼架构,咱们能够为数百万的不一样应用加载任何软件。咱们可使用 CPU 处理文字、控制火箭引擎、执行银行交易或者使用神经网络分类图像。

可是,因为 CPU 很是灵活,硬件没法一直了解下一个计算是什么,直到它读取了软件的下一个指令。CPU 必须在内部将每次计算的结果保存到内存中(也被称为寄存器或 L1 缓存)。内存访问成为 CPU 架构的不足,被称为冯诺依曼瓶颈。虽然神经网络的大规模运算中的每一步都是彻底可预测的,每个 CPU 的算术逻辑单元(ALU,控制乘法器和加法器的组件)都只能一个接一个地执行它们,每一次都须要访问内存,限制了整体吞吐量,并须要大量的能耗。


GPU 如何工做

为了得到比 CPU 更高的吞吐量,GPU 使用一种简单的策略:在单个处理器中使用成千上万个 ALU。现代 GPU 一般在单个处理器中拥有 2500-5000 个 ALU,意味着你能够同时执行数千次乘法和加法运算。

GPU 如何工做:这个动画仅用于概念展现。并不反映真实处理器的实际工做方式。

这种 GPU 架构在有大量并行化的应用中工做得很好,例如在神经网络中的矩阵乘法。实际上,相比 CPU,GPU 在深度学习的典型训练工做负载中能实现高几个数量级的吞吐量。这正是为何 GPU 是深度学习中最受欢迎的处理器架构。

可是,GPU 仍然是一种通用的处理器,必须支持几百万种不一样的应用和软件。这又把咱们带回到了基础的问题,冯诺依曼瓶颈。在每次几千个 ALU 的计算中,GPU 都须要访问寄存器或共享内存来读取和保存中间计算结果。由于 GPU 在其 ALU 上执行更多的并行计算,它也会成比例地耗费更多的能量来访问内存,同时也由于复杂的线路而增长 GPU 的物理空间占用。


TPU 如何工做

当谷歌设计 TPU 的时候,咱们构建了一种领域特定的架构。这意味着,咱们没有设计一种通用的处理器,而是专用于神经网络工做负载的矩阵处理器。TPU 不能运行文本处理软件、控制火箭引擎或执行银行业务,但它们能够为神经网络处理大量的乘法和加法运算,同时 TPU 的速度很是快、能耗很是小且物理空间占用也更小。

其主要助因是对冯诺依曼瓶颈的大幅度简化。由于该处理器的主要任务是矩阵处理,TPU 的硬件设计者知道该运算过程的每一个步骤。所以他们放置了成千上万的乘法器和加法器并将它们直接链接起来,以构建那些运算符的物理矩阵。这被称做脉动阵列(Systolic Array)架构。在 Cloud TPU v2 的例子中,有两个 128X128 的脉动阵列,在单个处理器中集成了 32768 个 ALU 的 16 位浮点值。

咱们来看看一个脉动阵列如何执行神经网络计算。首先,TPU 从内存加载参数到乘法器和加法器的矩阵中。

而后,TPU 从内存加载数据。当每一个乘法被执行后,其结果将被传递到下一个乘法器,同时执行加法。所以结果将是全部数据和参数乘积的和。在大量计算和数据传递的整个过程当中,不须要执行任何的内存访问。

这就是为何 TPU 能够在神经网络运算上达到高计算吞吐量,同时能耗和物理空间都很小。


好处:成本下降至 1/5

所以使用 TPU 架构的好处就是:下降成本。如下是截至 2018 年 8 月(写这篇文章的时候)Cloud TPU v2 的使用价格。

Cloud TPU v2 的价格,截至 2018 年 8 月。

斯坦福大学发布了深度学习和推理的基准套装 DAWNBench。你能够在上面找到不一样的任务、模型、计算平台以及各自的基准结果的组合。

DAWNBench:dawn.cs.stanford.edu/benchmark/

在 DAWNBench 比赛于 2018 年 4 月结束的时候,非 TPU 处理器的最低训练成本是 72.40 美圆(使用现场实例训练 ResNet-50 达到 93% 准确率)。而使用 Cloud TPU v2 抢占式计价,你能够在 12.87 美圆的价格完成相同的训练结果。这仅至关于非 TPU 的不到 1/5 的成本。这正是神经网络领域特定架构的威力之所在。

相关文章
相关标签/搜索