阅读总结
深度神经网络的高效处理(硬件)《Efficient Processing of Deep Neural Networks》读书笔记
原书:《Efficient Processing of Deep Neural Networks》Vivienne Sze, Yu-Hsin Chen, Tien-Ju Yang, Joel S. Emer(Morgan&Claypool Publishers - Synthesis Lectures On Computer Architecture)出版时间:Jun 2020
作者 MIT Vivienne Sze.
Batch Size
一、CPU && GPU Platform
全连接层可以直接转为矩阵乘:
高斯算法:
FFT/Strassen/Winograd:
Properties We Can Leverage:
四份数据需要 RW, 所以下述倍数为4.
Algorithm & Hardware Co-Design:
Reduce Precision:
Sparsity:
Efficient network architecture:
Sparsity:
Depthwise convolution:
Flexibility and scalability(灵活性和可扩展性)
Other Platforms
-----------------------------------------------------分割线-------------------------------------------------------------
1. Introduction
DNNs, also referred to as deep learning, are a part of the broad field of AI.
Within the machine learning field, there is an area that is often referred to as braininspired computation(脑启发计算).
Therefore, a brain-inspired computation is a program or algorithm that takes some aspects of its basic form or functionality from the way the brain works.
Within the domain of neural networks, there is an area called deep learning, in which the neural networks have more than three layers, i.e., more than one hidden layer. Today, the typical numbers of network layers used in deep learning range from 5 to more than a 1,000. In this book, we will generally use the terminology deep neural networks (DNNs) to refer to the neural networks used in deep learning
In 2015, the ImageNet winning entry, ResNet [24], exceeded human-level accuracy with a Top-5 error rate8 below 5%. Since then, the error rate has dropped below 3% and more focus is now being placed on more challenging components of the competition, such as object detection and localization. These successes are clearly a contributing factor to the wide range of applications to which DNNs are being applied.
4. Kernel Computation
CONV层和FC层的基础运算都是MAC,通常有两类结构,一是 temporal 二是 spatial.
如下,像CPU/GPU多使用SIMD/SIMT用的是时间结构来提高并行;
ASIC-and FPGA-based 使用空间并行;
We refer to an ALU with its own local memory as a processing engine (PE)
对于时间并行(CPUs/GPUs),我们考虑如何在 kernel 上进行计算格式转化从而增加带宽,减少MAC,也会看数据是如何重排的;这些 ALU 通常只能从内存层次中获取数据,不能直接相互通信.
对于空间并行(Accelerations),我们考虑 dataflow 是如何新增 data reuse,即怎么优化数据流动。有时每个ALU可以有自己的控制逻辑和本地内存,称为 scratchpad or register file. 在基于 ASIC 和 FPGA 的设计中,空间结构通常用于处理DNN
- CPU和GPU等时间架构,我们将讨论如何映射算法款和优化这些平台上,如何计算转换的内核可以减少乘法来增加吞吐量和如何计算(例如,mac)可以命令(即瓦)改善内存子系统的行为.
- 对于加速器中使用的空间架构,我们将讨论数据流如何提高内存层次结构中低成本内存的数据重用,以降低能源消耗,以及其他架构特性如何帮助优化数据移动(第5章)。
4.1 MATRIX MULTIPLICATION WITH TOEPLITZ
CPUs and GPUs use hardware parallelizaton techniques such as SIMD or SIMT to perform the MACs in parallel
GEMV 和 GEMM,FC和CONV都由卷积,而当 filter size == input size,R = H, S = W, 是在FC层做的卷积。
CONV 层可以使用 Toeplitz Matrix 来实现 矩阵乘,在CONV层中使用矩阵乘法的缺点是在输入特征映射矩阵中存在冗余数据。例如下图所示,将第一个方块中 1 2 4 5,展开成一列,方便Filter直接进行计算。
Figure 4.3: Mapping to matrix multiplication for CONV layers. (Continues.)
与复制输入激活的情况一样,缺点是过滤器矩阵中的冗余数据。此外,由于 Filter 的大小通常比输入 Feature map 的大小小得多,这种转换结果是一个稀疏矩阵。这些因素的组合可能再次导致存储效率低下或复杂的内存访问模式。
4.2 TILING FOR OPTIMIZING PERFORMANCE
如前一节所述,许多DNN计算可以表述为矩阵乘法,为了有效地执行这些计算,有许多为cpu设计的软件,这些库的一个关键特征是它们努力优化 memory subsystem 行为.
内积 – Inner-product
为了理解如何最大限度地 reuse 最接近计算单元的内存中的值,考虑一个在 FC 计算中使用的矩阵乘法的实现,如图所示。该图显示了 Filter 权重矩阵的行如何与 Feature Map 列相结合,即从 Filter 的行进行 element-wise,和 Feature Map 列的值按元素顺序相乘,以及最终对结果向量的所有元素求和,每个这样的 inner-product 产生输出特征映射矩阵的一个元素的值,这种计算方式被称为矩阵乘法的内积方法。
如果内积计算的顺序是这样的,即过滤矩阵的单行连续地与输入特征图的每一列相结合,那么显然可以很好地重用过滤矩阵的行元素。然而,过滤器矩阵中一行的大小通常比最接近计算单元(如缓存)的内存大。这导致了较差的重用,因为来自过滤器矩阵的值在小内存中无法保存足够长的时间,从而无法在输入特征映射矩阵的下一列上被计算重用,因此,它们必须从内存层次结构的下一层重新加载,从而导致显著的效率低下。
平铺 – tiling
为了改善由于在矩阵乘法的整行和整列上计算内积而导致的内存效率低下,库总是将计算划分或 tiling ,以适应内存层次结构的不同级别。
对于矩阵中的每对块,可以对 Feature Map 中的 Filter 权重的部分行和部分列采用相同的内积方法,从而在输出特征图中创建一个由部分结果组成的块。
当所有贴图对的计算完成后,将后续的部分结果添加到之前部分结果计算的输出特征映射中的部分结果中(这里具体怎么加的没有想明白)。如果重复使用 Filter 的单个块来创建一系列局部结果,并且如果该块足够小,可以保存在最接近计算单元的内存中,那么在该内存中的重用将更高。
可以递归地对矩阵相乘进行平铺,以提高内存层次结构每一层的效率,平铺还可以应用于跨多个并行化计算 CPU 或 GPU 的多个线程
然而,平铺不是在缓存中完成的(例如,隐式数据编排单元),而是在更专门的缓冲区中完成的。
4.3 COMPUTATION TRANSFORM OPTIMIZATIONS
DNN的计算有时可以通过对数据进行计算转换以减少(通常昂贵的)乘法次数而进一步加速,其目标是提高性能或降低能耗,尽管这可能会带来更多的中间结果、增加的添加数量和更不规则的数据访问模式。
4.3.1 GAUSS’ COMPLEX MULTIPLICATION TRANSFORM
4.3.2 STRASSEN’S MATRIX MULTIPLICATION TRANSFORM**
4.3.3 WINOGRAD TRANSFORM
Winograd 在 feature map 和 filter 上应用算术操作的 re-association,以减少专门用于卷积所需的乘法数量,而不是由前面描述的变换处理的一般矩阵乘法。
Winograd变换允许使用相同的滤波器权重高效地计算多个卷积。
- 例如,计算两个 1*3 卷积的输入激活(ij)和过滤器权重(fj),通常需要6次乘法和4次加法,如下所示
然而,使用 Winograd re-association,这减少到4次乘法和12次加法以及2个移位(实现除以2)使用4个中间值(kj)如下:
Winograd 实现的乘法减少取决于过滤器和tile的大小,更大的块大小导致更大的乘法减少,但代价是更高的复杂性转换,注意,Winograd 需要根据 过滤器 和 tile 的大小进行专门的处理,所以 Winograd 硬件通常只支持特定的 tile 和 filter 大小。
其计算方法如下,就是将 f 矩阵和 i 矩阵做了一定处理:
4.3.4 FAST FOURIER TRANSFORM
4.3.5 SELECTING A TRANSFORM
略.
4.4 SUMMARY
在本章中,我们讨论了在平台(如cpu和gpu)上实现高效处理的不同方法,目标是在不影响精度的情况下 Restructure the computations 以提高效率
重构计算的一个重要例子是 Toeplitz (特普利茨)变换,它广泛应用于cpu 和 gpu 中。Toeplitz变换通过复制值将卷积转换为矩阵乘法,这允许应用任何高度优化的矩阵乘法库中的例程。最后,通过 algebraic re-association (包括Strassen、Winograd 和 FFT转换),各种其他转换的目的是减少高成本操作(即乘法)的数量。
5 Designing DNN Accelerators
在第4章中,我们讨论了DNN处理如何进行转换,以利用优化的库或减少操作的数量,特别是乘法,以便在现成的通用处理器(如 CPU 和 GPU )上实现更高的性能(即更高的吞吐量和/或更低的延迟)。在本章中,我们将专注于通过设计专门的硬件直接优化DNN的处理
5.1 EVALUATION METRICS AND DESIGN OBJECTIVES
**功耗:**在现代计算系统中,能量消耗通常由数据移动主导,尤其是内存访问,为了减少能源消耗,一个目标是设计减少数据移动的硬件。
主要有两个方法;
- 减少从具有高能源成本的源移动值的次数 (如DRAM或大型片上缓冲器);
- 减少移动每个值的成本, 例如,通过减少数据的位宽,我们将在第7章讨论
**性能:**另一方面,吞吐量和延迟方面的性能在很大程度上取决于处理元素(PEs)的数量,更具体地说,是可以并行操作的乘数的数量。
1)将工作分配给尽可能多的 PE,以便它们可以并行操作;
2)通过确保有足够的内存带宽来传输数据,最小化每个PE的空闲周期
5.2 KEY PROPERTIES OF DNN TO LEVERAGE
数据重用
Input feature map reuse: 将不同的滤波器(从M维开始)应用于同一输入特征映射,以生成多个输出特征映射; 因此,每个输入激活被重用M次
Filter reuse: 当处理一批(大小为N)的输入特征映射时,对该批中的所有输入应用相同的过滤器;因此,每个过滤器重量被重复使用N次
Convolutional reuse: 对于卷积层,过滤器(R * S)小于输入特征图(H * W)的大小,过滤器在输入特征图的不同位置(通常相互重叠)滑动,生成输出特征图。
因此,每个权重和输入激活都被进一步重用 P * Q 和 R * S 次,依次产生不同的输出激活。
Data Reuse 可以通过从一个巨大但昂贵的内存中读取一次数据,转化为减少数据移动的能源消耗,或者是
1)将数据存储在一个相对较小但廉价的内存中,并(暂时)在该廉价内存中多次重用该数据
2)将相同的数据发送到多个PE,并(在空间上)使用这些不同PE上的数据
5.3 DNN HARDWARE DESIGN CONSIDERATIONS
设计专门的DNN硬件的挑战包括设计一个灵活的架构,然后找到配置架构的最佳方式,以获得最佳的硬件性能和不同DNN层的能源效率。这两个方面是紧密相关的,因为找到最佳配置的机会取决于硬件的灵活性,而更高的灵活性通常意味着效率的损失,因为需要额外的硬件。因此,通常需要一个迭代过程来提炼出最佳设计。
给定一个特定的DNN模型,有必要能够配置硬件以在保持高性能的同时最小化总体能耗,这个过程包括找到一个最佳映射,其中映射定义:
- 执行顺序MAC操作,时间上的 (即同一PE上的串行顺序) 和空间上的 (即跨多个并行PE);
- 如何 tile 和 move data 在不同层次的内存按照执行顺序进行计算
综上所述,DNN专用硬件的设计和使用涉及多个步骤:
At Design Time: 在设计时,用一组属性指定体系结构。这些属性包括:
(1)数据流或支持的数据流;
(2) PE的数量和每个PE的乘法器和加法器的数量
(3)存储器层次结构,包括存储层的数量和每一层的存储容量;
(4)允许的NoC在内存层次结构内以及内存和pe之间的数据交付模式。
注意,这些属性对体系结构的合法映射设置了某些限制。例如,每个级别的内存的存储容量
**At Mapping Time:**给定DNN模型,从加速器支持的所有映射中选择一个优化所需操作指标的映射。在第6章中,我们将讨论为DNN加速器寻找最优映射的过程
**At Configuration Time:**从所选 mapping 导出的配置被加载到加速器中。
**At Runtime:**加载所需的DNN输入数据,并根据加载的配置进行处理。但是,根据加速器的功能(例如,每个配置可以处理多少层),它可能需要在配置步骤和运行步骤之间迭代多次。
5.4 ARCHITECTURAL TECHNIQUES FOR EXPLOITING DATA REUSE
这些架构技术被称为 TEMPORAL REUSE 和 SPATIAL REUSE – 时间重用 和 空间重用。在本节中,我们将正式定义它们,并描述如何在硬件中应用这些技术
5.4.1 TEMPORAL REUSE
TEMPORAL REUSE:当相同的数据值被同一使用者多次使用时,就会发生时间重用 (例如,PE)
中间级别的数据可能会被来自源级别的新数据所取代,从而失去进一步利用时间重用的机会。中间层的数据是否被替换取决于 reuse distance。
Reuse Distance 定义为 The Consumer 访问同一数据值之间所需的数据访问次数.
1D 卷积,依次计算上图中的四个框框做点乘。注意,这里显示的数字是每个数据向量中的值的索引并非数值。
为了运行(a)中的示例1-D卷积,(b)和©中显示了两种可能的操作顺序。(b)权重的重用距离为4,©权重的重用距离为1.
考虑到(d)所示的内存层次结构,其中中间内存中只有一个插槽分配给权重,©中的排序可以充分利用时间重用,而(b)中的排序不能,因为它的重用距离大于中间内存的存储容量。
5.4.2 SPATIAL REUSE
SPATIAL REUSE: 当同一数据值被多个 Consumer (例如,一组PE)在硬件的不同空间位置使用时,就会发生空间重用.
利用空间复用的好处是:
(1) 减少对源内存级的访问次数,从而降低总体的能源成本;
(2) 减少源内存级所需的带宽,这有助于保持PE繁忙,从而提高性能.
假设:有四个 Consumer,从 C0 到 C3。每个消费者也有1个slot 用于权重存储
如果一个数据值被同一周期的所有 Consumers (下图的4个) 使用,但 L1 的存储方式是,每个 bank 只连接到 a consumer,然后需要首先从更高的 L2 利用空间重用,其中数据从 L2 multicast 到所有的L1 的 banks,每个 bank 作为一个单一的 Consumer,然后从 L1 banks 再次 multicast 到所有的消费者。
Therefore, it is a design trade-off to determine where and how to exploit spatial reuse in the hardware
5.5 TECHNIQUES TO REDUCE REUSE DISTANCE
如5.4节所述,操作的顺序决定了复用距离,这影响了时间复用和空间复用的利用效率,在本节中,我们将讨论操作操作顺序以减少重用距离的各种方法。
Tilling 可以减少部分和的重用距离,如图5.5所示
平铺可以用于开发时间重用或空间重用。用于临时重用的平铺(或临时平铺)侧重于减少特定数据类型的重用距离,使其小于内存层次结构中某个内存级别的存储容量.
There are no direct interactions between the tiling decisions for spatial and temporal
通过一次只工作一半的输出激活,从而削减部分和的重用距离减少了两倍
For example, in Figure 5.4, temporal tiling and spatial tiling are applied
at both level L1 and L2 of the storage hierarchy
5.6 DATAFLOWS AND LOOP NESTS – 还需要重复再读一次
DATAFLOW: Specifying an ordering, and which calculations run in parallel, is called a dataflow
Figure 5.8a shows the loop nest that can represent the operation ordering of the example 1-D convolution.
下图 OS 是 Output-stationary,WS 是 Weight-stationary
5.7.1 WEIGHT STATIONARY (WS)
WS: The weight-stationary dataflow is designed to minimize the energy consumption of reading weights by maximizing the reuse of weights from the register file (RF) at each PE.
5.7.2 OUTPUT STATIONARY (OS)
OS: The output-stationary dataflow is designed to minimize the energy consumption of reading and writing the partial sums. Through minimizing the reuse distance of partial sums, it keeps the accumulation of partial sums for the same output activation value local in the RF.
5.7.3 INPUT STATIONARY (IS)
Similar to the previous two dataflows, the input-stationary dataflow is designed to minimize the energy consumption of reading input activations
ShiDianNao的微架构:
Moons微架构:
5.7.4 ROW STATIONARY (RS)
RS:A row-stationary dataflow is proposed in [142], which aims to maximize the reuse and accumulation at the RF level for all types of data (weights, input activations, and partial sums) for the overall energy efficiency.
这不同于 WS、OS 或 IS 的数据流,它们只优化为分别减少访问权重、部分和或输入激活的能量
9个PE,分为3组,可以同时计算完一个 33 kernel 和 55 的 Featuremap卷积,并得到 一个 3*3 的output.
To address the high-dimensional convolution of the CONV layer (i.e., multiple feature maps, filters, and channels), multiple rows can be mapped onto the same PE.
实现 ROW STATIONARY 的一个例子是 Eyeriss[160]。它由一个14*12 PE阵列、一个108KB的全局缓冲区、ReLU和特征地图压缩单元组成,如图5.27所示。芯片使用64位双向数据总线与片外DRAM通信,将数据取入全局缓冲区。然后,全局缓冲区将数据流送入PE数组进行处理。
要解决两个问题:
1) 固定大小的PE阵列如何适应不同的 Layer Shapes?
2)尽管数据将以非常特定的 pattern 传递,但它仍然会随着不同的形状配置而变化。固定的设计如何以不同的模式传递数据?
Two mapping strategies can be used to solve the first problem:
a) Replication b) Folding
Eyeriss[160],它由一个14*12 PE 组成,上左图是是需要使用 a 133 PE array,所以就做了 133 然后 replicated4 次,形成1312 空余的部分 Clock Gated.
上右图是 需要一个 275 PE array. 为了将其放入1412 PE中,它被 folded 两部分,145 和 13*5,每一部分都垂直映射到物理PE阵列中.
5.9 FLEXIBLE NOC DESIGN FOR DNN ACCELERATORS
NoC不可或缺的一部分是现代款加速器以支持各种数据流的数据传输模式,如5.7节所述, 和它的设计必须考虑下列因素:
(1) 支持处理高并行性之间通过有效地提供数据存储和datapath公司;
(2) 利用数据复用降低带宽需求,提高能源利用率;
(3) 能够以合理的实施成本进行扩展
其实到底何时时间何时空间米有搞清楚,需要往下看吧,这里是有疑问的
Depth_Wise Convolutions 是什么?
Depth-wise (DW ) CONV:对于DW CONV层,由于缺乏 output channels,几乎不能重用 input activations。
6. Operation Mapping on Specialized Hardware
7. Reducing Precision
正如前面几章所强调的那样,数据移动主导着能源消耗,并且会影响内存受限系统的吞吐量。解决这个问题的一种方法是减少表示DNN模型的权重和激活所需的位数(bit width)。
Reducing Precision: Using fewer bits per weight and/or activation effectively reduces the number of unique values that they can take on and thus is often referred to as .
7.1 BENEFITS OF REDUCE PRECISION
首先,它减少了数据移动量,从而降低了能源消耗。减少数据移动还可以增加吞吐量,因为它减少了内存带宽需求,从而减少了处理元素(PEs)在等待数据时变为空闲的可能性。
其次,它减少了给定数量的权重、激活和/或部分和所需的存储量。这可以通过两种方式加以利用。
Finally, it reduces the cost of the MAC hardware.
7.2 DETERMINING THE BIT WIDTH
前一节强调了降低精度的潜在好处,以及MAC操作的成本如何随权值、激活和部分和的位宽而变化。在本节中,我们将讨论影响如何为这些不同的数据类型确定位宽的因素。
7.2.1 QUANTIZATION
The process of mapping data to from a large number of possible values (full precision) to a reduced set of values (reduced precision) is referred to as quantization.
量化的设计决策包括: (1) 应该以降低的精度表示的值的数量(通常称为量化级别的数量)(这会影响位宽)
Quantization Error, which is a measure of the average difference between
the original full precision and the quantized reduced precision representation
均匀量化,即量子值(qi)之间的间隔相等,可以由标准ALU硬件直接进行运算,但只有当x分布均匀时才是最优的;结果表明,在DNN模型中,权值和激活量的分布是不均匀的;因此,减少量化级别数量的一种流行的方法是使用非均匀量化。
7.2.2 STANDARD COMPONENTS OF THE BIT WIDTH
定点乘法和浮点乘法设计是不一样的。
7.3 MIXED PRECISION: DIFFERENT PRECISION FOR DIFFERENT DATA TYPES
Using different precision on different data types is commonly referred to as mixed precision
对于 Training,需要考虑的数据类型包括权重、激活和部分和。对于训练,需要考虑的数据类型包括权重、激活、部分和、梯度和权重更新。Training 通常比 Inference 要求更高的精度,因为梯度和权值更新的范围比权值和激活的范围更大。这就是为什么当训练需要16位的浮点数时,推理可以用8位的定点执行的原因。
7.5 BINARY NETS
在最极端的情况下,已经有研究将权重和/或激活的位数减少到一个位(即,将每个输入操作数限制为两个唯一的值)。
除了减少内存需求外,二进制网络还显著降低了计算成本。如果其中一个操作数是二进制的,那么乘法运算就变成了加法运算。
如果两个操作数都是二进制的,则乘法操作可以转换为XNOR,并且可以使用逐位XNOR执行多次乘法操作。在按位操作之后,使用popcount.9执行累加操作二进制网络被广泛地与内存加速器中的处理结合使用,在第10章中讨论了计算是使用存储来执行的
8. Exploiting Sparsity
DNN计算中使用的数据的一个显著特征是它是(或可以是)稀疏的。我们说数据是稀疏的,是指数据中有很多重复的值。在大多数情况下,重复值都是零。
稀疏数据的存在在很大程度上带来了两个潜在的体系结构优势:
(1) 稀疏性可以减少数据的占用,这为减少存储需求和数据移动提供了机会。这是因为稀疏数据易于被压缩,如第8.2节所述;
(2) 稀疏性提供了减少MAC操作的机会。MAC操作的减少是因为0的任何值都是0。这可以节省精力或时间,或两者兼而有之。
8.1 SOURCES OF SPARSITY
8.1.1 ACTIVATION SPARSITY
8.1.2 WEIGHT SPARSITY
Network Pruning
在剪枝的基础上采用权重重排序的方法来增加稀疏性的粒度,一个是12 ,有重排后为 34.
Dialation Convolution
8.2 COMPRESSION
正如前面所描述的,权值和激活中都存在稀疏性,这启发了对数据进行压缩的技术的应用,以减少存储空间、数据移动和/或计算,从而节省DNN加速器中的时间和/或能量。
For instance, input activations can be represented as 4-D tensors with dimensions N, H, W, and C and filter weights can be represented as 4-D.
例如,输入激活可以表示为维度N、H、W和C的4-D张量,滤波器权重可以表示为4-D tensors.
8.2.1 TENSOR TERMINOLOGY
Designing Efficient DNN Models
在本章中,我们将讨论如何设计具有高效网络结构的DNN模型,通常被称为DNN网络架构,也可以帮助实现高效的处理
10. Advanced Technologies
为了解决与数据移动相关的挑战,人们做出了各种努力,使计算和内存更紧密地结合在一起。第5章和第6章主要关注如何设计空间架构,使片上存储器更接近计算(例如PE中的临时存储器)。本章将描述使用高级内存、处理和制造技术将计算和内存结合在一起的各种其他架构。
首先,我们将描述如何使片外高密度存储器(例如,DRAM)更接近计算。这些方法通常被称为近内存处理或近数据处理,包括嵌入式DRAM和3-D堆叠DRAM等内存技术
10.1 PROCESSING NEAR MEMORY
10.2 PROCESSING IN MEMORY
10.4 PROCESSING IN THE OPTICAL DOMAIN
11. Conclusion
最近,深度神经网络(dnn)的使用出现了爆炸式增长。它们目前被广泛应用于包括计算机视觉、语音识别和机器人在内的许多人工智能(AI)应用,而且往往比人类的准确性更好。然而,尽管 DNN 可以提供这种卓越的准确性,但代价是高计算复杂度。随着通用计算[11]的改进停滞不前,出现了向更特定于领域的硬件发展的趋势,特别是DNN处理。因此,能够高效处理dnn以提高能源效率和吞吐量,同时不牺牲精度和低成本硬件的技术,对于在现有和新领域扩展dnn的部署至关重要。
创建一个有效的DNN处理系统应该从了解当前和未来的应用程序,以及当前和这些计算的潜在发展所需的具体计算开始。因此,本书调查了一些当前的应用程序,重点是计算机视觉应用程序,相关的算法,以及用于驱动算法的数据。这些应用程序、算法和输入数据正在经历快速的变化。因此,推断这些趋势,以确定处理下一代计算所需的灵活性程度,成为任何设计项目的重要组成部分。
在探索设计空间的过程中,理解和平衡重要的系统指标是至关重要的。对于DNN计算,这些包括精度、能量、吞吐量和硬件成本。当然,评估这些指标是关键,因此本书调查了DNN工作负载的重要组成部分
具体来说,DNN工作负载有两个主要组成部分。首先,工作负载由DNN模型的“网络架构”组成,包括每一层的“形状”和层间的互连。这些参数在应用程序内部和应用程序之间都可能不同。第二,工作负载由输入到DNN的具体数据组成。
该数据将随用于训练的输入集或用于推理操作期间的数据输入而变化
总之,尽管已经做了很多工作,但dnn仍然是一个重要的研究领域,在硬件设计的各个层次上有许多有前途的应用和创新机会。我们希望这本书提供了一种结构化的方式来导航DNN加速器设计的复杂空间,这将激发并引领该领域的新进展。