扫码打开虎嗅APP

搜索历史
删除
完成
全部删除
热搜词
深度学习模型推理的瓶颈并非算力不足,而是内存带宽和数据搬运速度。本文基于一篇60页的硬件加速综述,阐述了从ANN、CNN、RNN到Transformer等不同神经网络架构的专用加速器(如GPU、TPU、FPGA)设计原理,揭示了算法演进如何驱动硬件架构变革的核心逻辑。 ## 一、为什么需要专用加速器 - 深度学习模型的核心是大量高度并行的矩阵运算,例如一个7B参数模型的单次推理可能涉及几十次4096×4096维度的矩阵乘法。 - 专用加速器(如GPU、TPU)通过并行执行,能将计算密度和吞吐量提升几十甚至几百倍,而串行执行的CPU需要几分钟才能完成一次计算。 ## 二、ANN加速器:全连接层的基石 - **GPU加速策略**:通过Tiling(分块)技术将大矩阵分解为小块(如64×64)以复用数据,并采用算子融合(Fusion)将激活函数等操作嵌入计算流程,避免中间结果写入显存,带宽压力减半。INT8量化更能在推理时使吞吐量提升4倍。 - **TPU/NPU核心设计**:采用脉动阵列(systolic array)实现计算与数据流的完美匹配,几乎没有多余内存访问,但其效率高度依赖编译期的计算图切分与调度。 - **ASIC与FPGA路径**:ASIC通过硬连线固定矩阵引擎、去除调度开销,能效比GPU高几十倍但灵活性为零;FPGA则利用可重构性实现空间流水线,具备确定性延迟的优势。 ## 三、CNN加速器:利用空间局部性 - **GPU优化手段**:使用Im2Col将卷积操作转化为矩阵乘法,或应用Winograd变换将3×3卷积的9次乘法减少至4次,以提升计算效率。 - **ASIC经典设计**:以Eyeriss芯片为例,其行驻留映射(row-stationary mapping)技术让输入特征的行驻留本地缓冲区,最大化权重和数据复用,显著降低DRAM访问。 ## 四、RNN加速器:时序依赖的挑战 - **加速核心方向**:RNN因严格的时序依赖难以并行,优化重点在于降低单步延迟而非提升吞吐量。 - **关键技术**:通过门融合(Gate Fusion)将LSTM/GRU的多个门操作合并为一个内核,并将隐藏状态缓存在片内SRAM,避免频繁访问显存。实际瓶颈常在于软件栈的调度效率而非计算本身。 ## 五、Transformer和LLM加速器:当前最复杂的挑战 - **核心瓶颈**:LLM推理的解码(Decode)阶段需要逐个生成token,每次都要读取几GB的KV cache,导致内存带宽成为主要瓶颈,而非算力。 - **GPU加速技术**:采用IO-aware Attention分块计算注意力矩阵、对KV Cache进行分页管理以避免显存耗尽,以及使用推测解码(Speculative Decoding)让小模型预测、大模型验证,以减少端到端延迟。 - **专用加速器设计**:必须全局优化MAC吞吐量与内存带宽,任何单一方面的优化不足都会导致系统效率低下。
2026-04-30 18:16

写给技术人的深度学习芯片加速器指南:从GPU 到TPU 再到FPGA

本文来自微信公众号: 歪睿老哥 ,作者:歪睿老哥,原文标题:《写给技术人的深度学习芯片加速器指南:从 GPU 到 TPU 再到 FPGA》


故事是这样的。


前两天在AI芯片群里看到一个问题,有人问:大模型推理到底卡在哪里。


问题描述挺详细的,说推理阶段,尤其是token by token生成的时候,延迟高得离谱。


评论区有一群人在吵,有人说"上更大内存",有人说"换更硬的芯片",有人说"优化算法"。


吵了半天,没一个说对。


