近几年来,深度学习大火,各类芯片也如雨后春笋般出现,像什么GPU, TPU, DPU, NPU, BPU……
你分得清吗,下面来小白一下
先来看看这几个词的英文全称:
CPU的全称为 Central Processing Unit(中央处理器),它其实就是机器的“大脑”, 主要包括运算器(ALU, Arithmetic and Logic Unit)、控制单元(CU, Control Unit)、寄存器(Register)、高速缓存器(Cache)和它们之间通讯的数据、控制及状态的总线。它是由计算单元、控制单元和存储单元三大部分组成。如下图所示
为了解决CPU在大规模并行运算中遇到的困难、提升速度,GPU应运而生,采用数量众多的计算单元和超长的流水线。
GPU(Graphics Processing Unit,图形处理器),GPU最初用在个人电脑、工作站、游戏机和一些移动设备上运行绘图运算工作的微处理器。如下图所示:
一提到GPU,就容易想到“并行计算”。并行计算(Parallel Computing)是指同时使用多种计算资源解决计算问题的过程,提高计算机系统计算速度和处理能力的一种有效手段。并行计算的基本思想是使用多个处理器来共同求解同一问题,将被求解的问题分解成若干个部分,各部分均由一个独立的处理机来并行计算。
那么为什么GPU特别擅长处理图像数据呢?
这是因为图像上的每一个像素点都有被处理的需要,而且每个像素点处理的过程和方式都十分相似,因此可以并行计算,所以GPU在图像处理方面的能力就非常强。
下图是CPU与GPU架构的对比图:
TPU是google在2016年5月提出来的一个针对Tensorflow平台的可编程AI加速器。
TPU可提供高吞吐量的低精度计算,用于模型的前向运算而不是模型训练,且能效(TOPS/w)更高。据报告,TPU与同期的CPU和GPU相比,性能可提升15-30倍,以及30-80倍的效率(性能/瓦特)提升。
那么,TPU是怎么做到如此之快呢?
(1)深度学习的定制化研发:TPU 是谷歌专门为加速深层神经网络运算能力而研发的一款芯片,其实也是一款 ASIC(专用集成电路)。
(2)大规模片上内存:TPU 在芯片上使用了高达 24MB 的局部内存,6MB 的累加器内存以及用于与主控处理器进行对接的内存。
(3)低精度 (8-bit) 计算:TPU 的高性能还来源于对于低运算精度的容忍,TPU 采用了 8-bit 的低精度运算,也就是说每一步操作 TPU 将会需要更少的晶体管。
下图是TPU各模块的是框架图:
TPU 各模块的框图。主要计算部分是右上方的黄色矩阵乘法单元。其输入是蓝色的「权重 FIFO」和蓝色的统一缓存(Unified Buffer(UB));输出是蓝色的累加器(Accumulators(Acc))。黄色的激活(Activation)单元在 Acc 中执行流向 UB 的非线性函数。
DPU深度学习处理器最早由国内深鉴科技提出,基于Xilinx可重构特性的FPGA芯片,设计专用的深度学习处理单元,而且抽象出定制化的指令集和编译器,实现了快速的开发与产品迭代。
NPU(神经网络处理器),是在电路层中模拟人类神经元和突触,并且用深度学习指令集直接处理大规模的神经元和突触,一条指令完成一组神经元的处理。NPU的典型代表有国内的寒武纪芯片和IBM的TrueNorth。
BPU(大脑处理器),是由地平线科技提出的嵌入式人工智能处理器架构。传统CPU芯片是做所有事情,所以一般采用串行结构。而BPU主要是用来支撑深度神经网络,比如图像、语音、文字、控制等方面的任务,而不是去做所有的事情。