AI:为什么是TPU?
文章来自微信公众号“科文路”,欢迎关注、互动。转发须注明出处。
接前回,本文补上What makes TPUs fine-tuned for deep learning? | Google Cloud Blog中的最后一部分和开头后组成全文。
由谷歌从零开始设计的张量处理单元 (TPU) 是一种定制的 ASIC 芯片。它用于负载机器学习工作,并已为谷歌的几个主要产品助力:翻译、照片、搜索助手和邮箱。借助 Cloud TPU,在 Google Cloud 上,所有开发人员和数据科学家在使用前沿的机器学习模型时也可以利用到 TPU 可扩展且易于使用的优势。在最新一期的年度会议 Google Next ‘18 上,我们宣布 Cloud TPU v2 已面向包括免费试用帐户在内的所有用户全面推出,同时发布了 Cloud TPU v3 alpha 版。
神经网络是如何工作的?
让我们看看机器学习需要什么样的计算,特别是神经网络。
例如,假设我们使用单层神经网络来识别手写数字的图像,如下图所示:
如果图像是 28 x 28 灰度像素的网格,则可以将其转换为具有 784 个值(维度)的矢量。识别数字“8”的神经元将这些值和参数值相乘(上面的红线)。
这些参数作为“过滤器”从数据中提取特征,从而体现图像和数字“8”的形状的相似性,其过程如图:
这个就是神经网络对数据分类的最基本解释:将数据和它们各自的参数相乘(上面有颜色的点),然后将它们全部相加(右侧得到的点)。如果得到的分数最高,就意味着找到了输入数据与其对应参数之间的最佳匹配,也就很可能是正确答案。
简而言之,神经网络需要数据和参数之间的大量乘法和加法。我们经常将这些乘法和加法组织成矩阵乘法,就是你在高中代数中遇到过的那些。
所以问题就变成了如何以更少的功耗尽可能快地执行大型矩阵乘法。
CPU 是如何工作的?
什么是冯诺依曼瓶颈?CPU为什么不适宜做深度学习中的运算?
CPU 是基于冯诺依曼架构的通用处理器。这也就是说 CPU 与软件和内存一起工作。
CPU 的最大益处是它的灵活性。凭借其冯诺依曼架构,你可以在上百万种场景下加载任何类型的软件。你可以使用 CPU 在 PC 中进行文字处理、控制火箭发动机、执行银行交易或使用神经网络对图像进行分类。
但也就是由于 CPU 的灵活,硬件设备只有到它从软件中读到下一条指令的时候,它才知道自己要做什么。 CPU 必须在单次计算中将结果存储在 CPU 内的内存中(也就是所谓的寄存器或 L1 缓存)。这种内存访问是 CPU 架构的缺点,被称为冯诺依曼瓶颈。尽管大规模的神经网络计算意味着接下来的步骤是完全可预测的,但每个 CPU 的算术逻辑单元 (ALU),控制乘法器和加法器的组件)依序执行,每一次都访问内存。这限制了总吞吐量,并将增加能耗。
GPU 是如何工作的?
为了获得比 CPU 更高的吞吐量,GPU 使用了一个简单的策略:何不在一个处理器中配上几千个 ALU?当下的 GPU 通常在单个处理器中配备了 2,500–5,000 个 ALU,这就意味着可以同时执行几千个乘法和加法运算。
这种 GPU 架构适用于具有大规模并行性的应用程序,例如神经网络中的矩阵乘法。实际上,在深度学习的典型训练工作负载上,GPU 的吞吐量比 CPU 高出一个数量级。这也就是此时,GPU 是深度学习中最流行的处理器架构的原因。
但是,GPU 仍然是一个“通用”处理器,因为需要它支持各种各样的应用程序。这又回到了我们的基础问题——冯·诺依曼瓶颈。对于几千个 ALU 中的每一次计算,GPU 都需要访问寄存器或共享内存来读取和存储中间计算结果。由于 GPU 在其数千个 ALU 上更多的时候执行的是并行计算,因此它也相应地花费了更多的能耗来访问内存,同时复杂的布线也增大了 GPU 的面积。
TPU 是如何工作的?
当谷歌设计 TPU 时,他们做了一个 DSA(特定领域的架构)。也就是说,我们把它设计成了一个专门用于神经网络工作的矩阵处理器,而没有设计一个通用的处理器。TPU 不能运行文字处理软件、不能控制火箭引擎、也不能执行银行交易,但它可以以惊人的速度处理神经网络的大量乘法和加法运算,而消耗的功率和占用的访存却小得多。
其最关键的推动作用体现在减弱冯·诺依曼瓶颈上。由于 TPU 的主要任务是矩阵计算,TPU 的硬件设计师很清楚这些计算的每一个具体步骤。因此,他们能够放置几千个乘法器和加法器,并将它们直接连接到一起,形成一个由这些运算器组成的大型物理矩阵。这被称为脉冲阵列架构。就 Cloud TPU v2 而言,有两个 128 x 128 的脉冲阵列,它集成了 32,768 个用于 16 位浮点值计算的 ALU。
脉冲阵列工作方式
让我们看看脉冲阵列是如何执行神经网络计算的。
首先,TPU 将参数从内存加载到矩阵处理器中。
然后,TPU 从内存中加载数据。当每个乘法被执行时,其结果将被直接传递给下一个乘法器求和。因此,最终输出将是数据和参数之间所有乘加运算的结果。
在整个计算和数据传递的过程中,不需要访问内存。
这就是 TPU 可以在神经网络计算中可以达到很高的计算吞吐量,同时功耗更低、占用访存更小的原因。
最终收益:成本降至原来的五分之一
那么使用这种 TPU 架构可以获得哪些收益呢? 答案是成本。 以下是撰写本文时 2018 年 8 月 Cloud TPU v2 的定价:
斯坦福大学发布了 DAWNBench,这是用于深度学习训练和推理的 benchmark。 借助于它可以找到不同的“任务、模型和计算平台”的组合以及它们各自的 benchmark 结果。
在 2018 年 4 月 DAWNBench 比赛结束时,非 TPU 处理器的最低训练成本为 72.40 美元(使用 Amazon EC2 Spot 实例,在 ImageNet 上训练 ResNet-50 并达到 93% 的准确率)。 而使用 Cloud TPU v2 抢占式定价,完成相同的训练仅需 12.87 美元。 这还不到前者的 1/5。 这便是神经网络领域中 DSA 的力量。
原文开头>>
The Tensor Processing Unit (TPU) is a custom ASIC chip—designed from the ground up by Google for machine learning workloads—that powers several of Google’s major products including Translate, Photos, Search Assistant and Gmail. Cloud TPU provides the benefit of the TPU as a scalable and easy-to-use cloud computing resource to all developers and data scientists running cutting-edge ML models on Google Cloud. At Google Next ‘18, the most recent installment of our annual conference, we announced that Cloud TPU v2 is now generally available (GA) for all users, including free trial accounts, and the Cloud TPU v3 is available in alpha.
原文结尾>>
So what’s the benefit you could get with this TPU architecture? The answer is cost. The following is the pricing of Cloud TPU v2 in August 2018, at the time of writing:
Stanford University publishes DAWNBench, which is a benchmark suite for deep learning training and inference. You can find various different combinations of tasks, models, and computing platforms and their respective benchmark results.
At the time DAWNBench contest closed on April 2018, the lowest training cost by non-TPU processors was
$72.40
(for training ResNet-50 at 93% accuracy with ImageNet using spot instance). With Cloud TPU v2 pre-emptible pricing, you can finish the same training at$12.87
. It’s less than 1/5th of non-TPU cost. This is the power of domain specific architecture for neural network.
都看到这儿了,不如关注每日推送的“科文路”、互动起来~
至少点个赞再走吧~