Gemini: 大规模DNN芯片阵列加速器的布局和架构
摘要
chiplet概要目标
- Chiplet(芯片阵列)技术允许在单一加速器上集成不断增加的晶体管的数量,在前摩尔定律时代获得了更高的效果,体现了在快速AI迭代进步中需要的大量算力。
- 但是,这样也引进了更高昂的大包开销,以及大量的d2d(芯片裸片间通信接口),需要更大的面积,更高的能耗,以及比单芯片内通信的更低的带宽。
- 因此,对于芯片阵列,最大化优势和最小化劣势十分重要,对布局和架构都提出了很高的要求。
本文工作
- 提出了一个以层为中心的编码方式,来对层-流水线的空间布局进行编码,并且描述了其优化空间。基于此,我们分析了为探索过的优化机会。
- 基于编码方法和高度可配置和全局的硬件模版,我们提出了一个架构和布局协同探索的架构gemini,在考虑费用,表现和能耗的基础下,探索加速器的设计和布局空间。
- 利用gemini来发现一些有意思的在架构设计和布局DNN工作负载方面使用芯片阵列技术的一些方法。
概述
面临挑战
chiplet技术在DNN加速器上已经兴起,然而存在以下问题:
- 架构设计层面,主要的挑战是最优的芯片阵列粒度。chiplet花销包括:打包花销和d2d开销。裸片通信耗能更多并且需要更多空间。这样就需要在更好的收获和更小的阵列花销中进行权衡。
- DNN布局层面,主要的挑战还是来源于更大的规模和更大花销的裸片间通信。
- 对于第一项,随着规模增大,维持高利用率和提高能效愈发困难。
- LP布局将MLP的各个层进行布局,核心是SPM。决定层的哪个部分分配给哪个核,对表现和能效都具有很大的影响。目前的方法仍然是启发式的。因此LP SPM的优化和问题并没有清晰地定义,探索和了解。这样限制了完全利用LP布局的优化机会。
- 对于第二项,D2D链路导致了消耗能量更高,以及提供了更低的带宽。因此设计空间布局的策略会自动降低D2D通信。
我们做出了如下贡献:
- 利用LP层级编码方法,描述了LP布局的与优化空间。计算了其巨大的尺寸,显著优于现存的启发式算法,清晰系统地定义了LP SPM和DNN推理的优化空间。
- 基于编码方法和一个可配置与全局硬件模版,我们发明了gemini,一个对布局和架构进行综合探索的框架。包括两大部分:布局引擎和花销估计器。
布局引擎中,模拟退火算法和五个特意设计的算子用于探索基于我们的编码方法定义的空间和自动减少D2D通信。
花销估计器自动对不同架构参数下的加速器开销进行估计。 - 利用gemini探索以下问题。
(1) 过度的精调芯片阵列会同时降低花销,表现,能效。
(2) 对于计算核心的粒度,能效和表现会随着粒度细化首先上升(并且增幅逐渐减缓),然后在随后遭到些微的下降。并且,花销会随着精细化不断上升。
(3) 探索了在gemini的帮助下,正确的架构将一个芯片阵列部署到多个加速器上,以及在面对多样计算需求的限制。
(4) 学习了空间布局架构的性质,并且发现了聚集具有大量数据传输的集群更加重要且有效。 - 效果好。
背景知识/动机
chiplet引入权衡
芯片阵列引入后,有:
- 优势:更高良率,更大规模,异构集成,多片重用
- 劣势:更差表现,更高能好,片间通信开销,更高包裹开销。
以上会引入对于芯片设计的三个方面的权衡:能量开销,表现和花销。这些对于部署阵列技术十分重要。成为动机。
布局挑战
将理论计算能量转换为实际计算表现面临巨大困难。
- 目前存在:关注层-序列布局在小规模加速器上的应用。
- 但是随着加速器规模不断增大,出现了可扩展性限制,尽管LP(层级流水线)仍然具有很大潜力。
- LP SPM还没有被广泛研究。其优化空间和效果也没有被正式定义。
可扩展的硬件模版
-
介绍全局/可配置硬件模版,从现存的chiplet加速器和大规模加速器上提取相同特征后创造而来。
-
总体架构:
提倡的架构包括了两种类型的芯片阵列:
-
IO芯片阵列和计算芯片阵列。
-
网状的片上网络在计算阵列中将所有计算核心相互连接
-
位于控制阵列中的控制器允许核心-核心,核心-DRAM,DRAM-核心的沟通。
-
针对片间通信,D2D发送端将编码数据并发送给对应的D2D接收端(位于另一个芯片阵列内)。接收端解码并且采用片上网络进行传输。片间通信全自动化并且对于src和dst都同名。
-
异构架构允许任意数量的IO和计算阵列,保证整个模版的可扩展性。
-
支持多种拓扑结构。目前大部分芯片支持网状互联,因此默认采用网状架构。
-
计算阵列架构
-
网状片上网络。支持任意数量核心。
-
D2D接口环状布置于四周,提升可拓展性。可以与其他阵列构成大规模网状结构。
-
DMA,路由,便利通信。控制单元对管理计算任务和进程信息,以及管理数据传输接收的重要性。GLB对于所有核心透明公开用于读写数据。PE阵列和矩阵向量用于计算。
-
IO阵列架构
-
IO功能的序列部署,允许与DRAM沟通。控制器控制片上网络和DRAM保证高带宽利用率。
-
可以配置的参数
-
NoC带宽,d2d带宽,核心数量(二维解耦),阵列数量(二维解耦),MAC数量,GLB大小。
-
PE阵列采用NVDLA架构。
层级流水线映射编码
编码格式和分割方法
- 以层为中心的编码方法来描述层级流水线空间映射。
- 包括两份信息:
- 对每层的分配和分割到每个特定的核心上。
- 数据来源和目的地在每个核上的工作负载。
- 具有普遍性和可以在各种拓扑结构上使用。
考虑具有n层的DNN有向无环图。我们定义:
-
LP:层级流水线
-
CG:core-group核心集群。
-
DAG:Directed acyclic graph,有向无环图
-
LMS:层级流水线空间布局规划
-
MS:针对每层的空间布局规划
-
LG:层级组
-
MS:
-
针对第i层,我们有一下三个属性:
- 分割(\(\text{Part}_i=(H_i,W_i,B_i,K_i)\)),对应卷积核的长,宽,batch_size,以及通道数。
- 核心集群:(\(\text{CG}_i=(C_{\text{id}_i,1},\ldots,C_{\text{id}_i,n_{c_{i}-1}})\))。其中\(n_{c_{i}}\)为第i个核心集群的数量。
- 数据流。\((\text{FD}_i=(\text{IF}_i,\text{WGT}_i,\text{OF}_i))\)。
-
映射方法:
- 分割部分:也就是对应卷积层的长、宽、batch_size、通道数目。
- 核心集群部分:分割完成后,用于加载对应分割部分权重和进行矩阵运算的核心集群块号。
- 工作负载ID:(h,w,b,k),4d工作负载ID。工作负载ID由分块后形成的位置所对应。
- 转换成集群ID。方式为:
- \(h\times W_i\times B_i\times K_i+w\times B_i\times K_i + b\times K_i+k+1\)。
- 数据流部分:表示数据的来源(IF), 采用的权重(WGT), 以及数据的目的地(OF).前两个指明了数据从哪个DRAM加载到CG中,OF指明了核心进行数据存储到哪个DRAM。没有明确指明的用-1来表示。
- 需要明确指明的情况:
- (1) 对于输出部分,当下面的层级不位于这个层级组或作为总体输出时,需要指明输出的特定DRAM。
- (2) 对于输入图,只有当当前层输入是全局DNN的输入层时需要指明DRAM。
- (3) 对于权重,无论一个层是否有权重都需要进行管理。
空间计算
N层映射到一个有着M个核核D个DRAMS的加速器上。下界为\(m!\sum\limits_{i=0}^{N-1}\binom{N}{i}\binom{N-i-1}{M-N_1}4^{N-i}\),计算方式。SOTA目前优化空间为N·part(M),后项是M的所有因数项。这样本作的优化空间显著优于SOTA。