后来我花了一周时间,把一篇60页的综述论文啃了一遍。论文标题叫《Hardware Acceleration for Neural Networks:A Comprehensive Survey》,作者是一群做硬件加速的研究人员,内容涵盖了ANN、CNN、RNN到Transformer的完整硬件加速方案。



看完之后,我发现那帮人最大的问题不是不够专业,而是根本没搞清楚一个最基本的东西。


大模型推理慢,不是缺算力。


是内存带宽不够,是数据搬运太慢,是架构设计没跟上算法的演进。


这篇文章,我想把这个综述的核心内容,用人话讲清楚。


一、为什么需要专用加速器


先从一个简单的问题开始。


如果CPU能跑深度学习,为什么还需要GPU、TPU、NPU这些专用芯片?


答案是:因为矩阵运算的本质,是高度并行的。


一个典型的深度学习模型,每次前向传播都要做大量矩阵乘法。一个7B参数的模型,每次推理涉及至少几十次矩阵乘法操作。每次矩阵乘法的维度可能是4096×4096,甚至更大。


如果这些操作串行执行,算一次可能需要几分钟。但如果并行执行,用专门设计的硬件,可以把计算密度和吞吐量提升几十倍、几百倍。


这就是专用加速器的核心价值。


但问题来了:不同的神经网络架构,计算模式完全不同。


全连接层的矩阵乘法,是稠密的、规则的计算,适合通用矩阵乘法引擎。


卷积层的计算,有空间局部性,同一个卷积核要滑动应用到输入特征的多个位置,适合流水线和空间并行。


循环神经网络的计算,有严格的时序依赖,每一步的计算结果会影响下一步,难以并行。


Transformer的计算,注意力机制的复杂度是二次方的,自回归生成的延迟又受限于KV cache的读写带宽。


所以,没有一种加速器能通吃所有模型。每种架构,都有最适合的硬件设计。


下面我逐个讲。


二、ANN加速器:全连接层的基石


计算模式


ANN的核心操作是矩阵乘法(GEMM),也就是General Matrix-Matrix Multiplication。


一个全连接层的计算可以表示为:


output=W@input+bias


其中W是权重矩阵,input是输入向量,bias是偏置。



这个计算的特点是高度规则、计算密集。每个输入神经元都要和权重矩阵的每一行做点积,每个点积都是一系列乘加操作的累加。


所以ANN加速器的核心设计目标是:最大化矩阵乘法的吞吐量,同时最小化内存访问。


GPU上的ANN加速


GPU加速ANN的方式,核心思路是让数据复用最大化。


具体来说,有几个关键技术:


Tiling(分块)


权重矩阵和激活值太大了,一次性加载到GPU显存再算,带宽根本吃不消。所以要把数据分成小块(tiles),每次只加载需要的数据到寄存器或shared memory,反复利用。


比如一个4096×4096的矩阵乘法,如果分块成64×64的tiles,每次只加载64×64的权重和64×64的激活值,就能在芯片内反复利用这些数据,大幅减少DRAM访问。


Fusion(算子融合)


传统做法是矩阵乘法算完,结果写到全局显存,然后下一个激活函数再从全局显存读出来算。这样每个中间结果都要经过一次显存读写。


融合的做法是把激活函数、归一化等操作直接嵌入到矩阵乘法的epilogue里,结果存在寄存器里,根本不写入显存。


这一刀切下去,显存带宽压力直接减半。


混合精度训练


训练阶段用FP16或BF16做计算,但累加用更高精度(FP32),这样吞吐量翻倍的同时,数值稳定性也不会崩。


推理阶段更猛,INT8量化能把权重和激活值压缩到1/4的精度,吞吐量直接提升4倍。前提是精度损失在可接受范围内。


TPU/NPU上的ANN加速


TPU和NPU的设计理念,和GPU不太一样。


GPU的核心是灵活。它有CUDA核心、tensor core、各种内存层级,能跑各种模型,什么都能算。


NPU的核心是效率。它的硬件是为特定计算模式量身定制的,比如systolic array(脉动阵列),专门为矩阵乘法设计。


