CN116701144A - 性能分析方法、装置、存储介质及程序产品 - Google Patents
性能分析方法、装置、存储介质及程序产品 Download PDFInfo
- Publication number
- CN116701144A CN116701144A CN202310672703.8A CN202310672703A CN116701144A CN 116701144 A CN116701144 A CN 116701144A CN 202310672703 A CN202310672703 A CN 202310672703A CN 116701144 A CN116701144 A CN 116701144A
- Authority
- CN
- China
- Prior art keywords
- performance
- processor
- model
- graphic processor
- target
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000004458 analytical method Methods 0.000 title claims abstract description 71
- 238000003860 storage Methods 0.000 title claims abstract description 30
- 238000000034 method Methods 0.000 claims abstract description 45
- 230000006870 function Effects 0.000 claims description 139
- 238000004364 calculation method Methods 0.000 claims description 46
- 230000005540 biological transmission Effects 0.000 claims description 16
- 238000005259 measurement Methods 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 13
- 230000004913 activation Effects 0.000 claims description 8
- 238000012805 post-processing Methods 0.000 claims description 7
- 238000007781 pre-processing Methods 0.000 claims description 7
- 230000000694 effects Effects 0.000 abstract description 13
- 238000005457 optimization Methods 0.000 description 27
- 238000010586 diagram Methods 0.000 description 24
- 238000012545 processing Methods 0.000 description 17
- 230000000007 visual effect Effects 0.000 description 16
- 238000013473 artificial intelligence Methods 0.000 description 11
- VYZAMTAEIAYCRO-UHFFFAOYSA-N Chromium Chemical compound [Cr] VYZAMTAEIAYCRO-UHFFFAOYSA-N 0.000 description 6
- 238000013135 deep learning Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000001747 exhibiting effect Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000003062 neural network model Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3414—Workload generation, e.g. scripts, playback
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3452—Performance evaluation by statistical analysis
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Life Sciences & Earth Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Probability & Statistics with Applications (AREA)
- Stored Programmes (AREA)
Abstract
本公开涉及一种性能分析方法、装置、存储介质及程序产品,所述方法包括:分别获取第一模型在目标图形处理器和基准图形处理器上运行时的性能原始数据;分析性能原始数据,分别得到第一模型在目标图形处理器和基准图形处理器上运行时的性能展示数据;根据目标图形处理器和基准图形处理器的硬件性能比对参数,以及性能原始数据、性能展示数据中的至少一个,确定第一模型在目标图形处理器和基准图形处理器上运行时,目标图形处理器的软件栈与基准图形处理器的软件栈的性能差距。根据本公开实施例的性能分析方法,通过获取对应于软件栈的多种层次的性能原始数据并进行分析,实现从软件栈的不同层次定位性能瓶颈,提高性能分析效果。
Description
技术领域
本公开涉及人工智能领域,尤其涉及一种性能分析方法、装置、存储介质及程序产品。
背景技术
近年来,基于深度学习的人工智能应用落地正在如火如荼的展开。人工智能应用通常需要使用图形处理器(graphics processing unit,GPU)运行,而想要高性能的运行这些应用,就需要对图形处理器的软件栈进行深度调优。软件栈主要包括多个层次:驱动层,计算层,框架层,模型层,应用层。通常,这些层次是串行的调用关系,一旦某个层次性能较差,就会影响到软件栈整体的性能。那么就需要从不同的层次对软件栈的性能进行分析,从而找到软件栈性能瓶颈,然后针对性地调优,以提高人工智能应用的运行效果。
目前业界已有的分析工具基本都是从模型层或者驱动层进行分析,支持的层次较少,不能有效的找到软件栈性能瓶颈。
发明内容
有鉴于此,本公开提出了一种性能分析方法、装置、存储介质及程序产品,根据本公开实施例的性能分析方法,通过获取对应于软件栈的多种层次的性能原始数据并进行分析,实现从软件栈的不同层次定位性能瓶颈,提高性能分析效果。
根据本公开的一方面,提供了一种性能分析方法,所述方法包括:分别获取第一模型在目标图形处理器和基准图形处理器上运行时的性能原始数据,所述目标图形处理器的软件栈和所述基准图形处理器的软件栈具有相同的多个层次,所述性能原始数据包括与所述多个层次对应的多种类型的数据,每个层次对应至少一个类型;分析所述性能原始数据,分别得到所述第一模型在所述目标图形处理器和所述基准图形处理器上运行时的性能展示数据,所述性能展示数据包括算子执行耗时、算子调用次数和显卡利用率中的至少一种;根据所述目标图形处理器和所述基准图形处理器的硬件性能比对参数,以及所述性能原始数据、所述性能展示数据中的至少一个,确定所述第一模型在所述目标图形处理器和所述基准图形处理器上运行时,所述目标图形处理器的软件栈与所述基准图形处理器的软件栈的性能差距。
在一种可能的实现方式中,所述方法还包括:展示所述性能展示数据和所述性能差距,并接收反馈信息,所述反馈信息指示至少一种优化所述目标图形处理器的软件栈的方式;根据所述反馈信息优化所述目标图形处理器的软件栈;重新执行分别获取第一模型在目标图形处理器和基准图形处理器上运行时的性能原始数据及之后的步骤。
在一种可能的实现方式中,所述第一模型是计算密集类型时,所述目标图形处理器和所述基准图形处理器的硬件性能对比参数包括计算性能对比参数,所述方法还包括:从预设的计算任务库中选择计算密集类型的第一计算任务;按照所述基准图形处理器的软件栈的配置方式,对所述目标图形处理器的软件栈进行相同的配置;分别获取所述第一计算任务在所述目标图形处理器和所述基准图形处理器上运行的耗时,根据所述耗时,确定所述目标图形处理器和所述基准图形处理器的软件栈的效率;根据所述目标图形处理器的理论算力和所述目标图形处理器的软件栈的效率得到所述目标图形处理器的实测性能参数;根据所述基准图形处理器的理论算力和所述基准图形处理器的软件栈的效率得到所述基准图形处理器的实测性能参数;根据所述目标图形处理器的实测性能参数和所述基准图形处理器的实测性能参数得到所述目标图形处理器和所述基准图形处理器的计算性能对比参数。
在一种可能的实现方式中,所述第一模型是输入输出密集类型时,所述目标图形处理器和所述基准图形处理器的硬件性能对比参数包括带宽对比参数,所述方法还包括:从预设的计算任务库中选择输入输出密集类型的第二计算任务;按照所述基准图形处理器的软件栈的配置方式,对所述目标图形处理器的软件栈进行相同的配置;分别获取所述第二计算任务在所述目标图形处理器和所述基准图形处理器上运行的耗时,根据所述耗时,确定所述目标图形处理器和所述基准图形处理器的实测带宽参数;根据所述目标图形处理器的实测带宽参数和所述基准图形处理器的实测带宽参数得到所述目标图形处理器和所述基准图形处理器的带宽对比参数。
在一种可能的实现方式中,所述多个层次包括计算层、框架层和模型层,所述性能原始数据包括的第一类型数据是所述模型层对应的模型端到端性能数据,第二类型数据是所述模型层对应的模型不同运行阶段性能数据,第三类型数据是所述框架层对应的痕迹数据,第四类型数据是所述计算层对应的核函数数据,所述不同运行阶段包括预处理阶段、内存到显存的数据传输阶段、推理阶段、显存到内存的数据传输阶段、后处理阶段。
在一种可能的实现方式中,所述第一模型的参数包括批尺寸,所述模型端到端性能数据包括吞吐量,所述分别获取第一模型在目标图形处理器和基准图形处理器上运行时的性能原始数据,包括:分别获取所述第一模型在所述目标图形处理器和所述基准图形处理器上运行的耗时;根据所述第一模型在所述目标图形处理器上运行的耗时与所述批尺寸的比值,得到所述第一模型在所述目标图形处理器上运行的吞吐量;根据所述第一模型在所述基准图形处理器上运行的耗时与所述批尺寸的比值,得到所述第一模型在所述基准图形处理器上运行的吞吐量。
在一种可能的实现方式中,所述第一模型包括多个算子,所述痕迹数据包括每一算子的算子执行耗时,所述分别获取第一模型在目标图形处理器和基准图形处理器上运行时的性能原始数据,包括:使用所述框架层提供的分析器,分别分析所述第一模型在目标图形处理器和基准图形处理器上运行时每一算子的性能,得到每一算子的算子执行耗时。
在一种可能的实现方式中,所述第一模型包括多个算子,所述算子调用所述计算层的核函数,所述核函数数据包括所述核函数的吞吐量和带宽,所述分别获取第一模型在目标图形处理器和基准图形处理器上运行时的性能原始数据,还包括:分别获取第一模型在目标图形处理器和基准图形处理器上运行时所述核函数的运行耗时、计算量以及访存大小;根据所述第一模型在所述目标图形处理器上运行时所述核函数的计算量与所述核函数的运行耗时的比值,得到所述第一模型在所述目标图形处理器上运行时所述核函数的吞吐量;根据所述第一模型在所述目标图形处理器上运行时所述核函数的访存大小与所述核函数的运行耗时的比值,得到所述第一模型在所述目标图形处理器上运行时所述核函数的带宽;根据所述第一模型在所述基准图形处理器上运行时所述核函数的计算量与所述核函数的运行耗时的比值,得到所述第一模型在所述基准图形处理器上运行时所述核函数的吞吐量;根据所述第一模型在所述基准图形处理器上运行时所述核函数的访存大小与所述核函数的运行耗时的比值,得到所述第一模型在所述基准图形处理器上运行时所述核函数的带宽。
在一种可能的实现方式中,所述优化所述目标图形处理器的软件栈的方式包括以下至少一种:在所述框架层中增加显存池,针对所述第一模型包括的占用显存大小固定的算子,分配固定的显存地址;根据算子执行耗时大于第一阈值的至少一个算子的输入尺寸,调整该至少一个算子调用的核函数的参数;对所述第一模型包括的卷积类型算子、元素逻辑运算类型算子、激活函数类型算子进行融合;将调用次数大于第二阈值或数据拷贝次数大于第三阈值的至少一个算子的核函数增加至所述计算层的函数库。
根据本公开的另一方面,提供了一种性能分析装置,所述装置包括:第一获取模块,用于分别获取第一模型在目标图形处理器和基准图形处理器上运行时的性能原始数据,所述目标图形处理器的软件栈和所述基准图形处理器的软件栈具有相同的多个层次,所述性能原始数据包括与所述多个层次对应的多种类型的数据,每个层次对应至少一个类型;第一分析模块,用于分析所述性能原始数据,分别得到所述第一模型在所述目标图形处理器和所述基准图形处理器上运行时的性能展示数据,所述性能展示数据包括算子执行耗时、算子调用次数和显卡利用率中的至少一种;第一确定模块,用于根据所述目标图形处理器和所述基准图形处理器的硬件性能比对参数,以及所述性能原始数据、所述性能展示数据中的至少一个,确定所述第一模型在所述目标图形处理器和所述基准图形处理器上运行时,所述目标图形处理器的软件栈与所述基准图形处理器的软件栈的性能差距。
在一种可能的实现方式中,所述装置还包括:第一展示模块,用于展示所述性能展示数据和所述性能差距,并接收反馈信息,所述反馈信息指示至少一种优化所述目标图形处理器的软件栈的方式;第一优化模块,用于根据所述反馈信息优化所述目标图形处理器的软件栈;以及用于驱动所述第一获取模块重新执行分别获取第一模型在目标图形处理器和基准图形处理器上运行时的性能原始数据及之后的步骤。
在一种可能的实现方式中,所述第一模型是计算密集类型时,所述目标图形处理器和所述基准图形处理器的硬件性能对比参数包括计算性能对比参数,所述装置还包括:第一选择模块,用于从预设的计算任务库中选择计算密集类型的第一计算任务;第一配置模块,用于按照所述基准图形处理器的软件栈的配置方式,对所述目标图形处理器的软件栈进行相同的配置;第二获取模块,用于分别获取所述第一计算任务在所述目标图形处理器和所述基准图形处理器上运行的耗时,根据所述耗时,确定所述目标图形处理器和所述基准图形处理器的软件栈的效率;第二确定模块,用于根据所述目标图形处理器的理论算力和所述目标图形处理器的软件栈的效率得到所述目标图形处理器的实测性能参数;第三确定模块,用于根据所述基准图形处理器的理论算力和所述基准图形处理器的软件栈的效率得到所述基准图形处理器的实测性能参数;第四确定模块,用于根据所述目标图形处理器的实测性能参数和所述基准图形处理器的实测性能参数得到所述目标图形处理器和所述基准图形处理器的计算性能对比参数。
在一种可能的实现方式中,所述第一模型是输入输出密集类型时,所述目标图形处理器和所述基准图形处理器的硬件性能对比参数包括带宽对比参数,所述装置还包括:第二选择模块,用于从预设的计算任务库中选择输入输出密集类型的第二计算任务;第二配置模块,用于按照所述基准图形处理器的软件栈的配置方式,对所述目标图形处理器的软件栈进行相同的配置;第三获取模块,用于分别获取所述第二计算任务在所述目标图形处理器和所述基准图形处理器上运行的耗时,根据所述耗时,确定所述目标图形处理器和所述基准图形处理器的实测带宽参数;第五确定模块,用于根据所述目标图形处理器的实测带宽参数和所述基准图形处理器的实测带宽参数得到所述目标图形处理器和所述基准图形处理器的带宽对比参数。
在一种可能的实现方式中,所述多个层次包括计算层、框架层和模型层,所述性能原始数据包括的第一类型数据是所述模型层对应的模型端到端性能数据,第二类型数据是所述模型层对应的模型不同运行阶段性能数据,第三类型数据是所述框架层对应的痕迹数据,第四类型数据是所述计算层对应的核函数数据,所述不同运行阶段包括预处理阶段、内存到显存的数据传输阶段、推理阶段、显存到内存的数据传输阶段、后处理阶段。
在一种可能的实现方式中,所述第一模型的参数包括批尺寸,所述模型端到端性能数据包括吞吐量,所述第一获取模块具体用于:分别获取所述第一模型在所述目标图形处理器和所述基准图形处理器上运行的耗时;根据所述第一模型在所述目标图形处理器上运行的耗时与所述批尺寸的比值,得到所述第一模型在所述目标图形处理器上运行的吞吐量;根据所述第一模型在所述基准图形处理器上运行的耗时与所述批尺寸的比值,得到所述第一模型在所述基准图形处理器上运行的吞吐量。
在一种可能的实现方式中,所述第一模型包括多个算子,所述痕迹数据包括每一算子的算子执行耗时,所述第一获取模块具体用于:使用所述框架层提供的分析器,分别分析所述第一模型在目标图形处理器和基准图形处理器上运行时每一算子的性能,得到每一算子的算子执行耗时。
在一种可能的实现方式中,所述第一模型包括多个算子,所述算子调用所述计算层的核函数,所述核函数数据包括所述核函数的吞吐量和带宽,所述第一获取模块具体用于:分别获取第一模型在目标图形处理器和基准图形处理器上运行时所述核函数的运行耗时、计算量以及访存大小;根据所述第一模型在所述目标图形处理器上运行时所述核函数的计算量与所述核函数的运行耗时的比值,得到所述第一模型在所述目标图形处理器上运行时所述核函数的吞吐量;根据所述第一模型在所述目标图形处理器上运行时所述核函数的访存大小与所述核函数的运行耗时的比值,得到所述第一模型在所述目标图形处理器上运行时所述核函数的带宽;根据所述第一模型在所述基准图形处理器上运行时所述核函数的计算量与所述核函数的运行耗时的比值,得到所述第一模型在所述基准图形处理器上运行时所述核函数的吞吐量;根据所述第一模型在所述基准图形处理器上运行时所述核函数的访存大小与所述核函数的运行耗时的比值,得到所述第一模型在所述基准图形处理器上运行时所述核函数的带宽。
在一种可能的实现方式中,所述优化所述目标图形处理器的软件栈的方式包括以下至少一种:在所述框架层中增加显存池,针对所述第一模型包括的占用显存大小固定的算子,分配固定的显存地址;根据算子执行耗时大于第一阈值的至少一个算子的输入尺寸,调整该至少一个算子调用的核函数的参数;对所述第一模型包括的卷积类型算子、元素逻辑运算类型算子、激活函数类型算子进行融合;将调用次数大于第二阈值或数据拷贝次数大于第三阈值的至少一个算子的核函数增加至所述计算层的函数库。
根据本公开的另一方面,提供了一种性能分析装置,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为在执行所述存储器存储的指令时,实现上述方法。
根据本公开的另一方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其中,所述计算机程序指令被处理器执行时实现上述方法。
根据本公开的另一方面,提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述方法。
根据本公开实施例的性能分析方法,通过分别获取第一模型在目标图形处理器和基准图形处理器上运行时的性能原始数据,目标图形处理器的软件栈和基准图形处理器的软件栈具有相同的多个层次,性能原始数据包括与多个层次对应的多种类型的数据,因此性能原始数据能够更全面地表征软件栈的实际性能;软件栈的每个层次可以对应至少一个类型,保证性能原始数据具备一定的准确度;通过分析性能原始数据,分别得到第一模型在目标图形处理器和基准图形处理器上运行时的性能展示数据,性能展示数据包括算子执行耗时、算子调用次数和显卡利用率中的至少一种,使得性能原始数据也得以多样化;根据性能原始数据和性能展示数据以及目标图形处理器和基准图形处理器的硬件性能比对参数,确定第一模型在目标图形处理器和基准图形处理器上运行时,目标图形处理器的软件栈与基准图形处理器的软件栈的性能差距,实现从软件栈的不同层次定位运行第一模型时软件栈各层面的性能瓶颈。根据本公开实施例的性能分析方法,在不同厂商的图形处理器软件栈规格与硬件规格均不同的情况下,也能定量的比较图形处理器的软件栈性能,并且可实现从软件栈的不同层次定位性能瓶颈,提高性能分析效果。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开实施例的性能分析方法的示例性应用场景。
图2示出根据本公开实施例的性能分析方法的流程示意图。
图3示出根据本公开实施例的软件栈的架构的示意图。
图4示出根据本公开实施例展示算子执行耗时占比的界面的示例。
图5示出根据本公开实施例展示算子执行耗时占比的界面的示例。
图6示出根据本公开实施例展示算子详细信息的界面的一个示例。
图7示出根据本公开实施例展示算子调用栈的界面的示例。
图8示出根据本公开实施例展示算子详细信息的界面的另一个示例。
图9示出根据本公开实施例的性能分析工具PVRTune展示可视化显卡利用率的效果示例。
图10示出根据本公开实施例优化前目标图形处理器的算子执行耗时与基准图形处理器的算子执行耗时的对比的示意图。
图11示出根据本公开实施例优化前后目标图形处理器的软件栈与基准图形处理器的软件栈的吞吐量的对比的示意图。
图12示出根据本公开实施例优化前后目标图形处理器的软件栈与基准图形处理器的软件栈的吞吐量的对比的示意图。
图13示出根据本公开实施例的性能分析装置的示例性结构图。
图14示出根据本公开实施例的性能分析装置1900的结构的示意图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
当前业界主流使用英伟达公司(NVIDIA)的软件栈,而NVIDIA的软件栈经过10多年的积累与优化,性能已经比较占优势。但是NVIDIA的软件栈不开源,其他GPU厂商无法使用,需要自研相应的软件栈,同时需要让自研的软件栈性能足够优异,才能在市场的竞争中占据优势。当前业界自研软件栈的公司为数不多,因此相关进行性能分析及调优的需求较少,已有的分析工具基本都是从模型层或者驱动层进行分析,支持的层次较少,不能有效的找到软件栈性能瓶颈。
有鉴于此,本公开提出了一种性能分析方法、装置、存储介质及程序产品,根据本公开实施例的性能分析方法,通过获取对应于软件栈的多种层次的性能原始数据并进行分析,实现从软件栈的不同层次定位性能瓶颈,提高性能分析效果。
图1示出根据本公开实施例的性能分析方法的示例性应用场景。
如图1所示,本公开实施例的性能分析方法可以由计算机1中的中央处理器执行,计算机1上还可设置有显卡1和显卡2。其中显卡1上可设置有目标图形处理器,显卡2上可设置有基准图形处理器。目标图形处理器和基准图形处理器均可运行人工智能应用。运行人工智能应用时,调用下文所述的第一模型。人工智能应用和第一模型的示例可以参见下文及图3的相关描述。
计算机1中可预先存储有目标图形处理器和基准图形处理器的硬件性能比对参数。中央处理器执行本公开实施例的性能分析方法,从显卡1的目标图形处理器处可以获取第一模型在目标图形处理器上运行时的性能原始数据,从显卡2的基准图形处理器处可以获取第一模型在基准图形处理器上运行时的性能原始数据。根据获取的性能原始数据,以及目标图形处理器和基准图形处理器的硬件性能比对参数,可分析并确定目标图形处理器和基准图形处理器的软件栈的性能差距,并通过计算机1的显示屏等展示给用户。用户给出反馈信息后,中央处理器可根据反馈信息优化目标图形处理器的软件栈性能。
本领域技术人员应理解,以上所述的显卡1和显卡2也可以设置在可与计算机1通信的其他计算机上,性能分析方法可以由服务器上的中央处理器执行,本公开实施例对中央处理器、显卡1、显卡2的具体设置位置不作限制。
图2示出根据本公开实施例的性能分析方法的流程示意图。
如图2所示,在一种可能的实现方式中,所述方法包括步骤S21-步骤S23:
步骤S21,分别获取第一模型在目标图形处理器和基准图形处理器上运行时的性能原始数据,目标图形处理器的软件栈和基准图形处理器的软件栈具有相同的多个层次,性能原始数据包括与多个层次对应的多种类型的数据,每个层次对应至少一个类型。
其中,目标图形处理器和基准图形处理器均可以是现有技术已有的图形处理器。目标图形处理器可以是有优化需求的图形处理器,基准图形处理器可以作为优化的基准,二者可以由用户确定。目标图形处理器的软件栈和基准图形处理器的软件栈可具有相同的多个层次,图3示出根据本公开实施例的软件栈的架构的示意图。
如图3所示,软件栈可包括驱动层、计算层、框架层、模型层、应用层。其中驱动层可包括内核模式驱动程序(kernel mode driver,KMD)、用户模式驱动程序(user modedriver,UMD)、运行时驱动程序(runtime driver)等多种驱动程序,用于驱动加速器(即图形处理器)。计算层可包括深度神经网络(deep neural networks,DNN)库、傅里叶变换(thefastest fourier transform,FFT)函数库、基础线性代数子程序库(basic linearalgebra subprograms)等多种库,与本公开的性能分析方法有关的主要是DNN库,DNN库中包括大量的核函数,可以被模型的算子调用。框架层可包括常见的TensorFlow、PyTorch、TensorRT等深度学习框架/引擎,与本公开的性能分析方法有关的主要是TensorFlow、PyTorch。模型层可包括视觉模型、自然语言处理模型、推荐模型等多种深度神经网络模型。应用层可包括人脸识别应用、对话机器人应用、视频推荐系统等人工智能领域的多种应用(人工智能应用)。
在实现人工智能应用时,软件栈的这些层次是串行的调用关系,例如执行人脸识别应用的过程中,可以是依次调用模型层的视觉模型、框架层的TensorFlow框架、计算层的DNN库、驱动层的运行时驱动程序。在此情况下,一旦某个层次性能较差,就会影响到软件栈整体的性能。
第一模型可以是现有技术实现的深度神经网络模型,可以是图3所示的模型层中的任意一个模型,本公开对此不作限制。第一模型可以有多种类型,如下文所述的计算密集类型和输入输出(input/output,IO)密集类型,本公开对于第一模型的具体类型不作限制。
第一模型在目标图形处理器和基准图形处理器上运行时,可以产生性能原始数据,性能原始数据包括与软件栈的多个层次对应的多种类型的数据,因此性能原始数据能够更全面地表征软件栈的实际性能。软件栈的每个层次可以对应至少一个类型,保证性能原始数据具备一定的准确度。
步骤S22,分析性能原始数据,分别得到第一模型在目标图形处理器和基准图形处理器上运行时的性能展示数据,性能展示数据包括算子执行耗时、算子调用次数和显卡利用率中的至少一种。
性能展示数据可以是在不改变性能原始数据的数值的情况下对性能原始数据中的部分信息进行提取和整理得到的数据,也可以是对性能原始数据中的信息进行二次加工,得到新的数据。步骤S22可以借助现有技术的可视化性能分析工具来完成。例如可使用tensorboard,PVRTune,Chrome://tracing等可视化性能分析工具中的一个或多个。其中tensorboard和Chrome://tracing主要用于获取算子执行耗时、算子调用次数,PVRTune可用于获取显卡利用率。算子可以是第一模型包括的算子,显卡可以是目标图形处理器和基准图形处理器所属的显卡。针对应用场景需求的性能展示数据可以适应性选择合适的可视化性能分析工具。
性能展示数据在用户界面上可以展示为容易被用户所理解的图表等(示例可参见图4-图8)。可以理解的是,可以用于分析性能原始数据的可视化性能分析工具应不止上述示例,只要能够得到容易被用户所理解的性能展示数据即可,本公开对于性能分析工具的具体类型不作限制。
步骤S23,根据目标图形处理器和基准图形处理器的硬件性能比对参数,以及性能原始数据、性能展示数据中的至少一个,确定第一模型在目标图形处理器和基准图形处理器上运行时,目标图形处理器的软件栈与基准图形处理器的软件栈的性能差距。
目标图形处理器和基准图形处理器的硬件性能比对参数可以在执行步骤S21之前确定好,其示例性确定方式可以参见下文表1和表2的相关描述。该硬件性能比对参数可以指示软件栈性能相同的前提下,目标图形处理器和基准图形处理器的硬件性能差距。性能原始数据和性能展示数据均指示图形处理器的整体性能,是图形处理器的硬件性能和软件栈性能的综合结果。因此,在步骤S23中,还可以使用该硬件性能比对参数去除目标图形处理器和基准图形处理器的硬件性能差距对性能原始数据和性能展示数据带来的影响,得到目标图形处理器的软件栈与基准图形处理器的软件栈的性能差距。其示例可以参见下文的相关描述。
根据本公开实施例的性能分析方法,通过分别获取第一模型在目标图形处理器和基准图形处理器上运行时的性能原始数据,目标图形处理器的软件栈和基准图形处理器的软件栈具有相同的多个层次,性能原始数据包括与多个层次对应的多种类型的数据,因此性能原始数据能够更全面地表征软件栈的实际性能;软件栈的每个层次可以对应至少一个类型,保证性能原始数据具备一定的准确度;通过分析性能原始数据,分别得到第一模型在目标图形处理器和基准图形处理器上运行时的性能展示数据,性能展示数据包括算子执行耗时、算子调用次数和显卡利用率中的至少一种,使得性能原始数据也得以多样化;根据性能原始数据和性能展示数据以及目标图形处理器和基准图形处理器的硬件性能比对参数,确定第一模型在目标图形处理器和基准图形处理器上运行时,目标图形处理器的软件栈与基准图形处理器的软件栈的性能差距,实现从软件栈的不同层次定位运行第一模型时软件栈各层面的性能瓶颈。根据本公开实施例的性能分析方法,在不同厂商的图形处理器软件栈规格与硬件规格均不同的情况下,也能定量的比较图形处理器的软件栈性能,并且可实现从软件栈的不同层次定位性能瓶颈,提高性能分析效果。
进一步地,在目标图形处理器、基准图形处理器与执行性能分析方法的中央处理器设置在同一计算机或服务器上时,可实现异构平台下的图形处理器软件栈性能分析及瓶颈定位。
下面先介绍目标图形处理器和基准图形处理器的硬件性能比对参数的示例性确定方式。
举例来说,显卡的性能主要有两个瓶颈点:计算瓶颈和输入输出瓶颈。显卡的绝大部分性能都由图形处理器提供,因此本公开实施例的性能分析方法也可针对图形处理器的软件栈是否存在计算瓶颈和/或输入输出瓶颈进行分析。其中,在分析目的不同时,选择的第一模型的类型、使用的硬件性能比对参数、以及硬件性能比对参数的确定方式可以不同。
在一种可能的实现方式中,第一模型是计算密集类型时,目标图形处理器和基准图形处理器的硬件性能对比参数包括计算性能对比参数,所述方法还包括:
从预设的计算任务库中选择计算密集类型的第一计算任务;
按照基准图形处理器的软件栈的配置方式,对目标图形处理器的软件栈进行相同的配置;
分别获取第一计算任务在目标图形处理器和基准图形处理器上运行的耗时,根据所述耗时,确定目标图形处理器和基准图形处理器的软件栈的效率;
根据目标图形处理器的理论算力和目标图形处理器的软件栈的效率得到目标图形处理器的实测性能参数;
根据基准图形处理器的理论算力和基准图形处理器的软件栈的效率得到基准图形处理器的实测性能参数;
根据目标图形处理器的实测性能参数和基准图形处理器的实测性能参数得到目标图形处理器和基准图形处理器的计算性能对比参数。
表1示出图形处理器1-图形处理器4的理论算力、软件栈的效率、实测性能参数,以及图形处理器1、图形处理器3、图形处理器4分别作为目标图形处理器时,与作为基准图形处理器的图形处理器2的计算性能对比参数的示例。
表1
举例来说,针对图形处理器的软件栈是否存在计算瓶颈进行分析时,如选择计算密集类型的第一模型,相应地,使用的硬件性能比对参数可以包括计算性能对比参数。下面结合表1介绍计算性能对比参数的确定方式。
例如,可先从预设的计算任务库中选择计算密集类型的第一计算任务sgemm,计算密集类型的第一计算任务能充分发挥图形处理器的计算性能。之后,可以按照基准图形处理器的软件栈的配置方式,对目标图形处理器的软件栈进行相同的配置,即使得目标图形处理器的软件栈使用和基准图形处理器的软件栈同样的实现,从而保证目标图形处理器与基准图形处理器执行第一计算任务时不存在软件差距,此时二者的性能差距均是硬件差距导致。
分别获取第一计算任务在目标图形处理器和基准图形处理器上运行的耗时,根据耗时可确定目标图形处理器和基准图形处理器的软件栈的效率,具体的确定方式可以基于现有技术实现,在此不再赘述。参见表1的示例,图形处理器1的软件栈的效率可以是70%,图形处理器2的软件栈的效率可以是73%,图形处理器3的软件栈的效率可以是30%,图形处理器4的软件栈的效率可以是30%。
目标图形处理器和基准图形处理器分别具有对应的理论算力,理论算力是图形处理器所属的显卡计算性能的核心参数,表示了该显卡计算性能的理论上限,其单位可以是每秒万亿次(tera floating-point operations per second,TFLOPS)。参见表1的示例,图形处理器1的理论算力可以是30TFLOPS,图形处理器2的理论算力可以是12.7TFLOPS,图形处理器3的理论算力可以是4TFLOPS,图形处理器4的理论算力可以是5.2TFLOPS。
理论算力是理论值,实际场景情况较为复杂,一般是不能达到理论算力的。因此,结合图形处理器的理论算力和上一步骤得到的图形处理器的软件栈的效率,可以先确定图形处理器的实测性能参数。其中根据目标图形处理器的理论算力和目标图形处理器的软件栈的效率的乘积可得到目标图形处理器的实测性能参数,根据基准图形处理器的理论算力和基准图形处理器的软件栈的效率的乘积可得到基准图形处理器的实测性能参数,其单位可以是TFLOPS。参见表1的示例,图形处理器2作为基准图形处理器时,其实测性能参数可以是12.7*73%≈9.3TFLOPS,图形处理器1作为目标图形处理器时,其实测性能参数可以是30*70%=21TFLOPS,图形处理器3作为目标图形处理器时,其实测性能参数可以是4*30%=1.2TFLOPS,图形处理器4作为目标图形处理器时,其实测性能参数可以是5.2*30%=1.56TFLOPS。
根据目标图形处理器的实测性能参数和基准图形处理器的实测性能参数的比值可得到目标图形处理器和基准图形处理器的计算性能对比参数。参见表1的示例,图形处理器2作为基准图形处理器的前提下,图形处理器1作为目标图形处理器时,目标图形处理器和基准图形处理器的计算性能对比参数可以是21/9.3≈2.26,图形处理器3作为目标图形处理器时,目标图形处理器和基准图形处理器的计算性能对比参数可以是1.2/9.3≈0.13,图形处理器4作为目标图形处理器时,目标图形处理器和基准图形处理器的计算性能对比参数可以是1.56/9.3≈0.17。
本领域技术人员应理解,上述计算性能对比参数的确定方式仅为示例,在实际应用中,只要计算性能对比参数能够体现目标图形处理器和基准图形处理器的硬件性能差距即可,例如也可以是基准图形处理器的实测性能参数和目标图形处理器的实测性能参数的比值得到计算性能对比参数,本公开对于计算性能对比参数的具体确定方式不作限制。
计算性能对比参数可以指示目标图形处理器和基准图形处理器处理计算密集类型的计算任务时的硬件性能差距,使得目标图形处理器和基准图形处理器运行计算密集类型的第一模型后得到性能展示数据时,使用计算性能对比参数去除硬件性能差距对性能展示数据带来的影响的效果更好。
在一种可能的实现方式中,第一模型是输入输出密集类型时,目标图形处理器和基准图形处理器的硬件性能对比参数包括带宽对比参数,所述方法还包括:
从预设的计算任务库中选择输入输出密集类型的第二计算任务;
按照基准图形处理器的软件栈的配置方式,对目标图形处理器的软件栈进行相同的配置;
分别获取所述第二计算任务在目标图形处理器和基准图形处理器上运行的耗时,根据耗时,确定目标图形处理器和基准图形处理器的实测带宽参数;
根据目标图形处理器的实测带宽参数和基准图形处理器的实测带宽参数得到所述目标图形处理器和基准图形处理器的带宽对比参数。
表2示出图形处理器1-图形处理器4的实测带宽参数,以及图形处理器1、图形处理器3、图形处理器4分别作为目标图形处理器时,与作为基准图形处理器的图形处理器2的带宽对比参数的示例。
表2
参数 | 图形处理器1 | 图形处理器2 | 图形处理器3 | 图形处理器4 |
实测带宽参数(GB/s) | 680 | 320 | 90 | 90 |
带宽对比参数 | 2.13 | 1 | 0.29 | 0.29 |
举例来说,针对图形处理器的软件栈是否存在输入输出瓶颈进行分析时,如选择输入输出密集类型的第一模型,相应地,使用的硬件性能比对参数可以包括带宽对比参数。下面结合表2介绍带宽对比参数的确定方式。
例如,可先从预设的计算任务库中选择输入输出类型的第二计算任务unary,此时第二计算任务能充分发挥图形处理器的输入输出性能。之后,可以按照基准图形处理器的软件栈的配置方式,对目标图形处理器的软件栈进行相同的配置,即使得目标图形处理器的软件栈使用和基准图形处理器的软件栈同样的实现,从而保证目标图形处理器与基准图形处理器执行第二计算任务时不存在软件差距,此时二者的性能差距均是硬件差距导致。
分别获取第二计算任务在目标图形处理器和基准图形处理器上运行的耗时,根据耗时,确定目标图形处理器和基准图形处理器的实测带宽参数,其单位可以是每秒千兆位(GB/s)。具体的确定方式可以基于现有技术实现,在此不再赘述。参见表2的示例,图形处理器1的实测带宽参数可以是680GB/s,图形处理器2的实测带宽参数可以是320GB/s,图形处理器3的实测带宽参数可以是90GB/s,图形处理器4的实测带宽参数可以是90GB/s。
根据目标图形处理器的实测带宽参数和基准图形处理器的实测带宽参数的比值可得到目标图形处理器和基准图形处理器的带宽对比参数。参见表2的示例,图形处理器2作为基准图形处理器的前提下,图形处理器1作为目标图形处理器时,目标图形处理器和基准图形处理器的带宽对比参数可以是680/320≈2.13,图形处理器3作为目标图形处理器时,目标图形处理器和基准图形处理器的带宽对比参数可以是90/320≈0.29,图形处理器4作为目标图形处理器时,目标图形处理器和基准图形处理器的带宽对比参数可以是90/320≈0.29。
本领域技术人员应理解,上述带宽对比参数的确定方式仅为示例,在实际应用中,只要带宽对比参数能够体现目标图形处理器和基准图形处理器的硬件性能差距即可,例如也可以是基准图形处理器的实测带宽参数和目标图形处理器的实测带宽参数的比值得到带宽对比参数,本公开对于带宽对比参数的具体确定方式不作限制。
带宽对比参数可以指示目标图形处理器和基准图形处理器处理输入输出密集类型的计算任务时的硬件性能差距,使得目标图形处理器和基准图形处理器运行输入输出密集类型的第一模型后得到性能展示数据时,使用带宽对比参数去除硬件性能差距对性能展示数据带来的影响的效果更好。
下面对本公开实施例获取的性能原始数据进行介绍。
在一种可能的实现方式中,多个层次包括计算层、框架层和模型层,性能原始数据包括的第一类型数据是模型层对应的模型端到端性能数据,第二类型数据是模型层对应的模型不同运行阶段性能数据,第三类型数据是框架层对应的痕迹数据,第四类型数据是计算层对应的核函数数据,不同运行阶段包括预处理阶段、内存到显存的数据传输阶段、推理阶段、显存到内存的数据传输阶段、后处理阶段。
举例来说,参见上文图1的相关描述,软件栈的多个层次可包括驱动层、计算层、框架层、模型层、应用层等。本公开实施例的性能分析方法主要针对计算层、框架层、模型层,在本公开实施例中,模型层可对应性能原始数据中的第一类型数据——模型端到端性能数据和第二类型数据——不同运行阶段性能数据;框架层可对应性能原始数据中的第三类型数据——痕迹(trace)数据;计算层可对应性能原始数据中的第四类型数据——核函数(kernel)数据。下面分别介绍上述四种类型的数据的示例性获取方式。
在一种可能的实现方式中,第一模型的参数包括批尺寸(batch size),模型端到端性能数据包括吞吐量,步骤S21包括:
分别获取第一模型在目标图形处理器和基准图形处理器上运行的耗时;
根据第一模型在目标图形处理器上运行的耗时与批尺寸的比值,得到第一模型在目标图形处理器上运行的吞吐量;
根据第一模型在基准图形处理器上运行的耗时与批尺寸的比值,得到第一模型在基准图形处理器上运行的吞吐量。
举例来说,第一模型运行前,用户会为其指定输入尺寸以及批尺寸,例如第一模型的输入是图像数据时,输入尺寸可以是每张图像的尺寸,批尺寸可以是同一次进入第一模型的图像的数量。
对此,在指定输入尺寸以及批尺寸之后,可以先分别获取第一模型在目标图形处理器和基准图形处理器上运行的耗时。根据第一模型在目标图形处理器上运行的耗时与批尺寸的比值,可得到第一模型在目标图形处理器上运行的吞吐量(单位:样本/秒);根据第一模型在基准图形处理器上运行的耗时与批尺寸的比值,可得到第一模型在基准图形处理器上运行的吞吐量。此时获取到的是同一批尺寸下同一模型在不同图形处理器上运行的吞吐量,因此吞吐量可指示不同图形处理器的性能差距。
不同的批尺寸对应的矩阵运算维度不同,因此也是影响第一模型性能的一个关键参数。对此,用户可以指定多个批尺寸,多个批尺寸之间可以是倍数关系,例如2倍、4倍等。获取吞吐量时,通过调整第一模型的批尺寸,可以获取到不同的批尺寸下同一模型在同一图形处理器上运行的吞吐量。此时吞吐量还可指示批尺寸对于同一图形处理器的性能影响。
在一种可能的实现方式中,模型不同运行阶段性能数据可包括预处理阶段耗时、内存到显存的数据传输阶段耗时、推理阶段耗时、显存到内存的数据传输阶段耗时、后处理阶段耗时。
举例来说,第一模型运行主要包括预处理阶段、内存到显存的数据传输(host todevice,H2D)阶段,推理阶段,显存到内存的数据传输(device to host,D2H)阶段,后处理阶段。运行代码中会严格区分不同阶段的运行耗时,通过运行代码即可获取到第一模型在目标图形处理器、基准图形处理器上运行的每个阶段的耗时。并且,对于第一模型在目标图形处理器上运行的每个阶段的耗时,其总和可以是上述第一模型在目标图形处理器上运行的耗时。同理,对于第一模型在基准图形处理器上运行的每个阶段的耗时,其总和可以是上述第一模型在基准图形处理器上运行的耗时。
在一种可能的实现方式中,第一模型包括多个算子,痕迹数据包括每一算子的算子执行耗时,步骤S21包括:
使用框架层提供的分析器,分别分析第一模型在目标图形处理器和基准图形处理器上运行时每一算子的性能,得到每一算子的算子执行耗时。
举例来说,第一模型可包括多个算子,算子之间以一定的方式组合,由框架层驱动运行,通过获取算子的运行耗时及其他信息,我们就可以从算子层面进行分析。
深度学习框架(如TensorFlow,PyTorch)一般都会提供分析器(呈现为profiler接口),用于分析模型算子性能,触发分析器启动后(例如可以是通过增加相应的分析代码),框架运行第一模型时可自动生成包括痕迹数据的文件。
进一步地,由于算子运行时会通过并行方式加速,为分析每个算子实际的耗时,可以使第一模型使用串行模式运行,可通过改变环境变量来实现这一操作。
在一种可能的实现方式中,第一模型包括多个算子,算子调用计算层的核函数,核函数数据包括核函数的吞吐量和带宽,步骤S21还包括:
分别获取第一模型在目标图形处理器和基准图形处理器上运行时核函数的运行耗时、计算量以及访存大小;
根据第一模型在目标图形处理器上运行时核函数的计算量与核函数的运行耗时的比值,得到第一模型在目标图形处理器上运行时核函数的吞吐量;
根据第一模型在目标图形处理器上运行时核函数的访存大小与核函数的运行耗时的比值,得到第一模型在目标图形处理器上运行时核函数的带宽;
根据第一模型在基准图形处理器上运行时核函数的计算量与核函数的运行耗时的比值,得到第一模型在基准图形处理器上运行时核函数的吞吐量;
根据第一模型在基准图形处理器上运行时核函数的访存大小与核函数的运行耗时的比值,得到第一模型在基准图形处理器上运行时核函数的带宽。
举例来说,深度学习框架中的算子一般都会调用更加底层的DNN库所包括的核函数,这些核函数与图形处理器硬件架构和上层算子的输入尺寸适配,所以是主要的分析对象。对此,可以获取核函数的运行信息,包括核函数的运行耗时、计算量、访存大小等,根据这些运行信息获取核函数数据(包括核函数的吞吐量和带宽)。
第一模型在目标图形处理器上运行时对应的核函数数据和基准图形处理器上运行时对应的核函数数据可以分别获取。以第一模型在目标图形处理器上运行时为例,可以先获取第一模型在目标图形处理器上运行时核函数的运行耗时、计算量以及访存大小;根据该核函数的计算量与核函数的运行耗时的比值,得到第一模型在目标图形处理器上运行时核函数的吞吐量;根据该核函数的访存大小与核函数的运行耗时的比值,得到第一模型在目标图形处理器上运行时核函数的带宽。从而获取到第一模型在目标图形处理器上运行时对应的核函数数据。
第一模型在基准图形处理器上运行时对应的核函数数据的获取方式可以与在目标图形处理器上运行时的获取方式相同,将目标图形处理器替换为基准图形处理器即可,在此不再赘述。
获取的性能原始数据大多是代码形式的数值,数据量较为庞大,观察起来不便。对此,本公开提出使用现有技术的多种可视化性能分析工具对性能原始数据进一步分析得到性能展示数据,便于用户观察。参见上文所述,可使用tensorboard,PVRTune,Chrome://tracing等可视化性能分析工具中的一个或多个。下面分别介绍tensorboard,PVRTune,Chrome://tracing在本公开中对性能原始数据分析可实现的功能。
Tensorboard是一个常用的人工智能模型可视化工具。在触发分析器启动,生成包括痕迹数据的文件后,可以使用Tensorboard的可视化服务能力,得到性能展示数据。
在一个示例中,可使用的代码如下:tensorboard--logdir~/Downloads/logs--port 6006,最终性能展示数据可以在指定的浏览器中展示。
Tensorboard得到的性能展示数据在用户界面上可以展示为:包括算子执行耗时占比的界面、包括算子详细信息的界面、包括痕迹数据的界面、包括算子调用栈的界面中的一个或多个。其中,展示算子执行耗时占比的界面可以是对性能原始数据二次加工计算出算子执行耗时占比后得到,展示算子详细信息的界面、展示痕迹数据的界面、展示算子调用栈和算子详细信息的界面可以是对性能原始数据中的信息进行提取和整理得到。
图4和图5分别示出根据本公开实施例展示算子执行耗时占比的界面的示例。
如图4所示,该展示算子执行耗时占比的界面可以展示不考虑每个算子调用的其他算子的前提下,各算子的算子执行耗时在所有算子的执行总耗时中的占比情况。其中,算子a占比极高,在82%;其次是算子b,占比9.7%;其余算子占比共8.3%(未示出)。
如图5所示,该展示算子执行耗时占比的界面可以展示考虑每个算子调用的其他算子的前提下,各算子的算子执行耗时在所有算子的执行总耗时中的占比情况。其中,算子a和算子l占比较高,均为40.7%,其余算子占比共19.6%(未示出)。
图6示出根据本公开实施例展示算子详细信息的界面的一个示例。
如图6所示,该展示算子详细信息的界面可以展示各算子名称、调用次数、单算子执行耗时、算子及调用算子的执行总耗时、算子是否适配图形处理器的软件栈等等。其中,算子适配图形处理器的软件栈时表示在该图形处理器的软件栈的DNN库中存在算子调用的核函数,该算子由该图形处理器执行;算子未适配图形处理器的软件栈表示在该图形处理器的软件栈的DNN库中不存在算子调用的核函数,该算子实际是由中央处理器执行。
图7示出根据本公开实施例展示算子调用栈的界面的示例。
如图7所示,该界面可包括多个标识有算子名称的长方形以及时间轴,标识有算子名称的长方形的长度可指示算子的执行耗时,具体数值可以参见长方形上方的时间轴。该界面上各长方形的顺序还指示算子的调用顺序,例如算子m可调用算子r和算子b,算子r还调用算子cl,算子cl还调用算子co。
图8示出根据本公开实施例展示算子详细信息的界面的另一个示例。
图8的界面可以是用户在图7的界面中选择了某个算子之后展示给用户的、包括该算子的详细信息的新界面。该包括算子详细信息的新界面可以展示某个算子的名称、类别、用户友好类别、开始执行时间、持续时长、单算子执行耗时、参数(追踪文件名、外部地址、输入类型)等信息。例如,算子的名称可以是m,算子的类别可以是中央处理器算子,算子的用户友好类别可以是其他类别,算子的开始执行时间可以是2605.322ms,算子的持续时长可以是4.895ms,单算子执行耗时可以是0.019ms,该算子的参数中,追踪文件名可以是“PyTorch Profilier”,外部地址可以是3781,输入类型可以是浮点数类型。
通过图7和图8所示的界面,用户可以发现没有适配的算子及不合理的调用栈。
可视化性能分析工具PVRTune可分析性能原始数据得到包括显卡利用率的性能展示数据,以可视化显卡利用率,使得用户可以通过该工具排查显卡是否充分发挥性能,是否有因为不合理的数据传输导致的“空泡”。图9示出根据本公开实施例的性能分析工具PVRTune展示可视化显卡利用率的效果示例。
参见图9,可以看出在有一段时间内未呈现波形,因此该时间段内无数据传输,也即出现一个“空泡”。
可视化性能分析工具Chrome://tracing是chrome浏览器提供的插件,可以解析并可视化包括痕迹数据的文件。我们可以通过该工具查看痕迹数据,其功能与可视化性能分析工具tensorboard类似。在此不再对其可展示的信息给出示例。
参见上文所述,在步骤S23中,性能展示数据和性能原始数据中的至少一个,以及目标图形处理器和基准图形处理器的硬件性能比对参数用于确定目标图形处理器的软件栈与基准图形处理器的软件栈的性能差距。例如,以第一模型是计算密集类型为例,性能原始数据包括第一模型在目标图形处理器和基准图形处理器上运行的吞吐量,假设第一模型在目标图形处理器上运行的吞吐量是3056样本/秒,在基准图形处理器上运行的吞吐量是48199,目标图形处理器和基准图形处理器的计算性能比对参数是0.13,则去除硬件影响之后,基准图形处理器上运行的吞吐量是48199样本/秒时,第一模型在目标图形处理器上运行的吞吐量可以达到3056/0.13≈23508样本/秒。使用其他性能原始数据或使用性能展示数据确定性能差距的示例性方式与使用吞吐量时相类似,在此不再赘述。
在一种可能的实现方式中,所述方法还包括:
展示性能展示数据和性能差距,并接收反馈信息,反馈信息指示至少一种优化目标图形处理器的软件栈的方式;
根据反馈信息优化目标图形处理器的软件栈;
重新执行分别获取第一模型在目标图形处理器和基准图形处理器上运行时的性能原始数据及之后的步骤。
举例来说,各可视化性能分析工具在得到性能展示数据和性能差距后,可以展示给用户,以便用户更直观地获知性能差距并结合性能展示数据确定如何优化目标图形处理器的软件栈,并给出指示至少一种优化目标图形处理器的软件栈的方式的反馈信息。处理器接收到反馈信息后,可以根据反馈信息指示的方式优化目标图形处理器的软件栈。优化之后可以重新执行步骤S21及之后的步骤,以借助可视化性能分析工具观察优化是否有效。通过这种方式可以使得目标图形处理器硬件和软件栈结合的更加紧密,从而发挥出最优质的性能。
下面介绍优化目标图形处理器的软件栈的几种示例性方式。
在一种可能的实现方式中,优化目标图形处理器的软件栈的方式包括以下至少一种:
在框架层中增加显存池,针对第一模型包括的占用显存大小固定的算子,分配固定的显存地址;
根据算子执行耗时大于第一阈值的至少一个算子的输入尺寸,调整该至少一个算子调用的核函数的参数;
对第一模型包括的卷积类型算子、元素逻辑运算类型算子、激活函数类型算子进行融合;
将调用次数大于第二阈值或数据拷贝次数大于第三阈值的至少一个算子的核函数增加至计算层的函数库。
举例来说,假设在一个示例中,第一模型是计算密集类型,其批尺寸batchsize=128,第一模型采用PyTorch框架实现方案。执行步骤S21-S23,确定第一模型在目标图形处理器上运行时,目标图形处理器的软件栈吞吐量为131样本/秒,第一模型在基准图形处理器上运行时,基准图形处理器的软件栈吞吐量为742样本/秒,最终确定优化前基准图形处理器的软件栈的性能约是目标图形处理器的软件栈的性能的5.7倍(742/131≈5.7)。
如果用户通过性能展示数据中的显卡利用率,发现第一模型运行期间有大量空泡,显卡利用率在30%左右,数值较低。假设第一模型在目标图形处理器上运行的耗时为975ms,其中显存分配耗时683ms,显存释放耗时9ms,显存分配及释放占总耗时的71%((683+9)/975≈71%),频繁的显存分配导致了第一模型运行效率低下。对此,优化目标图形处理器的软件栈的方式可以是在框架层中增加显存池,针对第一模型包括的占用显存大小固定的算子,分配固定的显存地址(方式一),实现对固定大小的显存重复利用,避免频繁的分配及初始化。采用方式一优化后的效果可以参见下文及图11的相关描述。
图10示出根据本公开实施例优化前目标图形处理器的算子执行耗时与基准图形处理器的算子执行耗时的对比的示意图。如果用户通过性能展示数据中算子执行耗时,发现对于相同的第一模型所包括的算子,目标图形处理器的算子执行耗时占比与基准图形处理器的算子执行耗时占比有一定差异,例如图10所示,目标图形处理器的算子c,算子p的算子执行耗时占比相比基准图形处理器的软件栈占比高出很多。对此,优化目标图形处理器的软件栈的方式可以是根据算子执行耗时大于第一阈值的至少一个算子的输入尺寸,调整该至少一个算子调用的核函数的参数(方式二)。调整的参数可以是输入尺寸。第一阈值可以根据需求进行设置,例如可设置为30%,本公开对此不作限制。采用方式二优化后的效果可以参见下文及图11的相关描述。
卷积类型算子、元素逻辑运算类型算子、激活函数类型算子可以被融合,如果用户通过性能展示数据中算子执行耗时,发现第一模型包括上述可融合的算子,优化目标图形处理器的软件栈的方式还可以进一步包括对第一模型包括的卷积类型算子、元素逻辑运算类型算子、激活函数类型算子进行融合(方式三)。这样既可以减少核函数的启动消耗,也避免了带宽带来的性能瓶颈。采用方式三优化后的效果可以参见下文及图11的相关描述。
图11示出根据本公开实施例优化前后目标图形处理器的软件栈与基准图形处理器的软件栈的吞吐量的对比的示意图。如图11所示,假设根据反馈信息,依次采用方式一、方式二、方式三进行优化,采用方式一优化后,第一模型在目标图形处理器上运行的耗时由优化前的975ms下降为268ms,第一模型在目标图形处理器上运行时,目标图形处理器的软件栈的吞吐量由原本的131样本/秒提升至476样本/秒,性能提升约263%,显卡利用率由原来的30%提高到接近100%。
采用方式一优化的基础上,又采用方式二和方式三进行优化,第一模型在目标图形处理器上运行的耗时进一步降低至180ms,吞吐量进一步提升至711样本/秒,相比采用方式一优化后的耗时268ms以及吞吐量476样本/秒,性能提升约49%。至此,目标图形处理器的性能可优化至约为基准图形处理器的性能的95.8%(711/742=95.8%)。
假设在另一个示例中,第一模型是计算密集类型,其批尺寸batchsize=128,第一模型采用TensorFlow框架实现方案。执行步骤S21-S23,确定第一模型在目标图形处理器上运行时,目标图形处理器的软件栈吞吐量为1592样本/秒,第一模型在基准图形处理器上运行时,基准图形处理器的软件栈吞吐量为28829样本/秒,最终确定优化前基准图形处理器的软件栈的性能约是目标图形处理器的软件栈的性能的18.1倍(28829/1592≈18.1)。
如果用户通过性能展示数据发现第一模型在目标图形处理器上运行时某算子的调用次数过大,与第一模型在基准图形处理器上运行时该算子的调用次数(例如等于第二阈值)不匹配,可认为该算子未适配目标图形处理器的软件栈。由上文描述可知,如果算子未适配目标图形处理器的软件栈,则算子实际上是中央处理器执行,因此也会导致目标图形处理器与中央处理器之间存在大量的、与该算子的执行相关的数据拷贝。对此,优化目标图形处理器的软件栈的方式可以是将调用次数大于第二阈值或数据拷贝次数大于第三阈值的至少一个算子的核函数增加至计算层的函数库(方式四),以使得算子适配目标图形处理器的软件栈。第二阈值和第三阈值可以根据需求进行设置,本公开对此不作限制。进一步地,如果用户发现还可以采用方式一和方式二、方式三对目标图形处理器发的软件栈进行优化,则指示的反馈信息中包括的方式可以是方式一、方式二、方式三、方式四。
图12示出根据本公开实施例优化前后目标图形处理器的软件栈与基准图形处理器的软件栈的吞吐量的对比的示意图。如图12所示,假设根据反馈信息,依次采用方式四、方式二、方式三、方式一进行优化,采用方式四优化后,第一模型在目标图形处理器上运行的耗时由优化前的80ms下降为7ms,目标图形处理器的软件栈吞吐量由优化前的1592样本/秒提升至19076样本/秒,性能提升约1098%。优化后可使得内存到显存的数据拷贝、显存到内存的数据拷贝分别只有一次。
采用方式四优化的基础上,又采用方式二和方式三进行优化,该第一模型在目标图形处理器上运行时,目标图形处理器的软件栈吞吐量可进一步提升至24381样本/秒。再采用方式一进行优化,该第一模型在目标图形处理器上运行的耗时进一步降低至4ms,第一模型在目标图形处理器上运行的吞吐量可最终可提升至31762样本/秒,目标图形处理器的软件栈性能约为基准图形处理器的软件栈性能的110%。
通过设置多种优化方式,可以提高优化的灵活性与针对性。
本公开还提出一种性能分析装置。图13示出根据本公开实施例的性能分析装置的示例性结构图。
在一种可能的实现方式中,所述装置包括:
第一获取模块131,用于分别获取第一模型在目标图形处理器和基准图形处理器上运行时的性能原始数据,所述目标图形处理器的软件栈和所述基准图形处理器的软件栈具有相同的多个层次,所述性能原始数据包括与所述多个层次对应的多种类型的数据,每个层次对应至少一个类型;
第一分析模块132,用于分析所述性能原始数据,分别得到所述第一模型在所述目标图形处理器和所述基准图形处理器上运行时的性能展示数据,所述性能展示数据包括算子执行耗时、算子调用次数和显卡利用率中的至少一种;
第一确定模块133,用于根据所述目标图形处理器和所述基准图形处理器的硬件性能比对参数,以及所述性能原始数据、所述性能展示数据中的至少一个,确定所述第一模型在所述目标图形处理器和所述基准图形处理器上运行时,所述目标图形处理器的软件栈与所述基准图形处理器的软件栈的性能差距。
在一种可能的实现方式中,所述装置还包括:
第一展示模块,用于展示所述性能展示数据和所述性能差距,并接收反馈信息,所述反馈信息指示至少一种优化所述目标图形处理器的软件栈的方式;
第一优化模块,用于根据所述反馈信息优化所述目标图形处理器的软件栈;以及用于驱动所述第一获取模块重新执行分别获取第一模型在目标图形处理器和基准图形处理器上运行时的性能原始数据及之后的步骤。
在一种可能的实现方式中,所述第一模型是计算密集类型时,所述目标图形处理器和所述基准图形处理器的硬件性能对比参数包括计算性能对比参数,所述装置还包括:
第一选择模块,用于从预设的计算任务库中选择计算密集类型的第一计算任务;
第一配置模块,用于按照所述基准图形处理器的软件栈的配置方式,对所述目标图形处理器的软件栈进行相同的配置;
第二获取模块,用于分别获取所述第一计算任务在所述目标图形处理器和所述基准图形处理器上运行的耗时,根据所述耗时,确定所述目标图形处理器和所述基准图形处理器的软件栈的效率;
第二确定模块,用于根据所述目标图形处理器的理论算力和所述目标图形处理器的软件栈的效率得到所述目标图形处理器的实测性能参数;
第三确定模块,用于根据所述基准图形处理器的理论算力和所述基准图形处理器的软件栈的效率得到所述基准图形处理器的实测性能参数;
第四确定模块,用于根据所述目标图形处理器的实测性能参数和所述基准图形处理器的实测性能参数得到所述目标图形处理器和所述基准图形处理器的计算性能对比参数。
在一种可能的实现方式中,所述第一模型是输入输出密集类型时,所述目标图形处理器和所述基准图形处理器的硬件性能对比参数包括带宽对比参数,所述装置还包括:
第二选择模块,用于从预设的计算任务库中选择输入输出密集类型的第二计算任务;
第二配置模块,用于按照所述基准图形处理器的软件栈的配置方式,对所述目标图形处理器的软件栈进行相同的配置;
第三获取模块,用于分别获取所述第二计算任务在所述目标图形处理器和所述基准图形处理器上运行的耗时,根据所述耗时,确定所述目标图形处理器和所述基准图形处理器的实测带宽参数;
第五确定模块,用于根据所述目标图形处理器的实测带宽参数和所述基准图形处理器的实测带宽参数得到所述目标图形处理器和所述基准图形处理器的带宽对比参数。
在一种可能的实现方式中,所述多个层次包括计算层、框架层和模型层,所述性能原始数据包括的第一类型数据是所述模型层对应的模型端到端性能数据,第二类型数据是所述模型层对应的模型不同运行阶段性能数据,第三类型数据是所述框架层对应的痕迹数据,第四类型数据是所述计算层对应的核函数数据,所述不同运行阶段包括预处理阶段、内存到显存的数据传输阶段、推理阶段、显存到内存的数据传输阶段、后处理阶段。
在一种可能的实现方式中,所述第一模型的参数包括批尺寸,所述模型端到端性能数据包括吞吐量,所述第一获取模块具体用于:
分别获取所述第一模型在所述目标图形处理器和所述基准图形处理器上运行的耗时;
根据所述第一模型在所述目标图形处理器上运行的耗时与所述批尺寸的比值,得到所述第一模型在所述目标图形处理器上运行的吞吐量;
根据所述第一模型在所述基准图形处理器上运行的耗时与所述批尺寸的比值,得到所述第一模型在所述基准图形处理器上运行的吞吐量。
在一种可能的实现方式中,所述第一模型包括多个算子,所述痕迹数据包括每一算子的算子执行耗时,所述第一获取模块具体用于:
使用所述框架层提供的分析器,分别分析所述第一模型在目标图形处理器和基准图形处理器上运行时每一算子的性能,得到每一算子的算子执行耗时。
在一种可能的实现方式中,所述第一模型包括多个算子,所述算子调用所述计算层的核函数,所述核函数数据包括所述核函数的吞吐量和带宽,所述第一获取模块具体用于:
分别获取第一模型在目标图形处理器和基准图形处理器上运行时所述核函数的运行耗时、计算量以及访存大小;
根据所述第一模型在所述目标图形处理器上运行时所述核函数的计算量与所述核函数的运行耗时的比值,得到所述第一模型在所述目标图形处理器上运行时所述核函数的吞吐量;
根据所述第一模型在所述目标图形处理器上运行时所述核函数的访存大小与所述核函数的运行耗时的比值,得到所述第一模型在所述目标图形处理器上运行时所述核函数的带宽;
根据所述第一模型在所述基准图形处理器上运行时所述核函数的计算量与所述核函数的运行耗时的比值,得到所述第一模型在所述基准图形处理器上运行时所述核函数的吞吐量;
根据所述第一模型在所述基准图形处理器上运行时所述核函数的访存大小与所述核函数的运行耗时的比值,得到所述第一模型在所述基准图形处理器上运行时所述核函数的带宽。
在一种可能的实现方式中,所述优化所述目标图形处理器的软件栈的方式包括以下至少一种:在所述框架层中增加显存池,针对所述第一模型包括的占用显存大小固定的算子,分配固定的显存地址;根据算子执行耗时大于第一阈值的至少一个算子的输入尺寸,调整该至少一个算子调用的核函数的参数;对所述第一模型包括的卷积类型算子、元素逻辑运算类型算子、激活函数类型算子进行融合;将调用次数大于第二阈值或数据拷贝次数大于第三阈值的至少一个算子的核函数增加至所述计算层的函数库。
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
本公开实施例还提出一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。计算机可读存储介质可以是易失性或非易失性计算机可读存储介质。
本公开实施例还提出一种性能分析装置,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为在执行所述存储器存储的指令时,实现上述方法。其中,处理器可以是上文图1的相关描述中所提及的中央处理器。
本公开实施例还提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述方法。
图14示出根据本公开实施例的性能分析装置1900的结构的示意图。例如,性能分析装置1900可以被提供为一服务器或终端设备。参照图14,性能分析装置1900包括处理组件1922,其进一步包括一个或多个处理器,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以执行上述方法。
性能分析装置1900还可以包括一个电源组件1926被配置为执行性能分析装置1900的电源管理,一个有线或无线网络接口1950被配置为将性能分析装置1900连接到网络,和一个输入输出接口1958(I/O接口)。性能分析装置1900可以操作基于存储在存储器1932的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器1932,上述计算机程序指令可由性能分析装置1900的处理组件1922执行以完成上述方法。
本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (13)
1.一种性能分析方法,其特征在于,所述方法包括:
分别获取第一模型在目标图形处理器和基准图形处理器上运行时的性能原始数据,所述目标图形处理器的软件栈和所述基准图形处理器的软件栈具有相同的多个层次,所述性能原始数据包括与所述多个层次对应的多种类型的数据,每个层次对应至少一个类型;
分析所述性能原始数据,分别得到所述第一模型在所述目标图形处理器和所述基准图形处理器上运行时的性能展示数据,所述性能展示数据包括算子执行耗时、算子调用次数和显卡利用率中的至少一种;
根据所述目标图形处理器和所述基准图形处理器的硬件性能比对参数,以及所述性能原始数据、所述性能展示数据中的至少一个,确定所述第一模型在所述目标图形处理器和所述基准图形处理器上运行时,所述目标图形处理器的软件栈与所述基准图形处理器的软件栈的性能差距。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
展示所述性能展示数据和所述性能差距,并接收反馈信息,所述反馈信息指示至少一种优化所述目标图形处理器的软件栈的方式;
根据所述反馈信息优化所述目标图形处理器的软件栈;
重新执行分别获取第一模型在目标图形处理器和基准图形处理器上运行时的性能原始数据及之后的步骤。
3.根据权利要求1或2所述的方法,其特征在于,所述第一模型是计算密集类型时,所述目标图形处理器和所述基准图形处理器的硬件性能对比参数包括计算性能对比参数,所述方法还包括:
从预设的计算任务库中选择计算密集类型的第一计算任务;
按照所述基准图形处理器的软件栈的配置方式,对所述目标图形处理器的软件栈进行相同的配置;
分别获取所述第一计算任务在所述目标图形处理器和所述基准图形处理器上运行的耗时,根据所述耗时,确定所述目标图形处理器和所述基准图形处理器的软件栈的效率;
根据所述目标图形处理器的理论算力和所述目标图形处理器的软件栈的效率得到所述目标图形处理器的实测性能参数;
根据所述基准图形处理器的理论算力和所述基准图形处理器的软件栈的效率得到所述基准图形处理器的实测性能参数;
根据所述目标图形处理器的实测性能参数和所述基准图形处理器的实测性能参数得到所述目标图形处理器和所述基准图形处理器的计算性能对比参数。
4.根据权利要求1或2所述的方法,其特征在于,所述第一模型是输入输出密集类型时,所述目标图形处理器和所述基准图形处理器的硬件性能对比参数包括带宽对比参数,所述方法还包括:
从预设的计算任务库中选择输入输出密集类型的第二计算任务;
按照所述基准图形处理器的软件栈的配置方式,对所述目标图形处理器的软件栈进行相同的配置;
分别获取所述第二计算任务在所述目标图形处理器和所述基准图形处理器上运行的耗时,根据所述耗时,确定所述目标图形处理器和所述基准图形处理器的实测带宽参数;
根据所述目标图形处理器的实测带宽参数和所述基准图形处理器的实测带宽参数得到所述目标图形处理器和所述基准图形处理器的带宽对比参数。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述多个层次包括计算层、框架层和模型层,所述性能原始数据包括的第一类型数据是所述模型层对应的模型端到端性能数据,第二类型数据是所述模型层对应的模型不同运行阶段性能数据,第三类型数据是所述框架层对应的痕迹数据,第四类型数据是所述计算层对应的核函数数据,所述不同运行阶段包括预处理阶段、内存到显存的数据传输阶段、推理阶段、显存到内存的数据传输阶段、后处理阶段。
6.根据权利要求5所述的方法,其特征在于,所述第一模型的参数包括批尺寸,所述模型端到端性能数据包括吞吐量,所述分别获取第一模型在目标图形处理器和基准图形处理器上运行时的性能原始数据,包括:
分别获取所述第一模型在所述目标图形处理器和所述基准图形处理器上运行的耗时;
根据所述第一模型在所述目标图形处理器上运行的耗时与所述批尺寸的比值,得到所述第一模型在所述目标图形处理器上运行的吞吐量;
根据所述第一模型在所述基准图形处理器上运行的耗时与所述批尺寸的比值,得到所述第一模型在所述基准图形处理器上运行的吞吐量。
7.根据权利要求5或6所述的方法,其特征在于,所述第一模型包括多个算子,所述痕迹数据包括每一算子的算子执行耗时,所述分别获取第一模型在目标图形处理器和基准图形处理器上运行时的性能原始数据,包括:
使用所述框架层提供的分析器,分别分析所述第一模型在目标图形处理器和基准图形处理器上运行时每一算子的性能,得到每一算子的算子执行耗时。
8.根据权利要求5-7中任一项所述的方法,其特征在于,所述第一模型包括多个算子,所述算子调用所述计算层的核函数,所述核函数数据包括所述核函数的吞吐量和带宽,所述分别获取第一模型在目标图形处理器和基准图形处理器上运行时的性能原始数据,还包括:
分别获取第一模型在目标图形处理器和基准图形处理器上运行时所述核函数的运行耗时、计算量以及访存大小;
根据所述第一模型在所述目标图形处理器上运行时所述核函数的计算量与所述核函数的运行耗时的比值,得到所述第一模型在所述目标图形处理器上运行时所述核函数的吞吐量;
根据所述第一模型在所述目标图形处理器上运行时所述核函数的访存大小与所述核函数的运行耗时的比值,得到所述第一模型在所述目标图形处理器上运行时所述核函数的带宽;
根据所述第一模型在所述基准图形处理器上运行时所述核函数的计算量与所述核函数的运行耗时的比值,得到所述第一模型在所述基准图形处理器上运行时所述核函数的吞吐量;
根据所述第一模型在所述基准图形处理器上运行时所述核函数的访存大小与所述核函数的运行耗时的比值,得到所述第一模型在所述基准图形处理器上运行时所述核函数的带宽。
9.根据权利要求8所述的方法,其特征在于,所述优化所述目标图形处理器的软件栈的方式包括以下至少一种:
在所述框架层中增加显存池,针对所述第一模型包括的占用显存大小固定的算子,分配固定的显存地址;
根据算子执行耗时大于第一阈值的至少一个算子的输入尺寸,调整该至少一个算子调用的核函数的参数;
对所述第一模型包括的卷积类型算子、元素逻辑运算类型算子、激活函数类型算子进行融合;
将调用次数大于第二阈值或数据拷贝次数大于第三阈值的至少一个算子的核函数增加至所述计算层的函数库。
10.一种性能分析装置,其特征在于,所述装置包括:
第一获取模块,用于分别获取第一模型在目标图形处理器和基准图形处理器上运行时的性能原始数据,所述目标图形处理器的软件栈和所述基准图形处理器的软件栈具有相同的多个层次,所述性能原始数据包括与所述多个层次对应的多种类型的数据,每个层次对应至少一个类型;
第一分析模块,用于分析所述性能原始数据,分别得到所述第一模型在所述目标图形处理器和所述基准图形处理器上运行时的性能展示数据,所述性能展示数据包括算子执行耗时、算子调用次数和显卡利用率中的至少一种;
第一确定模块,用于根据所述目标图形处理器和所述基准图形处理器的硬件性能比对参数,以及所述性能原始数据、所述性能展示数据中的至少一个,确定所述第一模型在所述目标图形处理器和所述基准图形处理器上运行时,所述目标图形处理器的软件栈与所述基准图形处理器的软件栈的性能差距。
11.一种性能分析装置,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为在执行所述存储器存储的指令时,实现权利要求1至9中任意一项所述的方法。
12.一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1至9中任意一项所述的方法。
13.一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,其特征在于,当所述计算机可读代码在电子设备中运行时,所述电子设备中的处理器执行权利要求1至9中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310672703.8A CN116701144A (zh) | 2023-06-07 | 2023-06-07 | 性能分析方法、装置、存储介质及程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310672703.8A CN116701144A (zh) | 2023-06-07 | 2023-06-07 | 性能分析方法、装置、存储介质及程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116701144A true CN116701144A (zh) | 2023-09-05 |
Family
ID=87825234
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310672703.8A Pending CN116701144A (zh) | 2023-06-07 | 2023-06-07 | 性能分析方法、装置、存储介质及程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116701144A (zh) |
-
2023
- 2023-06-07 CN CN202310672703.8A patent/CN116701144A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10671516B2 (en) | Method, device, and computer program product for testing code | |
CN112948079B (zh) | 任务调度方法、装置、设备和计算机存储介质 | |
CN112052082B (zh) | 任务属性优化方法、装置、服务器及存储介质 | |
EP4195108A1 (en) | Method and apparatus for generating and applying deep learning model based on deep learning framework | |
CN111966597B (zh) | 测试数据生成方法及装置 | |
CN108023905B (zh) | 物联网应用系统及方法 | |
CN116701143A (zh) | 性能分析方法、装置、系统、计算设备及存储介质 | |
US20210055973A1 (en) | Automatic task distribution and optimization using machine learning and artificial intelligence | |
CN115186738B (zh) | 模型训练方法、装置和存储介质 | |
CN116701144A (zh) | 性能分析方法、装置、存储介质及程序产品 | |
CN113141407B (zh) | 一种页面资源加载方法、装置和电子设备 | |
CN111679924B (zh) | 构件化软件系统可靠性仿真方法、装置及电子设备 | |
CN114998649A (zh) | 图像分类模型的训练方法、图像分类方法及装置 | |
CN109783745B (zh) | 对页面进行个性化排版的方法、装置和计算机设备 | |
CN113127284A (zh) | 服务器压力测试方法、系统、电子设备及存储介质 | |
CN113760317A (zh) | 一种页面显示方法、装置、设备及存储介质 | |
CN114661571B (zh) | 模型评测方法、装置、电子设备和存储介质 | |
EP4105862A2 (en) | Data processing method and apparatus, electronic device and storage medium | |
CN112764950B (zh) | 一种基于组合行为的事件交互方法、装置和电子设备 | |
CN116701145A (zh) | 性能分析方法、装置、系统、计算设备及存储介质 | |
CN110825438B (zh) | 用于模拟人工智能芯片的数据处理的方法和装置 | |
CN114661571A (zh) | 模型评测方法、装置、电子设备和存储介质 | |
CN114817058A (zh) | 并发风险检测方法、装置、电子设备及存储介质 | |
CN115687141A (zh) | 应用程序的测试方法、装置、电子设备和存储介质 | |
CN118132069A (zh) | 一种页面流转控制方法、装置及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |