Gemini

Gemini: 大规模DNN芯片阵列加速器的布局和架构

摘要

chiplet概要目标

  1. Chiplet(芯片阵列)技术允许在单一加速器上集成不断增加的晶体管的数量,在前摩尔定律时代获得了更高的效果,体现了在快速AI迭代进步中需要的大量算力。
  2. 但是,这样也引进了更高昂的大包开销,以及大量的d2d(芯片裸片间通信接口),需要更大的面积,更高的能耗,以及比单芯片内通信的更低的带宽
  3. 因此,对于芯片阵列,最大化优势最小化劣势十分重要,对布局架构都提出了很高的要求。

本文工作

  1. 提出了一个以层为中心的编码方式,来对层-流水线的空间布局进行编码,并且描述了其优化空间。基于此,我们分析了为探索过的优化机会。
  2. 基于编码方法和高度可配置和全局的硬件模版,我们提出了一个架构和布局协同探索的架构gemini,在考虑费用,表现和能耗的基础下,探索加速器的设计和布局空间。
  3. 利用gemini来发现一些有意思的在架构设计布局DNN工作负载方面使用芯片阵列技术的一些方法。

概述

面临挑战

chiplet技术在DNN加速器上已经兴起,然而存在以下问题:

  • 架构设计层面,主要的挑战是最优的芯片阵列粒度。chiplet花销包括:打包花销d2d开销。裸片通信耗能更多并且需要更多空间。这样就需要在更好的收获和更小的阵列花销中进行权衡。
  • DNN布局层面,主要的挑战还是来源于更大的规模更大花销的裸片间通信
    • 对于第一项,随着规模增大,维持高利用率提高能效愈发困难。
    • LP布局将MLP的各个层进行布局,核心是SPM。决定层的哪个部分分配给哪个核,对表现和能效都具有很大的影响。目前的方法仍然是启发式的。因此LP SPM的优化和问题并没有清晰地定义,探索和了解。这样限制了完全利用LP布局的优化机会。
    • 对于第二项,D2D链路导致了消耗能量更高,以及提供了更低的带宽。因此设计空间布局的策略会自动降低D2D通信

我们做出了如下贡献:

  1. 利用LP层级编码方法,描述了LP布局的与优化空间。计算了其巨大的尺寸,显著优于现存的启发式算法,清晰系统地定义了LP SPM和DNN推理的优化空间。
  2. 基于编码方法和一个可配置与全局硬件模版,我们发明了gemini,一个对布局和架构进行综合探索的框架。包括两大部分:布局引擎花销估计器
    布局引擎中模拟退火算法和五个特意设计的算子用于探索基于我们的编码方法定义的空间和自动减少D2D通信
    花销估计器自动对不同架构参数下的加速器开销进行估计。
  3. 利用gemini探索以下问题。
    (1) 过度的精调芯片阵列会同时降低花销,表现,能效。
    (2) 对于计算核心的粒度,能效和表现会随着粒度细化首先上升(并且增幅逐渐减缓),然后在随后遭到些微的下降。并且,花销会随着精细化不断上升。
    (3) 探索了在gemini的帮助下,正确的架构将一个芯片阵列部署到多个加速器上,以及在面对多样计算需求的限制。
    (4) 学习了空间布局架构的性质,并且发现了聚集具有大量数据传输的集群更加重要且有效。
  4. 效果好。

背景知识/动机

chiplet引入权衡

芯片阵列引入后,有:

  • 优势:更高良率,更大规模,异构集成,多片重用
  • 劣势:更差表现,更高能好,片间通信开销,更高包裹开销。

以上会引入对于芯片设计的三个方面的权衡:能量开销,表现和花销。这些对于部署阵列技术十分重要。成为动机。

布局挑战

理论计算能量转换为实际计算表现面临巨大困难。

  • 目前存在:关注层-序列布局在小规模加速器上的应用。
  • 但是随着加速器规模不断增大,出现了可扩展性限制,尽管LP(层级流水线)仍然具有很大潜力。
  • LP SPM还没有被广泛研究。其优化空间和效果也没有被正式定义。

可扩展的硬件模版

  • 介绍全局/可配置硬件模版,从现存的chiplet加速器和大规模加速器上提取相同特征后创造而来。

  • 总体架构

img

提倡的架构包括了两种类型的芯片阵列:

  • 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层,我们有一下三个属性:

    • 分割(Parti=(Hi,Wi,Bi,Ki)),对应卷积核的长,宽,batch_size,以及通道数。
    • 核心集群:(CGi=(Cidi,1,,Cidi,nci1))。其中nci为第i个核心集群的数量。
    • 数据流。(FDi=(IFi,WGTi,OFi))
  • 映射方法:

    • 分割部分:也就是对应卷积层的长、宽、batch_size、通道数目。
    • 核心集群部分:分割完成后,用于加载对应分割部分权重和进行矩阵运算的核心集群块号。
    • 工作负载ID:(h,w,b,k),4d工作负载ID。工作负载ID由分块后形成的位置所对应。
    • 转换成集群ID。方式为:
    • h×Wi×Bi×Ki+w×Bi×Ki+b×Ki+k+1
    • 数据流部分:表示数据的来源(IF), 采用的权重(WGT), 以及数据的目的地(OF).前两个指明了数据从哪个DRAM加载到CG中,OF指明了核心进行数据存储到哪个DRAM。没有明确指明的用-1来表示。
    • 需要明确指明的情况:
      • (1) 对于输出部分,当下面的层级不位于这个层级组或作为总体输出时,需要指明输出的特定DRAM。
      • (2) 对于输入图,只有当当前层输入是全局DNN的输入层时需要指明DRAM。
      • (3) 对于权重,无论一个层是否有权重都需要进行管理。

