Skip to content

L23:加速器(一)(Accelerators I

MIT 6.5900 Fall 2024 · Joel Emer "Compute has been the oxygen of deep learning." — Ilya Sutskever 主题:算力需求、技术趋势(Moore's / Dennard)、Einsum 表示、卷积与张量计算、数据流(dataflow)与 Roofline 模型


一、动机:深度学习的算力需求

  • 深度学习的算力需求指数增长:从 AlexNetAlphaGo Zero,算力增长约 300,000×
  • 业界呼声(Baidu SVAIL):训练受算力限制,若处理器更快可训更大模型,希望提升 100× 或更多

二、技术趋势

Moore's Law 的多种表述

"每两年(或 18 个月)翻倍/缩半"可指:CPU 性能、芯片性能、晶体管速度、晶体管尺寸、栅宽(按 2 缩小)、每片晶体管数、芯片上器件数的经济最优点……

能耗与功耗

Eenergy=αCV2Ppower=αCV2f

其中 α 为开关活动因子(01),C 为电容,V 为电压,f 为频率。

Dennard 缩放(理想化)

每代器件尺寸按 0.7 缩小时([Dennard et al., JSSC 1974]):

Gen XGen X+1
栅宽1.00.7
器件面积/电容1.00.7
电压1.00.7
能量1.02×0.7×0.72=0.65
延迟1.00.7
频率1.01/0.7=1.4
功耗1.02×0.7×0.72×1.4=1.0

理想 Dennard 缩放下,功耗密度保持不变,频率随尺寸缩小而提升。

Moore + Dennard 时代之后

  • 指令级并行ILP)在 2000 年代初基本被挖尽;
  • 电压(Dennard)缩放在 2005 年终结
  • 2005 年撞上功耗墙
  • 约 2007 年起,性能主要靠用更多晶体管做并行——但这也有极限。

体系结构指标

  • 速度Speed):硬件完成任务的速率,受计算单元数与利用率限制;
  • 能量Energy):完成任务消耗的总能量(焦耳),常受电池容量/碳足迹约束;
  • 功率Power):能量消耗速率(瓦),常受供电/封装约束;
  • 精度Accuracy):结果精度,由计算单元位宽决定;
  • 灵活性Flexibility):可解决问题的范围,受架构限制约束。

三、深度学习平台谱系

平台代表
CPUIntel、ARM、AMD
GPUNVIDIA、AMD
细粒度可重构(FPGA)Xilinx、Altera(Microsoft BrainWave
粗粒度可编程/可重构Wave Computing、Graphcore、SambaNova
专用(ASIC)Neuflow、DianNaoEyerissTPUCnvlutinSCNN

张量加速器层出不穷:EyerissSCNNExTensorEyeriss V2GammaRAELLA 等。


四、关注点分离(Separation of Concerns)与 Einsum

[TeAAL, Nayak et al., MICRO 2023] 提出把"算法/计算 — 映射 — 硬件"分离。Einsum 是这套分层金字塔的顶端表示。

Einsum 能带来什么

  • 同时更精确更简洁的表示;
  • 把张量代数扩展到远超矩阵乘法的范围(AI、图、FFT、密码、点云……);
  • 是 GEMM 与完全可编程之间的中间点;
  • 允许对计算与数据移动做界限分析Speed-of-Light);
  • 可通过代数变换做优化。

张量术语(Tensor Terminology

  • Rank,即维度):每个 rank 的元素由其坐标coordinate)标识,如 rank H 有坐标 0、1、2;
  • Point):每个张量元素由各 rank 坐标组成的元组标识,如 (1,2)f
  • 形状Shape):如 H 的形状为 3,记 [0,3)

秩的层级:Rank-0 标量、Rank-1 向量、Rank-2 矩阵、Rank-3 立方体……


五、矩阵乘法的 Einsum 表示

计算定义:

python
A = Tensor(shape=[M, K])
B = Tensor(shape=[N, K])
Z = Tensor(shape=[M, N])
for n in [0..N):
    for m in [0..M):
        for k in [0..K):
            Z[m][n] += A[m][k] * B[n][k]

Einsum 写法:

Zm,n=Am,k×Bn,k

Einsum 操作定义(ODE)

  • 遍历所有合法索引值空间中的点(迭代空间iteration space);
  • 在每个点上:对每个操作数按指定索引取右端值;把值赋给左端指定索引的操作数;若该操作数已非零,则把值归约reduce)进去。

来源致谢:[Einstein 相对论, 1916]、[Numpy/Einsum, ~2015]、[TACO, ASE 2017]、[Timeloop, ISPASS 2019]、[SAM, ASPLOS 2023]。

Einsum 记法补充

  • 上标表示张量某 rank 的名字:Zm,nM,N
  • 上标中的等号表示该 rank 的形状Zm,nM=3,N=3;默认形状与 rank 名同名。

M 个点积的特例:ZmM=Am,kM,K×Bm,kM,K