脉动阵列的工作原理有点复杂,简单说就是数据像流水线一样在阵列中流动,每个处理单元同时接收输入数据,执行乘加操作,然后把部分结果传递给下一个单元。这种设计能实现计算和数据流的完美匹配,几乎没有多余的内存访问。


NPU的关键挑战在于编译器和调度。因为硬件是固定的,所以必须在编译期就把计算图切分成适合硬件执行的tile,安排好数据在SRAM中的复用,才能让阵列保持100%忙碌。


ASIC上的ANN加速


ASIC是专用集成电路,硬件完全定制。


对于ANN来说,ASIC的设计思路是去掉所有不必要的灵活性。


GPU有指令集、有调度器、有复杂的控制逻辑,这些都是为了灵活而存在的。但ANN的计算模式太固定了,大部分时间都在跑矩阵乘法,其他操作占比很小。


所以ASIC可以硬连线一些固定的矩阵引擎,去掉调度开销,去掉指令_fetch_,甚至去掉浮点单元,直接用定点数做计算。


这种设计能实现比GPU高几十倍的能效比,代价是灵活性几乎为零。


FPGA上的ANN加速


FPGA的优势在于可重构。


对于ANN来说,FPGA的设计思路是空间流水线。


把矩阵乘法映射到硬件上,设计一个固定数据流,每个周期推进部分和的计算,避免中间结果写入DRAM。


关键是确定性延迟。只要输入维度固定,FPGA的延迟就是固定的,这对实时推理场景很重要。


三、CNN加速器:利用空间局部性


计算模式


CNN的核心操作是卷积。


卷积和矩阵乘法的不同在于空间局部性。同一个卷积核要滑动应用到输入特征的多个位置,相邻输出的输入窗口有大量重叠。


这意味着权重可以被反复利用,而且输入数据也有很好的空间局部性。


硬件加速器的设计目标就是把这种局部性挖掘到极致。


GPU上的CNN加速


GPU加速CNN的核心技术是Winograd变换和Im2Col优化。


Im2Col是把输入特征图展开成矩阵,把卷积操作转化为矩阵乘法。然后GPU可以用高度优化的GEMM内核来执行。


Winograd变换是另一种思路,通过数学变换减少乘法操作的次数。一个3×3的卷积,传统做法需要9次乘法和8次加法。Winograd只需要4次乘法。


但代价是增加了加法运算和数据转换的开销。所以实际效果要看数据量和硬件架构。


ASIC上的CNN加速


CNN的ASIC设计,经典案例是Eyeriss。


Eyeriss的核心理念是行驻留映射(row-stationary mapping)。


具体做法是让输入特征的一个"行"在计算过程中驻留在本地缓冲区,权重和输出部分和则在阵列中流动。这样能最大化数据复用,最小化DRAM访问。


关键设计是层次化的缓冲和片上互连,确保数据在正确的时间出现在正确的位置,以维持数据流。


四、RNN加速器:时序依赖的挑战


计算模式


RNN和ANN、CNN最大的不同在于时序依赖。


RNN的隐藏状态在每一步都会更新,并且影响下一步的计算。这意味着RNN难以并行化,每一步都必须等上一步的结果。


这导致RNN的加速方向不是追求吞吐量,而是降低单步延迟。


关键技术

Gate Fusion(门融合)


LSTM和GRU有多个门(遗忘门、输入门、输出门等),每个门都是一个矩阵乘法加激活函数。传统的做法是每个门独立执行,中间结果写入显存再读回来。



融合的做法是把所有门操作融合成一个内核,中间结果存在寄存器或shared memory里,避免显存往返。


On-chip State Buffering(片上状态缓冲)


RNN的隐藏状态每一步都要读写,如果每次都要访问DRAM,带宽会成为瓶颈。


好的设计是把隐藏状态和权重缓存在SRAM里,每一步只需要在内部传递,不需要访问外部内存。