img

空间计算

N层映射到一个有着M个核核D个DRAMS的加速器上。下界为m!i=0N1(Ni)(Ni1MN1)4Ni计算方式。SOTA目前优化空间为N·part(M),后项是M的所有因数项。这样本作的优化空间显著优于SOTA。

揭露隐藏的优化机会

介绍针对多核DNN加速器有关全局优化机会。

  • 不同的每一层的分割(partition)属性会影响以下两个层面:
    • 片上网络的通信容量:不同的分割方式会导致每个核心的数据需求量不同,导致片上通信容量的不一致。针对图三的例子,当变为(1,1,1,4)的分割时,每个核心都需要整个输入矩阵,但是只需要1/4的权重。
    • 核内优化:不同工作负载分割方式会潜在影响核内部的数据流。
  • 核的数量和位置也会在每个核心集群内变化。核的数量会对每一层的计算时间造成影响,从而影响整个流水线计算时间,这是因为stall现象。
  • 不同的数据流属性影响带宽应用和对不同DRAMs的读写方式。

Gemini架构

概览

有关的架构如下。

img

输入分为三部分:(1) 一些候选的架构参数:NoC带宽,d2d带宽,核心数量(二维解耦),阵列数量(二维解耦),MAC数量,GLB大小。(2) 框架的设定。(目标,限制,超参数)(3) DNN网络模型。

架构候选参数将会对以下目标进行优化:MCα×Eβ×Dγ. MC(开销),E(能耗),D(延时)。三个超参数 α,β,γ 是该项的重要性。其中时延可以提现在小批量或大批量下的表现(相对应低延时场景高吞吐场景)。

E/D受到架构和对应的DNN工作负载以及映射策略的影响。因此,映射引擎部署了基于动态规划图分割算法基于模拟退火的层流水线空间映射算法来优化第i个DNN到候选架构上的映射。采用目标为Eiβ×Diγ并且估计总体能量消耗为 (i=1nEi)1n,总体时延为 (i=1nDi)1n

相反地,花销不会受到工作负载和映射策略的影响,因此MC估计器将会直接基于架构参数进行直接估算。

映射引擎

img

每个DNN描述文件都会被一个模型分割器处理,生成DNN拓扑图。让偶,部署5个基于模拟退火算法的算子来对LP SPM进行优化。

  • LP-SPM探索引擎:
  • 每一个层级组,最初的LP SPM从广泛采用的启发式的基于条纹的策略。
  • 然后,模拟退火迭代开始,按照图中红色线条进行迭代。按照正比于最优大小的概率分布随机选择针对每一层组的大小。
  • 随后,随机地选择其中一个算子来部署当前层组的布局变换。
  • 分析了每一层的分割属性后,采用穷举的方式来进行布局和重排。当达到最优解时,将以分析信息和布局信息发送给估计器进行全局评价。
  • 当代价下降时,改变被接受。否则,按照一个不断下降的概率来决定是否接受更改。
退火算子
  • OP1: 随机选择一层,并且更改分割的数量满足第i个分割的限制。
  • OP2: 随机选择一层并且交换两个在同一个核心集群内的核心。
  • OP3: 随机选择两层并且将两层内统一核心集群的两个核心交换,等同于在两个核心内交换两层的工作负载。
  • OP4: 随机选择两层,随机一处一个层中的核心集群内的一个核心,并加到另外一层的核心集群中。然后更新分割。
  • OP5: 随机选择一层,并且选择一个在数据流中非负的元素,随机选择一个0-DRAMs个数中的一个数(改变流向)。

这样不仅可以探索优化空间,也可以自动减少d2d通信。

评估器

gemini架构中的evaluator有两个接口,一个用于核内探索,一个用于核间探索。

  • 核内探索

  • 内存访问次数

  • 不同精度的乘累加操作次数。

  • 基于这些信息通过将操作次数对应单元的能量消耗来估计总体能量消耗。

  • 通过观察乘累加操作最长时间和数据访存次数/对应带宽来估计整体计算时间。

  • 核间探索

  • 以下几个方面进行全局评估:

    • 片上网络连接
    • D2D连接
    • DRAM访问方式
    • 内存访问次数(针对不同层级缓冲区)
    • 不同精度计算单元操作次数。
  • 根据片内能耗+片间能耗得到总体能耗。

  • 片间能耗计算为:

    • 第一种:SerDes型。D2D数量×每个D2D耗能×
    • 第二种:时钟前向型。D2D通信容量×单位D2D通信能耗, 与片上网络计算相似。

花销估计器

包括以下几个花销的估计,如芯片阵列硅片开销,DRAM开销,包裹开销。

  • 硅片面积开销计算为:面积开销=i=1n裸片i面积开销

  • 硅片开销:裸片i开销/裸片i良率硅片价格

  • DRAM开销:DRAM带宽/单元裸片DRAM开销

  • 封装(包裹)开销:(面积总开销f规模)/封装良率封装开销。有一个经验化的因子 f规模 基于硅片面积计算基底开销。

posted @   木木ちゃん  阅读(104)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示