【论文学习】NNBench-X: Benchmarking and Understanding Neural Network Workloads for Accelerator Designs

NNBench-X:针对神经网络加速器硬件设计来评测和理解神经网络模型

  • 摘要
  • 引言
  • 特征描述方法
    • 算子级分析
    • 应用级分析
  • 特征描述过程
  • 分析和观察
    • 算子级分析后的发现
    • 应用级分析后的发现
    • 硬件设计的参考意义
  • 本方法的优势
  • 说明

原文地址: https://ieeexplore.ieee.org/xpl/mostRecentIssue.jsp?punumber=10208&isnumber=4357966
作者:Xinfeng Xie, Xing Hu, Peng Gu, Shuangchen Li, Yu Ji, and Yuan Xie
University of California, Santa Barbara

摘要

随着NNNeural Network神经网络)应用的普及,针对特定应用而设计的NN加速器越来越多。在设计硬件的过程中就会发现,评测套件和评测方法对于NN应用和加速器硬件设计都很重要。本方法在NN应用候选池(application candidate pool)中使用算子级别分析( operator-level analysis)和应用级别分析( application-level analysis)来了解算子tensor和NN应用的性能特征。在对TF model zoo中的网络模型分析后发现,即使是具有相同功能的算子(tensor operators)一旦该输入数据大小的不同,也会导致同类算子间性能特征的不同,而且不同功能的算子也可以在某些情况具有类似的性能特征,本文发现如不进行算子级别的分析,那么TF(TensorFlow) model zoo中的15个模型(共57个模型)将无法描述其应用瓶颈。本特征分析方法可以从候选应用池中选出最具代表性的应用,并为硬件加速器设计提供帮助。

引言

针对NN应用的ASICS设计具有风险具有挑战性,因为ASIC的开发需要耗费相当长的开发周期,如果最终加速器设计没有捕捉到新NN应用的某些特性,那么这一加速器将会很快过时,因为软件的迭代速度很快,所以就需要评测套件来抓住NN应用的性能特征,从来指导专用加速器的硬件架构设计。

已有评测方法的弊端(Fathom , BenchIP ,MLPerf , AI Matrix )

  1. 应用程序的选择大多根据经验来确定,没有采用一致的定量分析方法。
  2. 没有提供量化方法来对评测套件进行升级和自定义。

本方法提供算子级和应用级对原始算子和NN应用进行分析,对其性能特征进行量化,使用这两种分析方法,就可以从应用池中选择具有代表性和多样性的NN应用作为评测套件,并提供方法逐步以后可以更新候选应用池,增加新的NN应用,并移除陈旧的NN应用。

本文得到的结论有:

  1. 不同功能的算子可以在某些情况具有类似的性能特征。
  2. 如不进行算子级别的分析,TF model zoo中的15/57个模型将无法描述其在反应硬件上瓶颈。

特征描述方法

【论文学习】NNBench-X: Benchmarking and Understanding Neural Network Workloads for Accelerator Designs_第1张图片
主要分析流程见FIgure1:先进性算子级分析再对57个NN应用进行应用级分析。
算子级分析:因为算子是组成NN应用的主要成分,所以要先对算子进行分析,分析使用局部性和并行性两个指标用来描述算子的行为,并作为聚类分类算子的主要参考指标。
应用及分析:对NN应用中各算子的执行时间进行分析,并以此作为参考对所有的NN应用进行相似度分析,从而确定评测套件中的NN应用

算子级分析

分析候选应用池中的所有算子,对算子从硬件设计的角度进行特征分析,并根据这些指标对算子进行分类。

  1. 局部性指标(Locality):
    一种运算所需要的数据量除以它需要的标量计算量。
    这一指标反映了理想内存系统的时间局部性和空间局部性。
    该指标的值越低,表示运算符的局部性越好。
  2. 并行性指标(Parallelism):
    定义:可以并行执行的标量算术运算的比率(假设有足够的硬件资源)。
    这个指标反映了算子在数据依赖方面的并行性。
    该度量值越高,表示运算符的可用并行性越大。

