Key Metrics and Design Objectives for DNN Accelerator

本文详细介绍了评估DNN加速器时需要考虑的指标和影响因素,并讨论了在设计DNN加速器时应该如何做trade-off。

Key Metrics and Design Objectives

目前,深度学习加速器不断涌现,各种“XPU”深度学习加速器都有自己独特的架构优化,那么我们应该如何评估一款加速器的性能以及比较不同DNN加速器之间的好坏呢?或者说在设计一款DNN加速器时需要考虑到哪些因素呢?通常,一款通用处理器的性能我们往往用$FLOPS/W$或者$TOPS/W$来表示,但只关注加速器的性能是不够全面的,我们需要一个全面并且客观的体系来评估加速器各方面的特点,因此研究DNN加速器的评估指标,制定相应的评估系统就显得十分重要。在DNN加速器的设计过程中,加速器设计的好坏与许多因素有关,主要包括

  • 精度(accuracy)
  • 吞吐率(throughput)
  • 延迟(latency)
  • 能效(energy efficiency)
  • 功耗(power)
  • 成本(cost)
  • 灵活性(flexibility)
  • 可拓展性(scalability)

下面我们将详细介绍这些因素是如何影响DNN加速器的性能和能耗,以及讨论我们在设计DNN加速器时应该如何做折中考虑(trade-off)。

Accuracy

准确率(accuracy)是对给定任务下识别结果质量的评判。在不用任务下,准确率的定义是不一样的。例如,在图像分类任务中,准确率的定义是正确分类图片的百分比;在目标检测任务中,准确率是各类AP值的平均值(mean average precision,mAP)。

准确率的影响因素主要包括任务难度和数据集。例如,在ImageNet上的分类任务比在MNIST上的分类任务要难很多,因此准确率会低很多;目标检测任务和语意分割任务会比图像分类任务要复杂很多,因此准确率也会低一些。

Throughput

吞吐率(Throughput)表示在给定时间下处理器能够处理数据量的大小或执行任务的数量。即表示在单位时间下能够执行计算的数量。通常,吞吐率的表达式为:
$$Throughput=\frac{operations}{second}$$

在深度学习推理计算过程中,其执行的操作数等效为推理(inference)的次数,因此,吞吐率可以表示为:
$$Throughput=\frac{inferences}{second}\tag{1}$$

高吞吐率是我们想要的,因为在一些实时任务下,对数据的实时处理要求较高,高吞吐率意味着在单位时间内我们能够处理的数据更多,那么我们就可以实现高帧率或者高性能处理数据,这在无人驾驶、金融、国防安全等领域有着重要的意义。

那么我们该如何设计高吞吐率的处理器呢?我们将吞吐率的公式进行分解,具体如下:
$$\frac{inferences}{second}={\frac{operations}{second}}\times{\frac{1}{\frac{operations}{inference}}}\tag{2}$$

其中,operations per second 由DNN加速器和DNN模型决定;operations per inference 由DNN模型决定;

attention:式中这两个operations是不一样的。细心的读者可能会发现,如果将两个operations等同消掉,将右边式子还原,分子就会变成inference,而左边分子是inferences,那么两边就不相等了。为什么会这样?这是因为前面operations per second中的operations是包含倍数因子的,和inferences类似。举个例子,inferences这个值可以改变的,一般是大于1,而inference是单次推理(即为1),因此inferencesinference有个倍数关系。同理,operations per inference中的operations是由模型确定的,如果模型确定就是一个常量,但是前面operations per second中的operations肯定不是一个常量,它是受硬件设计影响的,两者存在一个倍数关系,因此综上所述,式中这两个operations是不相等的,不能等同处理。

作为DNN加速器的硬件设计者,我们主要关注 operations per second 这个项,它可以进一步分解为:
$$\frac{operations}{second}=(\frac{1}{\frac{cycles}{operation}}\times{\frac{cycles}{second}})\times PE_s\times PE_s\ utilization\tag{3}$$

其中,第一项(括号)反映的是单个PE的峰值吞吐率,它由 cycles per operationcycles per second 组成;第二项是PE单元的数量,反映计算的并行程度;第三项是PE单元的利用率,它由DNN加速器的架构设计决定。

  • 对于第一项而言,cycles per operation 是由PE单元中MAC的设计决定的,如采用流水线结构的MAC每个 operation 需要的 cycles 就会很低,cycles per second 即处理器主频$f$(MHz),可以通过优化电路的关键路径来提高。
  • 对于第二项而言,PEs的数量提升,会有更多的PE单元同时参与计算,会提高整个加速器的吞吐率。但是在整个芯片面积给定和单个PE面积不变的情况下,PE单元的数量增加通过增加PE阵列的面积,那么会造成片上存储面积的减少,这会进一步影响PE单元的利用率,从而影响到整个加速器的吞吐率。

对于第三项,我们单独来讨论,因为这涉及到DNN加速器的架构,与我们的设计有很大关系,也是我们关注的重点。理想情况下,当PE的利用率达到100%时,尽可能地提高PE的数量和单个PE的峰值吞吐率,可以实现吞吐率的最大值。但是事实上,PE的利用率并不能完全达到100%,实际的吞吐率也取决于实际PE的利用率。对于PE的利用率,它可以分解为:
$$PE_s\ utilization=\frac{number\ of\ active PE_s}{number\ of\ PE_s}\times active\ PE_s\ utilization\tag{4}$$

  • 第一项反映了处理器架构将计算任务分配给PE单元的能力,参与计算的PE越多,那么PE的利用率就会越高,它由DNN的架构决定。例如通过网络映射的方法,如果硬件架构支持DNN模型不同计算层的结构,那么就可以让更多PE单元参与计算;
  • 第二项反映了被激活的PE处理计算任务的效率,它与数据的带宽和存储器的延迟有关。

Latency

Energy efficiency

Power consumption

Hardware cost

Flexibility

Scalability

Reference

[1] V. Sze, Y. -H. Chen, T. -J. Yang and J. S. Emer, “How to Evaluate Deep Neural Network Processors: TOPS/W (Alone) Considered Harmful,” in IEEE Solid-State Circuits Magazine, vol. 12, no. 3, pp. 28-41, Summer 2020, doi: 10.1109/MSSC.2020.3002140.

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×