六、卷积(Convolution, CONV

CONV 各维度术语

  • N:输入/输出特征图数(batch size);C:输入特征图与滤波器的通道数;
  • H,W:输入特征图的高、宽;R,S:滤波器的高、宽;
  • M:输出特征图通道数;P,Q:输出特征图的高、宽;U:卷积步长。

朴素 7 层 for 循环实现

c
for n in [0..N):
 for m in [0..M):
  for q in [0..Q):
   for p in [0..P):
    O[n][m][p][q] = B[m];
    for r in [0..R):
     for s in [0..S):
      for c in [0..C):
       O[n][m][p][q] += I[n][c][U*p+r][U*q+s] * F[m][c][r][s];
    O[n][m][p][q] = Activation(O[n][m][p][q]);

CONV 的 Einsum

Op,q,m=Ic,,p+r,,q+s×Fm,c,r,s

CONV 变体(用约束特化 Einsum)

变体条件
DepthwiseM==CcmFc,m,r,s=0
PointwiseR==S==1
Matrix multiplyR==S==H==1
Compress(pointwise)M<CR==S==1
Expand(pointwise)M>CR==S==1

Compress…Expand 的序列称为"瓶颈"(bottleneck)。

Toeplitz(IM2COL)级联

把卷积通过 im2col 重排成矩阵乘法:

Op,q,m=Ic,,p+r,,q+s×Fm,c,r,s;;Tc,p,q,r,s=Ic,,p+r,,q+s,Op,q,m=Tc,p,q,r,s×Fm,c,r,s

七、Transformer 与多头注意力

把 Transformer 看作多个 kernel 的组合。多头注意力(不含初始嵌入步)的 Einsum 级联([Attention, Vaswani et al. 2017]):

Kb,h,m,e=Ib,m,d×WKd,h,e Qb,h,m,e=Ib,m,d×WQd,h,e QKb,h,m,p=Qb,h,p,e×Kb,h,m,e SNb,h,m,p=exp(QKb,h,m,p) SDb,h,p=mSNb,h,m,p Ab,h,m,p=SNb,h,m,p/SDb,h,p Vb,h,m,f=Ib,m,d×WVd,h,f AVb,h,p,f=Ab,h,m,p×Vb,h,m,f Cb,p,,h×F+f=AVb,h,p,f Zb,p,d=Cb,p,f×WZg,d

Einsum 表示的精炼度:如《Attention Is All You Need》15 页论文对应 14 个 Einsum;FlashAttention 34 页对应 24 个(3 个改动);说明 Einsum 既精确又简洁。 稀疏注意力的诸多思路:SpAttenSangerEdgeBERTDOTA 等。


八、数据移动的高昂代价

取操作数比对其计算更昂贵(图源 Bill Daly)。如今的关键是如何最有效地使用晶体管——尽量减少数据移动。

DNN 的空间架构(Spatial Architecture

本地存储层级:

  • 全局缓冲Global Buffer,100–500 kB);
  • PE 间直连网络(direct inter-PE network);
  • PE 本地存储(寄存器文件 RF,0.5–1.0 kB)。

由处理单元(PE)阵列 + 全局缓冲 + DRAM 组成。

DNN 中的数据复用类型

复用类型适用层复用对象
卷积复用Convolutional Reuse仅 CONV(滑动窗口)滤波器权重 + 激活
特征图复用Fmap ReuseCONV 与 FC激活(多个滤波器复用同一输入)
滤波器复用Filter ReuseCONV 与 FC(batch>1)滤波器权重(多张输入图复用同一滤波器)

九、数据流(Dataflow

1-D 卷积与输出固定(Output Stationary

c
int i[W];   // 输入激活
int f[S];   // 滤波器权重
int o[Q];   // 输出激活
for q in [0, Q):
    for s in [0, S):
        w = q + s;
        o[q] += i[w] * f[s];

输出固定(OS)思想:

  • 最小化部分和(partial sum)的读写能耗 → 最大化本地累加
  • 在 PE 阵列上广播/多播滤波器权重,并在空间上复用激活。

OS 实例:ShiDianNao(输入流过阵列、权重广播、部分和在 PE 内累加后流出,[Du et al., ISCA 2015]);KU Leuven([Moons et al., VLSI 2016 / ISSCC 2017])。

多种数据流

数据流代表
输出固定(OS)ShiDianNao, Moons, Thinker
权重固定(WS)NeuFlow, ISAAC, PRIME, TPU (ISCA 2017)
输入固定(IS)SCNN (ISCA 2017)
行固定(RS)Eyeriss (ISCA 2016), Tetris, Eyeriss2

多种映射选项(Mapping Options

每个存储层级上是以下维度的叉积:数据流、时间上的分块(tiling in time)、空间上的分块(tiling in space)、旁路(bypassing)、拆分/共享存储。不同映射会导致流量(traffic)显著不同。


十、Roofline 模型

横轴为计算强度Compute Intensity,MACs/read),纵轴为 MACs/cycle:

  • 左侧斜线区:MACs/cycle 受操作数供给限制(带宽受限);
  • 右侧水平区:MACs/cycle 受 lane 数目限制(计算受限)。

示例:8 条 MAC lane、1 read/MAC,则平顶为 8 MACs/cycle。 [Williams, Waterman, Patterson, "Roofline", CACM 2009]


小结

  • 算力需求指数增长,而 Dennard 缩放终结、撞上功耗墙,迫使转向并行 + 专门化的加速器;
  • Einsum 提供精确简洁的张量算法表示,是"关注点分离"金字塔的顶端,并支持界限分析与代数优化;
  • 加速器设计核心是减少数据移动:通过空间架构、数据复用、数据流(OS/WS/IS/RS)与映射选择来优化;
  • Roofline 模型刻画性能受计算还是受带宽限制。

下一讲:Accelerators (II)