随着NN(Neural 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 )
本方法提供算子级和应用级对原始算子和NN应用进行分析,对其性能特征进行量化,使用这两种分析方法,就可以从应用池中选择具有代表性和多样性的NN应用作为评测套件,并提供方法逐步以后可以更新候选应用池,增加新的NN应用,并移除陈旧的NN应用。
本文得到的结论有:
主要分析流程见FIgure1:先进性算子级分析再对57个NN应用进行应用级分析。
算子级分析:因为算子是组成NN应用的主要成分,所以要先对算子进行分析,分析使用局部性和并行性两个指标用来描述算子的行为,并作为聚类分类算子的主要参考指标。
应用及分析:对NN应用中各算子的执行时间进行分析,并以此作为参考对所有的NN应用进行相似度分析,从而确定评测套件中的NN应用
分析候选应用池中的所有算子,对算子从硬件设计的角度进行特征分析,并根据这些指标对算子进行分类。
对每一个NN应用中每种算子的执行时间进行分析。
如果一种算子的执行时间较长则说明该应用需要针对这一算子进行优化。
而经过算子级分析已经可以知道每种算子的问题是出现在局部性上还是在并行性上,所以可以进一步确定硬件的瓶颈。
经过算子级的分析后,算子已经使用局部性特征和并行性这两种特征进行分析分析结果如Figure 2 (a)所示,并使用k-means对所有算子进行分类,公聚类出三类算子( clusters 1, clusters 2, clusters 3),分类结果如Figure 2 (b)所示。
局部性(Locality)特征值越低代表其局部性越好。
并行性(Parallelism)特征值越高代表其可并行性的程度越高。
算子级分析之后进行应用级别的分析,分别在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
通过对TF model zoo 57个模型进行相似度分析,聚类结果如figure3所示,得到10个有代表性的模型组成NNBench-x,见下表。
NNBenchx最终选择出一些NN应用,这些NN应用的性能特征能够反映出各算子执行时间的不同分布方式,这就可以反映出硬件设计的瓶颈在哪里。例如:如果一个应用的R2值比较大,那么就说明硬件的性能瓶颈来自cluster2的算子,而根据cluster2的算子的特征就知道在硬件设计上需要更多的资源和更大的片上内存,同样的如果一个应用的R3值比较大,则说明相应的硬件设计应该往高内存带宽的方向进行优化。
算子级别区别于其他评测方法的主要优势。如不进行算子级别的分析,那么对硬件的瓶颈分析将会具有误导性,例如fathom没有进行算子级的分析,则必须使用基于功能的算子( function-based)进行分析,这样则会导致对硬件设计优化方向的误导。
本方法从候选应用池中选择NN应用组成评测套件,这种方法选择出的网络应用更具有代表性和多样性。
首先这文章属于学习笔记,里面一定会有错误的内容,仅供参考,一切以原文为准。
如果你发现文章中的错误,欢迎留言指正,多谢。
后续可能会更新其他人工智能芯片或深度学习系统benchmark的学习笔记。