故事是这样的。
前两天在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
暂无评论