在深度学习的训练中,我们经常会考虑到效率问题,那么通常所说的cpu/gpu/tpu为什么会有着逐级加速的功能呢,本文进行简单介绍。

机器之心pro有篇文章,介绍的很详细,本文对其进行概述。

0.神经网络计算的本质

以fc层举例,神经网络参数的计算主要包括两类:乘法和加法。那么cpu/gpu/tpu对这两类操作有着怎样的机智呢?

神经网络gpu比cpu快多少 tpu和gpu神经网络哪个快_加法器

1.CPU 如何运行

cpu:中羊处理器,最大的优势是灵活性,支持几百万种不同的应用和软件。通过指令进行运算,每一个 CPU 的算术逻辑单元(ALU,控制乘法器和加法器的组件)都只能一个接一个地执行它们,CPU 必须在内部将每次计算的结果保存到内存中(也被称为寄存器或 L1 缓存),每一次都需要访问内存,限制了总体吞吐量,并需要大量的能耗。

2.GPU如何运行

gpu:图形处理器,为了获得比 CPU 更高的吞吐量,GPU 使用一种简单的策略:在单个处理器中使用成千上万个 ALU。现代 GPU 通常在单个处理器中拥有 2500-5000 个 ALU,意味着你可以同时执行数千次乘法和加法运算。但是,GPU 仍然是一种通用的处理器,必须支持几百万种不同的应用和软件。这又把我们带回到了基础的问题,冯诺依曼瓶颈。在每次几千个 ALU 的计算中,GPU 都需要访问寄存器或共享内存来读取和保存中间计算结果。因为 GPU 在其 ALU 上执行更多的并行计算,它也会成比例地耗费更多的能量来访问内存,同时也因为复杂的线路而增加 GPU 的物理空间占用。

3.TPU如何运行

tpu:张量处理器,专用于神经网络工作负载的矩阵处理器,无法支持其他领域的应用,所谓是专款专用。TPU 的速度非常快、能耗非常小且物理空间占用也更小。tpu放置了成千上万的乘法器和加法器并将它们直接连接起来,以构建那些运算符的物理矩阵。这被称作脉动阵列(Systolic Array)架构。tpu从内存加载数据。当每个乘法被执行后,其结果将被传递到下一个乘法器,同时执行加法。因此结果将是所有数据和参数乘积的和。在大量计算和数据传递的整个过程中,不需要执行任何的内存访问。