应用级分析

对每一个NN应用中每种算子的执行时间进行分析。
如果一种算子的执行时间较长则说明该应用需要针对这一算子进行优化。
而经过算子级分析已经可以知道每种算子的问题是出现在局部性上还是在并行性上,所以可以进一步确定硬件的瓶颈。

特征描述过程

【论文学习】NNBench-X: Benchmarking and Understanding Neural Network Workloads for Accelerator Designs_第2张图片
经过算子级的分析后,算子已经使用局部性特征和并行性这两种特征进行分析分析结果如Figure 2 (a)所示,并使用k-means对所有算子进行分类,公聚类出三类算子( clusters 1, clusters 2, clusters 3),分类结果如Figure 2 (b)所示。

局部性(Locality)特征值越低代表其局部性越好。
并行性(Parallelism)特征值越高代表其可并行性的程度越高。

【论文学习】NNBench-X: Benchmarking and Understanding Neural Network Workloads for Accelerator Designs_第3张图片
算子级分析之后进行应用级别的分析,分别在Intel Xeon E5-2680 CPU 和 NVIDIA Titan Xp GPU 这两种通用处理器上分析,该方法最终选择CPU架构作为参考来选择NN应用
R1,R2,R3可以理解为每种NN应用执行这三类算子( clusters 1, 2, 3)所需要的时间,其中R1的时间太小可以忽略不计
f = (R1, R2, R3);
R1 + R2 + R3 = 1
【论文学习】NNBench-X: Benchmarking and Understanding Neural Network Workloads for Accelerator Designs_第4张图片
通过对TF model zoo 57个模型进行相似度分析,聚类结果如figure3所示,得到10个有代表性的模型组成NNBench-x,见下表。
【论文学习】NNBench-X: Benchmarking and Understanding Neural Network Workloads for Accelerator Designs_第5张图片

分析和观察

算子级分析后的发现

  1. 卷积算子和矩阵乘法算子十分相似,都具有很好的局部性和较好的并行性。
  2. 所有的element-wise算子都具有相同的并行性,且并行性最高。
  3. 即使是相同的算子,它们的性能特征也可能会十分不同。

应用级分析后的发现

  1. Conv, MatMul 和 Element-wise 这三个算子的占一个应用运行时间的主要部分。
  2. GPU在执行cluster3的算子时花费了更多的时间,说明其需要在内存系统上进行优化。
  3. Figure 4图中标明了各个NN应用的的应用领域,大多数的CV应用在cluster2算子花费的时间R2最多,NLP应用花费在cluster3算子上的时间R3最多,所以如果针对NLP应用设计硬件的话,应该着重优化其内存系统的性能。

硬件设计的参考意义

NNBenchx最终选择出一些NN应用,这些NN应用的性能特征能够反映出各算子执行时间的不同分布方式,这就可以反映出硬件设计的瓶颈在哪里。例如:如果一个应用的R2值比较大,那么就说明硬件的性能瓶颈来自cluster2的算子,而根据cluster2的算子的特征就知道在硬件设计上需要更多的资源和更大的片上内存,同样的如果一个应用的R3值比较大,则说明相应的硬件设计应该往高内存带宽的方向进行优化。

本方法的优势

算子级别区别于其他评测方法的主要优势。如不进行算子级别的分析,那么对硬件的瓶颈分析将会具有误导性,例如fathom没有进行算子级的分析,则必须使用基于功能的算子( function-based)进行分析,这样则会导致对硬件设计优化方向的误导。
本方法从候选应用池中选择NN应用组成评测套件,这种方法选择出的网络应用更具有代表性和多样性。

说明

首先这文章属于学习笔记,里面一定会有错误的内容,仅供参考,一切以原文为准。
如果你发现文章中的错误,欢迎留言指正,多谢。
后续可能会更新其他人工智能芯片或深度学习系统benchmark的学习笔记。

你可能感兴趣的:(论文学习)