实际瓶颈


RNN的实际瓶颈往往不是MAC吞吐量,而是软件栈的调度效率。


每次kernel launch的开销、不同timestep之间的同步开销,都比计算本身更耗时。


所以RNN加速的核心是减少内核数量、减少内存访问、保持循环紧密。


五、Transformer和LLM加速器:当前最复杂的挑战


为什么Transformer最难加速


Transformer的计算模式是三者中最复杂的。


它包含密集矩阵乘法(QKV投影、MLP块)和带宽密集型注意力机制,而且推理阶段有自回归生成的额外开销。


具体来说,LLM推理分为两个阶段:


Prefill(预填充):一次性处理整个prompt,计算密集,适合批量处理。


Decode(解码):每次只生成一个token,需要读取/写入KV cache,计算量小但内存访问量大。



Decode阶段是瓶颈。每个token的生成,需要读取整个KV cache,执行一个小矩阵乘法。对于7B模型,KV cache可能有几GB的数据,每次生成一个token都要读这么多数据。


这就是为什么大模型推理的瓶颈不是算力,而是内存带宽。

GPU上的LLM加速



GPU加速LLM的核心技术:


IO-aware Attention(IO感知注意力)


传统注意力机制要把整个注意力矩阵计算出来,然后做softmax。IO-aware的做法是分块计算,避免一次性把整个矩阵加载到内存。


KV Cache管理和分页


KV cache的增长会导致显存耗尽,影响并发。分页技术可以把KV cache分散存储,像操作系统的虚拟内存一样管理。


Speculative Decoding(推测解码)


用小模型预测几个token,然后大模型只验证这些预测。这样每次大模型推理可以生成多个token,减少端到端延迟。


ASIC/FPGA和专用推理加速器


专用LLM推理加速器的设计思路是优化token级延迟和能效。


核心挑战是在MAC吞吐量和内存带宽之间做平衡。


如果只优化MAC,不做内存带宽优化,那么decode阶段就会因为KV cache读取而stall。


如果只优化内存,不做MAC优化,那么prefill阶段就不会充分利用硬件。



所以好的设计是全局系统效率优化:内存provisioning、cache管理、控制开销最小化,缺一不可。


六、总结:架构演进的核心逻辑


看完这个综述,我最大的感受是:硬件加速器的发展,本质上是算法演进的结果。


ANN时代,计算模式简单,矩阵乘法是核心,加速器设计围绕GEMM展开。


CNN时代,引入了空间局部性,加速器设计开始利用数据复用和空间并行。


RNN时代,时序依赖成为瓶颈,加速器设计转向降低延迟和内存访问。


Transformer时代,注意力机制和自回归生成带来了全新的挑战,加速器设计必须同时优化计算密度、内存带宽、cache管理和调度策略。


算法变了,硬件必须跟着变。变慢了,就被淘汰。


所以,未来的加速器设计,一定会更加定制化、更加系统化。不再是通用芯片的简单优化,而是算法、硬件、软件栈的全局协同设计。


以上,既然看到这里了,如果觉得不错,随手点个赞、在看、转发三连吧,如果想第一时间收到推送,也可以给我个星标⭐~


谢谢你看我的文章,我们,下次再见。


附:论文引用


本文内容基于以下论文:


Hardware Acceleration for Neural Networks:A Comprehensive Survey


主要技术点涵盖:


-ANN加速:Tiling、Fusion、Mixed Precision


-CNN加速:Winograd、Im2Col、Systolic Array


-RNN加速:Gate Fusion、On-chip State Buffering


-Transformer加速:IO-aware Attention、KV Cache Management、Speculative Decoding


-硬件平台:GPU、TPU/NPU、ASIC、FPGA

本内容来源于网络 原文链接,观点仅代表作者本人,不代表虎嗅立场。
如涉及版权问题请联系 hezuo@huxiu.com,我们将及时核实并处理。

大 家 都 在 搜