1/3
2/3
3/3
各类算力单元架构及特性
Blacksteet
编辑于 2024年02月23日 17:49
收录于文集
共1篇


PS:NPU、BPU、TPU、DPU、LPU本质均为ASIC


1.CPU架构

CPU架构图

核心思路:存储程序,顺序执行

存在的问题:计算的绿色区域占的面积太小了,而橙色区域的缓存Cache和黄色区域的控制单元占据了大量空间。所以它在大规模并行计算能力上极受限制,而更擅长于逻辑控制。对更大规模与更快处理速度的需求的增加,CPU算力显得不够

2.GPU架构

核心思路:

并行计算(Parallel Computing)是指同时使用多种计算资源解决计算问题的过程,是提高计算机系统计算速度和处理能力的一种有效手段。它的基本思想是用多个处理器来共同求解同一问题,即将被求解的问题分解成若干个部分,各部分均由一个独立的处理机来并行计算

并行计算可分为时间上的并行和空间上的并行:时间上的并行是指流水线技术,在同一时间启动两个或两个以上的操作,大大提高计算性能

空间上的并行是指多个处理机并发的执行计算,即通过网络将两个以上的处理机连接起来,达到同时计算同一个任务的不同部分,或者单个处理机无法解决的大型问题

GPU架构图

GPU的构成相对简单,有数量众多的计算单元和超长的流水线,特别适合处理大量的类型统一的数据

GPU的工作大部分都计算量大,但没什么技术含量,而且要重复很多很多次。不仅可以在图像处理领域大显身手,它还被用来科学计算、密码破解、数值分析,海量数据处理(排序,Map-Reduce等),金融分析等需要大规模并行计算的领域

存在的问题:GPU无法单独工作,必须由CPU进行控制调用才能工作。CPU可单独作用,处理复杂的逻辑运算和不同的数据类型,但当需要大量的处理类型统一的数据时,则可调用GPU进行并行计算

3.TPU

TPU(Tensor Processing Unit, 张量处理器)就是谷歌专门为加速深层神经网络运算能力而研发的一款芯片

机器学习以及图像处理算法大部分都跑在GPU与FPGA(半定制化芯片)上面,但这两种芯片都还是一种通用性芯片,所以在效能与功耗上还是不能更紧密的适配机器学习算法

TPU架构图(偏Pipeline)

核心思路:

TPU在芯片上使用了高达24MB的局部内存,6MB的累加器内存以及用于与主控处理器进行对接的内存,总共占芯片面积的37%

片外内存访问是GPU能效比低的罪魁祸首,TPU的高性能还来源于对于低运算精度的容忍。研究结果表明,低精度运算带来的算法准确率损失很小,但是在硬件实现上却可以带来巨大的便利,包括功耗更低、速度更快、占芯片面积更小的运算单元、更小的内存带宽需求等...TPU采用了8比特的低精度运算

4.NPU

Neural network Processing Unit,即神经网络处理器。顾名思义,这家伙是想用电路模NPU的典型代表有国内的寒武纪芯片和IBM的TrueNorth。以中国的寒武纪为例,DianNaoYu指令直接面对大规模神经元和突触的处理,一条指令即可完成一组神经元的处理,并对神经元和突触数据在芯片上的传输提供了一系列专门的支持拟人类的神经元和突触结构

5.BPU

Brain Processing Unit,大脑处理器,是由地平线科技提出的嵌入式人工智能处理器架构。第一代是高斯架构,第二代是伯努利架构,第三代是贝叶斯架构。地平线已经设计出了第一代高斯架构,并与英特尔在2017年CES展会上联合推出了ADAS系统(高级驾驶辅助系统)。

6.DPU

Deep learning Processing Unit, 即深度学习处理器,最早由国内深鉴科技提出,基于Xilinx可重构特性的FPGA芯片,设计专用的深度学习处理单元(可基于已有的逻辑单元,设计并行高效的乘法器及逻辑电路,属于IP范畴),抽象出定制化的指令集和编译器(而非使用OpenCL),从而实现快速的开发与产品迭代。事实上,深鉴提出的DPU属于半定制化的FPGA

7.LPU

Groq 研发的专用处理语言模型的 unit。总结其work的地方在于:用空间换时间,把模型权重和各类缓冲数据都放在了 SRAM 里面,而不是 HBM 或者 DRAM。其推理速度可达500 token/s。

  • 上下文token序列与KV cache带来的存储爆炸

LLM模型单次inference是输入一个token序列,生成下一个token,而用户的一次请求是生成接下来一段token序列,需要多次inference,原理上是把上次inference的输出拼到输入里,变成n+1长度的序列作为下次inference的输入,纯串行的。实际上因为前面长度为n的上下文都是一样的,并且GPT模型的特点,我们可以把前面n计算产生的kv存起来,避免一遍又一遍爆炸的重复技术,这就产生了kv-cache。因此实际上是上次inference的结果作为下次inference的输入,更前面的上下文不再作为输入重复算,直接存好的kv-cache。

而kv-cache对芯片而言,比权重凶残得多。kv-cache每个请求的每一个历史token都是独立的,也就跟请求数成正比,也和上下文长度成正比。所以这玩意儿对容量的需求可大可小,不追求长上下文和高并发度的话几乎可以忽略不计,追求长上下文的话dgx整机接近TB级别的hbm基本都不够造。

局限性:Groq 芯片虽然输出速度非常快,但由于内存大小有限,batch size 就没法很大,要是算起 $/token 的性价比来,未必有竞争力