面向边缘设备的深度学习编程框架评估优化方法及系统
未命名
07-23
阅读:134
评论:0
1.本发明涉及深度学习技术领域,特别涉及一种在边缘设备上进行全生命周期的深度学习编程框架评估优化方法及系统。
背景技术:
2.随着深度学习研究的广泛推进及其在产业应用落地需求的增长,深度学习框架诸如tensorflow、pytorch、mxnet、paddlepaddle、caffe等先后被谷歌、脸书、亚马逊、百度和加州大学伯克利分校等业界巨头和知名高校开发并开源。这些深度学习框架在不同的场景下被产业界、研究机构和学校等广泛应用和研究。同时,aiot和边缘计算这一新型计算范式的发展催生了更多的深度学习框架在边缘端的应用场景。然而,现有的对深度学习编程框架在边缘设备上的表现的评测工作主要存在以下三点问题:(1)现有针对边缘设备中深度学习框架的测评工作较少且不全面,评价维度侧重于运行时性能,未形成完整的指标集。(2)现有的评测工作对于相同指标的定义方式不尽相同,因此其收集到的数据的准确性和可信性也难以定论;(3)现有的评测方法对指标数据的采集方式复杂度高、效率低,多只能由专业的研究人员开展,普通用户难以进行。因此当前学术界和工业界均亟需一个系统全面、高效准确的边缘设备上的深度学习编程框架的评估指标集和自动化的数据采集系统,以解决上述三个问题。
技术实现要素:
3.针对上述问题,本发明提出一种面向边缘设备的深度学习编程框架评估优化方法,包括:解析深度学习任务的配置文件,获得深度学习任务的程序控制信息;依据该程序控制信息,依次获取边缘设备执行该深度学习任务的多个实际运行数据;该实际运行数据包括该边缘设备运行该深度学习任务时的gpu实际峰值浮点运算数据、gpu实际各层级内存峰值带宽数据、浮点运算数量、gpu内核活动时间和gpu数据移动量;以该实际运行数据绘制该边缘设备运行该深度学习任务的运行时分层屋顶线图;根据该运行时分层屋顶线图,确定对该深度学习任务的优化方向及优化顺序。
4.本发明所述的深度学习编程框架评估优化方法,其中该运行时分层屋顶线图采用对数坐标系,并使用该gpu实际峰值浮点运算数据绘制平行于x轴的算力屋顶线部分,使用该gpu实际各层级内存峰值带宽数据绘制各级带宽的斜向带宽屋顶线部分;该算力屋顶线部分与该斜向带宽屋顶线部分相交于屋顶线拐点;以该浮点运算数量除以该gpu数据移动量的商值为该深度学习任务的程序性能的横坐标值,以该gpu内核活动时间为该程序性能的纵坐标值,将该程序性能绘制于该对数坐标系内。
5.本发明所述的深度学习编程框架评估优化方法,其中以该运行时分层屋顶线图中屋顶线拐点的左侧区域为带宽限制区域,右侧区域为算力限制区域;若该程序性能的坐标点落在该带宽限制区域,则该优化方向为提升该深度学习任务的带宽占用效率,若该坐标点落在该算力限制区域,则该优化方向为提升该深度学习任务的算力使用效率。
6.本发明所述的深度学习编程框架评估优化方法,其中对该实际运行数据进行清洗操作后,生成该运行时分层屋顶线图,该清洗操作包括:删除gpu实际浮点运算数据中的无关数据,并比对查找出该gpu实际浮点运算数据中的最大数值,作为该gpu实际峰值浮点运算数据;删除gpu实际各层级内存带宽数据中的无关数据,并比对查找出该gpu实际各层级内存带宽数据中最大数值,作为该gpu实际各层级内存峰值带宽数据;删除该深度学习任务运行时相关浮点运算操作数据的无关数据,并将该浮点运算操作数据中的单精度浮点运算数目、双精度浮点运算数目和混合精度浮点运算数目进行加和,获得该浮点运算数量;删除该深度学习任务运行时各项操作的分项gpu内核活动时间数据中的无关数据,并将该分项gpu内核活动时间数据统一单位后进行加和,获得该深度学习任务于该边缘设备进行各项操作所对应的gpu内核活动时间;删除该深度学习任务运行时gpu各内存等级的数据移动量中的无关数据,并将内存数据移动量按照层级进行加和,获得执行该深度学习任务时于该边缘设备gpu各内存所对应的gpu数据移动量。
7.本发明还提出一种面向边缘设备的深度学习编程框架评估优化系统,包括:配置模块,用于通过解析深度学习任务的配置文件,获得深度学习任务的程序控制信息;数据采集模块,用于依据该程序控制信息,依次获取边缘设备执行该深度学习任务的多个实际运行数据;该实际运行数据包括该边缘设备运行该深度学习任务时的gpu实际峰值浮点运算数据、gpu实际各层级内存峰值带宽数据、浮点运算数量、gpu内核活动时间和gpu数据移动量;指标图绘制模块,用于以该实际运行数据绘制该边缘设备运行该深度学习任务的运行时分层屋顶线图;评估优化模块,用于根据该运行时分层屋顶线图,确定对该深度学习任务的优化方向及优化顺序。
8.本发明所述的深度学习编程框架评估优化系统,其中该运行时分层屋顶线图采用对数坐标系,并使用该gpu实际峰值浮点运算数据绘制平行于x轴的算力屋顶线部分,使用该gpu实际各层级内存峰值带宽数据绘制各级带宽的斜向带宽屋顶线部分;该算力屋顶线部分与该斜向带宽屋顶线部分相交于屋顶线拐点;以该浮点运算数量除以该gpu数据移动量的商值为该深度学习任务的程序性能的横坐标值,以该gpu内核活动时间为该程序性能的纵坐标值,将该程序性能绘制于该对数坐标系内。
9.本发明所述的深度学习编程框架评估优化系统,其中该评估优化模块包括:以该运行时分层屋顶线图中屋顶线拐点的左侧区域为带宽限制区域,右侧区域为算力限制区域;若该程序性能的坐标点落在该带宽限制区域,则该优化方向为提升该深度学习任务的带宽占用效率,若该坐标点落在该算力限制区域,则该优化方向为提升该深度学习任务的算力使用效率。
10.本发明所述的深度学习编程框架评估优化系统,其中该数据采集模块包括数据清洗模块,该数据清洗模块具体包括:第一清洗模块,用于删除gpu实际浮点运算数据中的无关数据,并比对查找出该gpu实际浮点运算数据中的最大数值,作为该gpu实际峰值浮点运算数据;第二清洗模块,用于删除gpu实际各层级内存带宽数据中的无关数据,并比对查找出该gpu实际各层级内存带宽数据中最大数值,作为该gpu实际各层级内存峰值带宽数据;第三清洗模块,用于删除该深度学习任务运行时相关浮点运算操作数据的无关数据,并将该浮点运算操作数据中的单精度浮点运算数目、双精度浮点运算数目和混合精度浮点运算数目进行加和,获得该浮点运算数量;第四清洗模块,用于删除该深度学习任务运行时各项
操作的分项gpu内核活动时间数据中的无关数据,并将该分项gpu内核活动时间数据统一单位后进行加和,获得该深度学习任务于该边缘设备进行各项操作所对应的gpu内核活动时间;第五清洗模块,用于删除该深度学习任务运行时gpu各内存等级的数据移动量中的无关数据,并将内存数据移动量按照层级进行加和,获得执行该深度学习任务时于该边缘设备gpu各内存所对应的gpu数据移动量。
11.本发明还提出一种计算机可读存储介质,存储有计算机可执行指令,其特征在于,当该计算机可执行指令被执行时,实现如前所述的面向边缘设备的深度学习编程框架评估优化。
12.本发明还提出一种数据处理装置,包括如前所述的计算机可读存储介质,当该数据处理装置的处理器调取并执行该计算机可读存储介质中的计算机可执行指令时,该数据处理装置实现面向边缘设备的深度学习编程框架评估优化。
附图说明
13.图1是本发明的指标数据采集系统结构示意图。
14.图2是本发明的系统处理流程图。
15.图3是本发明的分布式异构边缘设备平台架构示意图。
16.图4是本发明的分布式异构边缘设备平台集群实物图。
17.图5是本发明的示例推理实验时系统工作流程。
18.图6a、6b、6c、6d是本发明的效果对比图
19.图7是本发明的深度学习编程框架评估优化方法流程图。
20.图8是本发明的运行时分层屋顶线综合指标示意图。
21.图9是本发明的数据处理装置示意图。
具体实施方式
22.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进一步详细说明。应当理解,此处所描述的具体实施方法仅仅用以解释本发明,并不用于限定本发明。
23.本发明针对现有深度学习编程框架存在的三个问题,建立了一套边缘设备上全生命周期的深度学习编程框架评估指标集。并对不同的指标进行了定性或定量定义。最后根据全生命周期指标集建立了自动化采集不同指标数据的系统。本发明将大幅提高在边缘设备上进行深度学习编程框架评估的效率、系统性和准确性,使得专业人员或非专业人员都有能力系统便捷的开展边缘设备上深度学习编程框架评估的研究,促进深度学习编程框架的优化。
24.为了对不同深度学习编程框架在边缘设备上的性能进行评估,发明人对现有的研究进行了调研。现有的在边缘设备上进行深度学习编程框架评估优化的工作较少,且集中于对深度学习编程框架的运行时性能进行采集分析。同时,这些工作涉及到的指标普遍针对于特定的研究点,从而未形成系统完整的评估指标集。因此本发明提出了一个针对边缘设备上进行深度学习编程框架评估的全生命周期的指标集,涵盖了使用深度学习编程框架的开发时、部署时和运行时三个阶段。另一方面,不同研究对于同一项指标的定义方式不尽
相同,这导致其研究结果的准确性和可信性存在问题。因此本发明对建立的全生命周期的指标集的各项指标进行了定义,以保证指标采集计算的准确性。最后,不同的指标在不同的设备上需要使用不同的采集方法,而其实验环境以及各种依赖文件的配置则大幅增加了一些指标的采集复杂度和难度,非专业甚至专业人员对一些指标的采集方法的确定需要耗费大量精力。同时,不同程序不同的参数设置以及不同指标的采集使得工作量呈指数级增长。因此,本发明针对边缘设备设计实现了自动化采集全生命周期指标集对应指标数据的系统,从而使得边缘设备上进行深度学习编程框架评估的工作更加系统全面和高效。
25.本发明针对深度学习编程框架在边缘设备中的性能的评估需求,提出建立一套全生命周期的指标集,并给出不同指标的公式定义。同时提出自动化收集不同条件下不同指标数据的系统。其中具体要解决的技术问题为:(1)建立一个针对边缘设备上进行深度学习编程框架评估的全生命周期的指标集,涵盖使用深度学习编程框架的开发时、部署时和运行时三个阶段;(2)对不同的指标进行定义,以保证其准确性;(3)提出针对不同指标数据的采集方式,设计和实现自动化采集全生命周期指标集对应指标数据的系统。
26.(1)边缘设备上全生命周期的深度学习编程框架评估指标集
27.现有的在边缘设备上进行深度学习编程框架评估的工作较少且不全面,普遍针对运行时进行评估,当前工业界和学术界针对深度学习编程框架的评测普遍集中在运行时的特定研究点,缺乏对深度学习编程框架进行全生命周期的完整性评估,同时也未形成系统的指标集。该问题导致了不同研究者在进行深度学习编程框架的评估时,无法从全生命周期的角度对其进行评估。另一方面由于研究者针对特定研究点选择的指标没有特定依据,现有的研究中对于相同指标的定义方式由研究者决定,未形成统一的标准,指标的定义往往由经验得到,导致某些研究出现可能的研究指标不完整或结果说服力不强的问题。
28.本发明从深度学习编程框架使用的全生命周期角度出发,将其评估范围分为开发时、部署时、运行时三个阶段。同时分析不同阶段中可能会对深度学习任务结果性能产生影响的不同方面,结合现有相关不同研究工作在不同研究点中关注的热点,确定出了不同阶段中需要关注的评估指标,建立了边缘设备上进行深度学习编程框架评估所需的全生命周期指标集,从深度学习编程框架使用的全生命周期角度进行指标集构建,并对每个指标进了行定性或定量定义。
[0029][0030]
表1深度学习编程框架评估指标集表
[0031]
表1展示了本发明的边缘设备上全生命周期的深度学习编程框架评估指标集。在开发时、部署时、运行时阶段中含有不同的指标,该指标集可以从深度学习编程框架使用的全生命周期的角度对其进行系统评估。不同阶段对应多个不同的指标,这些指标是深度学习编程框架在使用中易用性和影响性能的重点。其中的一些指标是综合性指标,包含了多项子指标,以从更细粒度对深度学习编程框架进行定量和定性分析。
[0032]
开发时指标(development time metrics)包含了github社区流行度(github populity)、api完整度(api intrgrity)、预模型支持(pre-training models)和工具支持(tool support)等子指标,从多方面对深度学习编程框架的开发时表现进行定量分析,通过采集不同指标对应的数值,对不同的深度学习编程框架进行开发时的评估及对比,以展示不同深度学习编程框架的开发易用性。部署时指标(deploy time metrics)包含了硬件支持(hardware support)、系统和软件支持(system and software support)、任务类型支持(task support)和部署灵活性(deployment flexibility)等子指标。这四项指标均为综合性指标,其包含不同的子指标,用于对深度学习编程框架进行细粒度的定量和定性(比如灵活性中的转换方式)分析,从而系统全面的评估深度学习编程框架的部署时支持性和灵活性。运行时指标(runtime metrics)分为三个方面,分别是硬件性能指标(training and inference)、程序性能指标(distributedtraining)以及硬件和程序相互制约关系表现指标(inference)。硬件性能指标包括cpu利用率(cpu utilization)、gpu利用率(gpu utilization)、峰值内存占用(peak memory usage)、吞吐量(throughput)等子指标。程序性能包含针对深度学习任务的加速比(speedup)和准确率提升比(acc-imp)两个子指标。硬件和程序制约关系指标是运行时分层屋顶线综合指标(runtime hierarchical roofline)。硬件指标涵盖了边缘设备中对硬件性能可能造成影响的重点子指标,用于研究边缘设备在运行深度学习任务时硬件中不同模块例如利用率和占用等性能的表现;程序指标用于展示深度学习程序自身的性能的表现,例如深度学习模型训练的耗时或准确率等;硬件和程序相互制约关系指标用于展示程序和硬件的组合条件下,运行时性能和效率的互相制约关系,例如边缘设备上程序实际运行过程中各级缓存和内存的数据访问量和深度学习程序的理论内存访问量之间的关系等。
[0033]
边缘设备上全生命周期的深度学习编程框架评估指标集及其定义,系统全面的构建了边缘设备上深度学习编程框架评估所关注的指标,可从全生命周期的角度对深度学习编程框架进行系统全面的评估。指标集中每个指标的具体定义,使深度学习编程框架评估工作中的指标具有统一的定义和计算方式。解决了现有的边缘设备上深度学习编程框架评估指标不全面且定义不确定的问题。
[0034]
(2)不同指标的定义
[0035]
由于不同研究对于同一项指标的定义方式没有确定依据,通常由研究者依据经验而定。这导致了许多研究结果的准确性和可信性存在问题。因此本发明对建立的全生命周期指标集中的各项指标进行了定义,通过具体的说明或公式定义说明个指标的意义和计算方式,将各指标在分析是应采集的数据进行了确定,从而保证了不同研究人员对于相同指标研究的统一性。
[0036]
开发时指标主要通过说明各指标的意以其数据来源等,对各指标进行定量定义,使指标性质通过其数值表示。部署时指标通过说明各指标的意义、数据来源和实现方式等,
对指标进行定性或定量定义,从而使各指标的性质通过其实现方式或数值表示。运行时指标主要通过说明指标的意义和公式对指标进行定量定义,使硬件性能、程序性能、硬件与程序之间的制约关系等指标通过数值及数值关系表示。
[0037]
(3)自动化指标数据采集系统
[0038]
在现有的深度学习编程框架的相关研究中,不同的研究关注的研究点和指标不同,对于不同指标的数据采集方式也不尽相同。通常情况下,不同的边缘设备提供商官方对于一些硬件性能数据的采集会提供工具支持,或者一些来自相关社区的支持将会作为补充提供数据采集支持。而对于一些官方和社区均未提供工具支持的指标,非专业人员甚至专业人员将会耗费较大精力进行采集方法的确定。针对此问题,本发明对前述指标集的各指标在边缘设备上的指标数据的采集方式进行了实现。开发时和部署时的指标通过采集官网中提供的信息即可完成。运行时各指标的值也通过不同方式完成。cpu利用率通过调linux系统中集成的用perf工具进行采集,gpu利用率通过调用nvidia在cuda中集成的nvprof工具进行配置和数据采集。峰值内存占用通过调用linux系统底层命令采集。吞吐量、训练加速比及准确率等程序指标可通过对深度学习任务的程序进行编码获取。运行时分层屋顶线综合指标中含有多项子指标,其中涉及边缘设备硬件的多精度类型的峰值flops、多级缓存和内存的峰值带宽数据可通过使用lawrence berkeley national laboratory开发的empirical roofline tool(ert)工具并结合不同的配置采集。涉及程序运行时性能的相关指标如内存访问量和计算量等指标则结合nvprof工具进行采集。
[0039]
在进行深度学习编程框架的评估时,同一个评估程序通常需要在多种参数条件下运行,每次运行需要采集不同的指标数据。这使得研究的工作量呈指数级增长。另一方面,深度学习任务中的分布式训练需要在不同的主机上配置环境,当主机数量变动时,相应的评估程序也需要进行修改。同时,进行数据采集时使用到的各类工具需要做大量的环境配置和依赖安装工作,以及各类参数文件和参数设置工作,这使得对深度学习编程框架的评估工作效率大幅降低。因此本发明设计了一个自动化采集全生命周期指标集中不同指标数据的系统,可以自动化的采集不同指标对应的数据。该系统内置多种深度学习基准模型和数据集,供使用者选择,同时用户也可以通过根据系统要求编写自己的程序,再通过系统自动化采集各指标数据。最后,在进行深度学习编程框架的评估时,合适的数据表示方法有助于结果的分析。该系统既可以输出采集到的各指标的原始数据,也可以将数据进行多种形式的表示,例如柱状图或折线图的表示。
[0040]
系统以边缘设备上全生命周期的深度学习编程框架评估指标集为基础,可系统全面的对深度学习编程框架进行评估,同时自动化的根据用户选择进行相应指标数据的采集,以及处理和以图表形式绘制结果数据,大幅提高了边缘设备上进行深度学习编程框架评估工作的效率。解决了现有边缘设备上深度学习编程框架评估工作中不同指标数据采集方法复杂性高、采集效率低以及工作量大的问题。
[0041]
图1是本发明的指标数据采集系统结构示意图。如图1所示,本发明的指标数据采集系统分为三个模块,分别是条件选择模块、数据采集模块和结果分析模块。条件选择某块用于帮助用户设置不同的运行条件,该模块的输入为用户的选择或自定义程序,它包含多个子模块,如框架选择、设备选择、节点选择、参数设置和输出选择等,其输出为待运行的不同评估基准程序。数据收集模块用于在深度学习任务运行时自动化收集不同的指标对应的
数据,并且每次运行时可以在保证不影响所采集数据准确性的条件下同时采集多个指标的数据,同时可以自动遍历运行和采集不同参数条件下的程序的各项指标数据。同时,系统为了保证所采集数据的准确性和可复现性,将会一次或多次采集程序稳定运行时的数据,并对多次采集的数据进行算术平均,其输出为收集到的各项数据文件。处理和输出模块用于根据用户在条件选择模块的选择,对数据收集模块收集到的数据文件进行处理和输出。处理和输出过程包含多种操作例如数据清洗、排序、查找等,然后系统根据要求将数据进行图表绘制进行输出。
[0042]
本发明的指标数据采集系统的系统处理流程如图2所示,用户首先在条件选择模块选择将要运行的评估实验及条件,然后开始运行评估程序并进入数据收集模块。在数据收集模块,系统自动化采集不同指标对应的数据,并将其存入文件中。系统将会对数据采集结果进行判断,如果收集出错,将会重新执行评估程序并收集数据。评估程序运行结束后,进入数据处理和输出模块,该模块首先处理数据收集模块的文件,然后根据用户选择将数据绘制成要求的图表。
[0043][0044]
表2:分布式异构边缘设备平台配置表
[0045]
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,使用表2展示的四类设备搭建的一个分布式异构边缘设备平台,结合部署在其中的边缘设备上自动化的全生命周期指标数据采集系统,对本发明构建的边缘设备上进行深度学习编程框架评估的全生命周期指标集及自动化指标数据采集系统进行进一步详细的说明。应当理解,此处所描述的具体实施方法仅仅用以解释本发明的部分功能,并不用于限定本发明。
[0046]
如图3所示,当前用于演示的硬件平台由16台8g版本树莓派(raspberry pi 4model b)和16台4g版本ia边缘计算设备(jetsonnano)组成。所有主机主机均配备128g内存卡及散热风扇,每台raspberry pi主机额外配备处理器、南桥及内存散热片。所有主机均通过网线连接至两台由网线连接的tp-link 24口千兆交换机,并通过四台acasis 10口电源供电,单口输出功率为10w(5v 2a)。每台raspberrypi主机安装官方提供的基于linux的raspbian gnu/linux 10(buster)操作系统,jetsonnano主机安装基于linux的ubuntu18.04.5lts操作系统。所有主机均通过tp-link路由器的mac-ip映射功能设置固定ip以相互通信。其实物图如图4所示。
[0047]
本发明可部署在由不同数量的异构边缘设备构建的分布式系统中,以进行深度学习编程框架的评估工作。不同边缘设备中只需安装该系统,并对其进行不同节点的配置,即可使用该系统在该硬件平台运行单机或分布式的评估程序,结合不同的参数或条件配置,自动化的采集不同指标的性能数据。我们在该分布式异构边缘设备平台部署了本发明中实现的系统。以对业界使用广泛的深度学习编程框架tensorflow和pytorch的推理和训练性能的评估为例,对本发明的可用性及其部分功能进行演示。
[0048]
评估需求:1.输出使用tensorflow和pytorch在jetsonnano单机上运行相同的四个cnn模型shufflenetv10.5x、mobilenet v2、resnet34、resnet50的图片分类推理任务时gpu利用率(仅shufflenetv10.5x和mobilenet v2模型)、峰值内存占用、平均推理时间性能数据。2.在tensorflow深度学习编程框架中使用轻量级模型shufflenet v10.5x和mobilenet v2,对树莓派进行分布式训练的主机数量的可扩展性进行研究。
[0049]
实验实施:首先,在该异构硬件平台的每台设备中安装该系统,并对不同的主机进行配置,保证系统可正常运行。其次,进行两个评估需求的实验配置。对于推理实验:在条件选择模块选择tensorflow和pytorch深度学习编程框架,选择推理任务和单台jetsonnano节点,选择使用内置的四个cnn模型shufflenet v10.5x、mobilenet v2、resnet34、resnet50的基准程序,选择(32,32,3)和(128,128,3)两种图片输入格式,模型的其他超参数使用默认设置,选择输出shufflenet v10.5x和mobilenet v2模型基准程序运行时gpu的利用率曲线、所有模的峰值内存占用和平均推理时间柱状对比图。对于分布式训练实验:在条件选择模块选择tensorflow深度学习编程框架,选择分布式训练,选择16台树莓派节点作为参与分布式训练的节点,选择shufflenetv10.5x和mobilenet v2作为分布式训练的模型,选择cifar10为训练使用的数据集,选择训练轮数为20轮,其他超参数使用默认值,选择输出不同主机数条件下时进行分布式训练的加速比、准确率加速比、验证集准确率加速比。在进行完条件模块的条件选择之后,选择启动程序运行和评估过程。系统将会自动化运行评估程序,同时根据用户选择采集不同的指标数据并以用户指定的图表形式输出。
[0050]
系统工作流程:在用户选择不同的条件之后,这些条件信息将会被传入系统条件选择模块。系统将根据用户选择将不同的参数代入内置基准程序模板中,自动化生成不同的基准评估程序,这些基准程序中内置了不同的指标收集脚本。如图5所示,系统将自动化的执行所有程序,并收集不同指标数据。
[0051]
对于推理程序:系统首先会激活在jetson nano节点上的互相隔离的tensorflow和pytorch虚拟环境。然后依次启动(32,32,3)和(128,128,3)两种输入类型的四个模型shufflenetv10.5x、mobilenet v2、resnet34、resnet50的基准推理程序。程序启动之后,系统启动新的gpu利用率采集子线程,使用nvprof工具采集不同的程序运行过程中gpu利用率的变化数据,采样间隔为500ms。同时在主程序中调用linux系统内置命令监控当前程序运行过程中的最大内存占用量。所有采集的数据将被存入特定的文件中。在完成不同推理程序的gpu利用率、最大内存占用数据之后。系统启动不同模型的平均推理时间获取程序。同样的,依次运行不同虚拟环境中不同图片输入格式下的推理时间获取程序,程序内部设置连续推理100次并通过调用linux的time包进行时间记录和计算。为了避免偶然因素的影响,同样的过程将会自动化执行5次,获取平均值写入记录文件中。在平均推理时间获取的程序执行完毕之后,关于该推理任务的数据已收集完毕。系统将自动进入数据处理和输入模块。系统通过调用内置脚本将获取到的数据进行清洗,去除文件中的冗余信息,将数据文件存入表格文件中。根据用户的选择,程序调用以matplotlib包为基础的脚本文件,将gpu利用率数据以折线图形式绘制,将峰值内存占用和平均推理时间以柱状图形式绘制并输出。
[0052]
对于分布式训练程序:系统首先会激活16台树莓派中的tensorflow虚拟环境,然后根据用户配置的节点网络信息,通过调用自动化配置脚本配置不同主机中将要运行的两
个模型shufflenet v10.5x和mobilenet v2的分布式训练程序。根据用户的选择,系统将会调用自动化递增主机数的分布式训练脚本,使用cifar10数据集依次运行由1递增到16台主机的两个模型的分布式训练。在每次的20轮训练结束时,系统会将训练的耗时、准确率、验证集准确率数据记录到文件中。不同主机数的分布式训练运行结束后,系统在数据处理和输出模块对收集到的数据进行清理,并调用加速比、准确率提升比、验证集准确率提升比折线图绘制脚本,对收集到的数据进行绘制输出。
[0053]
系统输出:图6a、6b、6c、6d分别为上述实验中系统输出的gpu利用率、峰值内存占用/推理时间和分布式训练的图像,这些图像中的数据由系统在运行不同程序的过程中自动采集得到,大幅提高了评估的效率。
[0054]
其中,图6a展示了推理时shufflenet v10.5x和mobilenet v2模型在tensorflow和pytorch中运行时gpu利用率曲线(tf:tensorflow;py:pytorch);图6b和6c展示了jetsonnano上不同模型运行时的等值内存占用和平均推理时间柱状对比图(tensorflow-128/32或pytorch-128/32表示(32,32,3)和(128,128,3)两种图片的输入类型);图6d展示了树莓派上不同主机数分布式训练时加速比、准确率提升比、验证集准确率提升比折线图。
[0055]
以下通过具体实施例,对本发明的深度学习编程框架评估优化方法进行详细描述。
[0056]
当前深度学习框架评估工作中,没有能够采集边缘设备中的runtime hierarchical roofline指标表现,且能够将多程序的该性能表现输出在同一个runtime hierarchical roofline中以进行对比的方法。本发明则通过结合empirical roofline tool(ert)工具、nvprof工具、脚本程序,对多款边缘设备采集runtime hierarchical roofline指标,并且将可多程序性能绘制在同一图中,以完成对不同框架的表现的对比,以完成对深度学习框架的评估优化。
[0057]
图7是本发明的深度学习编程框架评估优化方法流程图。如图7所示,工具使用python语言实现,runtime hierarchical roofline指标的数据采集绘制依次需要完成的功能包括:
[0058]
步骤s1,用户输入配置文件的解析:工具采用initialization file(ini)格式文件作为输入配置文件格式,用户可在配置文件中指出需要运行的各项程序的各项配置,例如所选的深度学习框架、深度神经网络模型、输入数据的大小格式、需要绘制至图像中的程序等。工具通过调用python的“configparser”模块,结合工具中编写的程序完成用户输入配置文件的解析,得到程序生成、运行、图像绘制的控制信息文件,同样为ini文件格式,之后的解析使用同样的方式;
[0059]
步骤s2,gpu实际峰值浮点运算能力的采集;包括gpu实际各层级内存峰值带宽采集,单一程序运行时所做浮点运算数量采集,单一程序运行时gpu内核活动时间采集,单一程序运行时gpu各内存等级的数据移动量采集,所采集数据的清洗计算;
[0060]
gpu实际峰值浮点运算能力的采集/gpu实际各层级内存峰值带宽采集:工具调用劳伦斯伯克利实验室开发的empirical roofline tool(ert),生成ert工具所需的配置文件,并在配置文件中指出多种参数,以使得ert工具在不同输入条件下运行,工具通过结合python的“open”命令、linux的“find”命令,对文件进行查找分析,对比得到ert工具的输出中gpu实际浮点运算能力中的最大值,以及gpu实际各层级内存的带宽的最大值,各级例如
包括l1、l2、dram层级等。从而得到该两项的峰值数据,将其保存至特定文件中等待绘制模块的读取。
[0061]
单一程序运行时所做浮点运算数量采集:工具通过解析程序生成和运行控制信息配置文件,生成需要运行的程序并运行,在同一时间通过使用python中的“popen”函数,启动新的进程,在其中调用nvidia内置的分析工具“nvprof”,使用flop_count_dp、flop_count_sp、flop_count_hp指标,对当前程序进行浮点运算数的数量输出,通过“popen
“”
函数中的重定向方式将输出输入至特征命名的文件中进行保存,特征命名的文件根据当前程序的特点进行自动化确定。
[0062]
单一程序运行时gpu内核活动时间采集:工具通过解析程序生成和运行控制信息配置文件,生成需要运行的程序并运行,在同一时间通过使用python中的“popen”函数,启动新的进程,在其中调用nvidia内置的分析工具“nvprof”,使用
‑‑
print-summary-per-gpu指标,对当前程序使用的gpu的核心活动的时间进行输出,通过“popen”函数中的重定向方式将输出输入至特征命名的文件中进行保存,特征命名的文件根据当前程序的特点进行自动化确定。
[0063]
单一程序运行时gpu各内存等级的数据移动量采集:工具通过解析程序生成和运行控制信息配置文件,生成需要运行的程序并运行,在同一时间通过使用python中的“popen”函数,启动新的进程,在其中调用nvidia内置的分析工具nvprof,使用gld_transactions、gst_transactions、atomic_transactions、local_load_transactions、local_store_transactions、shared_load_transactions、shared_store_transaction等指标指示输出l1层级内存的数据移动量,使用l2_read_transactions、l2_write_transactions等指标指示输出l2层级内存的数据移动量,使用dram_read_transactions、dram_write_transactions等指标指示输出dram层级内存的数据移动量,,通过“popen”函数中的重定向方式将三项输出输入至同一个特征命名的文件中进行保存,特征命名的文件根据当前程序的特点进行自动化确定。
[0064]
所采集数据的清洗计算:工具通过解析程序生成和运行控制信息配置文件,结合linux中的“find”命令,查找到前述所采集的各项特征命名的数据文件,结合python的“open”库,以及linux内置的“awk”、“grep”和“sed”等命令和工具内置的针对不同类型数据编写的程序,对各个文件的内容进行清洗。之后,对清洗后的数据使用“find”命令、“grep”命令等进行单位换算,以及程序识别和计算。将清洗和计算之后的数据进行保存,等待图像绘制程序的调用。具体包括:
[0065]
1)gpu实际峰值浮点运算能力数据清洗,通过操作工具采集到的原始数据文件,得到gpu实际峰值浮点运算能力最大数值。操作包括删除gpu实际浮点运算数值之外其他数据,对比查找出最大数值,即获取的gpu实际峰值浮点运算能力。
[0066]
2)gpu实际各层级内存峰值带宽数据清洗,通过操作工具采集到的原始数据文件,得到gpu实际各层级内存带宽最大数值。操作包括删除gpu实际各层级内存带宽之外其他数据,对比查找出最大数值,即获取的gpu实际各层级内存峰值带宽。
[0067]
3)单一程序运行时所做浮点运算数量数据清洗,通过操作工具采集到的原始数据文件,得到单一程序运行时所做浮点运算数量。操作包括删除单一程序运行时涉及到的所有操作所做浮点运算数量之外其他数据,对所有浮点操作的单精度、双精度、混合精度浮点
运算数目进行加和,得到单一程序运行时所做浮点运算数量数据。
[0068]
4)单一程序运行时gpu内核活动时间数据清洗,通过操作工具采集到的原始数据文件,得到单一程序运行时gpu内核活动时间数据。操作包括删除单一程序运行时各项操作所做gpu内核活动时间数据之外其他数据,对程序涉及到的所有操作的gpu内核活动时间进行单位换算,统一为秒,然后进行求和。得到单一程序运行时gpu内核活动时间数据。
[0069]
5)单一程序运行时gpu各内存等级的数据移动量数据清洗,通过操作工具采集到的原始数据文件,得到单一程序运行时gpu各内存等级的数据移动量数据。操作包括删除单一程序运行时各项操作所做的gpu各内存等级的数据移动量数据数据之外其他数据,对程序涉及到的所有操作的gpu各内存等级的数据移动量数据按照层级进行求和,得到单一程序运行时gpu各内存等级的数据移动量数据。
[0070]
步骤s3,单一或组合程序的runtime hierarchical roofline图像的绘制:工具解析图像绘制的控制信息文件以及程序生成和运行控制信息配置文件,确定需要绘制的各项程序的信息。通过调用linux的“find”命令、“open”命令读取各个需要绘制的程序的结果的信息,包括前述采集的gpu实际峰值浮点运算能力数据,gpu实际各层级内存峰值带宽数据,单一程序运行时所做浮点运算数量数据,单一程序运行时gpu内核活动时间数据,单一程序运行时gpu各内存等级的数据移动量数据。调用python的“matplotlib”库,结合工具中的runtime hierarchical roofline绘制程序,将需要绘制的各项数据填入到该回执程序的占位符当中进行图像绘制。同时工具将根据配置文件解析结果,在同一图像中循环绘制不同程序的结果,以完成多程序的runtime hierarchical roofline性能表现图像的绘制。
[0071]
绘制使用gpu实际峰值浮点运算能力数据绘制出运行时分层屋顶线图像的平行于x轴的算力屋顶线部分。使用gpu实际各层级内存峰值带宽数据分别绘制出各级带宽屋顶线的斜向带宽屋顶线部分,坐标系采用对数坐标系。程序性能表现在图中的绘制:使用单一程序运行时所做浮点运算数量除以单一程序运行时gpu各内存等级的数据移动量,得到对应gpu各内存等级数量个横坐标,即flops/byte的值。纵坐标由单一程序运行时所做浮点运算数量除以单一程序运行时gpu内核活动时间得到,即flops的值,换算为gflops之后,将程序的个坐标点绘制在分层屋顶线图中。
[0072]
步骤s4,程序优化;图8是本发明的运行时分层屋顶线综合指标示意图。如图8所示,runtime hierarchical roofline的屋顶线拐点左边是带宽限制区域,拐点右边是算力限制区域。当一个程序运行时性能表现的坐标点处于左侧时,说明当前程序处于带宽受限区域,如果它能够发挥硬件平台最大的浮点运算能力,它将会处于斜向的屋顶线下方且紧邻屋顶线,而未达到硬件最大浮点运算能力。此时,想要发挥硬件平台最大的浮点运算能力,则需要在程序的带宽占用方向进行优化,比如减小访存量,使其坐标点右移,进而到达算力限制区域,即可发挥更高的硬件算力能力。同理,如果一个程序处于算力受限区域,且未达到屋顶线处,那么证明需要对其进行算力使用方向的优化,例如采用并行计算的方式,以提高其对硬件算力的发挥能力。即runtime hierarchical roofline能够展示出优化的方向。
[0073]
深度学习模型推理的优化可以通过flops和内存访问进行:增加flops将提高推理速度,减少内存访问量将减少内存访问延迟,这两者都可以提高模型推理的性能。
[0074]
由于不同优化方向的优化难度不同,因此良好的优化顺序将使优化工作得更好。
而runtime hierarchical roofline展示的结果将会对优化顺序也起到指导作用。例如:对于pytorch中的mobilenet v2网络,其l1对应坐标点的横坐标处于带宽受限区域,且其纵坐标表示的gflops已接近“带宽屋顶线”。因此先进行模型的算数强度优化,再进行flops优化将更加合适。因为如果先进行flops优化的话,将有可能因为处于带宽受限区域而无法达到更高的flops。而对于shufflenetv2_05模型,两个深度学习框架中的表现基本一致。根据其坐标点距离“屋顶线”的位置判断,它在两个方向都有较大的优化空间,因此可根据优化难度选择其优化顺序。
[0075]
通过本发明的评估优化方法,可以有效提升对深度学习框架评估的效率,将当前需要数小时才能完成的评估工作降低为分钟级。深度学习框架的评估工作中,运行时性能的评估需要通过不同程序在不同参数条件下的对比完成。传统的深度学习框架评估工作采用的是人工编码、运行、数据采集、数据清洗、图像绘制的过程。采用控制变量方式时,各种条件的组合空间大,需要手动编码和采集过程的次数多,采集效率较低。人工进行数据清洗或图表绘制工作时,相同类型的文件需要做出的机械化操作较多,产出效率低。尤其针对分布式训练任务,任务中调整一项参数,需要改变不同主机节点中的参数,工作量进一步加大,同时,分布式训练任务在运行时需要同时操作与所有参与训练的主机,人工操作效率较低。系统采用的深度学习框架评估的方式为根据配置文件进行自动化编码、运行、数据采集、数据清洗、图表绘制。针对不同程序,系统提取出可重用部分,将可变参数使用占位符形式进行设置,很大程度缩减了代码量。在运行时,系统根据当前从配置文件读取到的信息进行代码填充,自动化的无间断的运行每一条待运行程序,相比人工省去了大量的编码和部署时间。对于数据清洗和图表绘制工作,系统可这对同类型文件进行快速处理,以及同类型图表绘制任务高效完成。
[0076]
对比项/人工和系统人工本系统编码与数据采集程序编码5h运行时生成,可忽略环境启动切换0.1h运行时切换,可忽略启动程序和数据采集1h运行时同时启动,可忽略数据保存命名1h运行时根据程序特征进行自动化命名,可忽略数据清洗计算2.5h使用系统处理程序进行,可忽略图表绘制1h使用系统处理程序进行,可忽略
[0077]
表3人工和系统的各阶段耗时对比表
[0078]
例如,对在jetsonnano平台中运行tensorflow和pytorch深度学习框架的shufflenet v10.5x、mobilenet v2、resnet34、resnet50、vgg-19等模型的推理程序的runtime hierarchical roofline图像进行采集。对比人工和系统的各阶段耗时如表3所示。
[0079]
因此,在操作上仅该实例中便可节省10.6个小时左右的时间,系统提供的效率提升较多。并且类似操作可以轻松得到复用,在不同的硬件或任务需求下。
[0080]
此外,本发明的评估优化方法还可以根据数据采集结果给出优化方向,而当前的深度学习框架评估工具只给出数据。传统深度学习框架评估工作中,工作主要内容是设计不同类型的任务,运行并采集数据和绘制对比分析,对于框架的瓶颈分析和优化方向的指出较少。尤其是已有的深度学习框架评估的相关工具如aiperf或mlperf类的相关工具,更
多的是采集数据和对表现进行展示分析,不涉及瓶颈分析和优化方向的建议等。本方法依靠指标集中使用的runtime hierarchical roofline指标,可对不同条件下运行的程序的多项数据的制约关系进行展现,进而分析出瓶颈和优化方向。
[0081]
例如图8中,对于tensorflow的mobilenetv2,与l1对应的点的横坐标位于带宽受限区域,纵坐标表示的gflops接近“带宽屋顶线”。因此,首先优化tensorflow的mobilenet v2的算术强度,然后执行flops优化更为合适。如果首先优化flops,则由于带宽的限制,可能无法实现更高的flops。
[0082]
图9是本发明的数据处理装置示意图。如图9所示,本发明实施例还提供一种计算机可读存储介质,以及一种数据处理装置。本发明的计算机可读存储介质存储有计算机可执行指令,计算机可执行指令被数据处理装置的处理器执行时,实现上述面向边缘设备的深度学习编程框架评估与优化。本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件(例如处理器、fpga、asic等)完成,所述程序可以存储于可读存储介质中,如只读存储器、磁盘或光盘等。上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块可以采用硬件的形式实现,例如通过集成电路来实现其相应功能,也可以采用软件功能模块的形式实现,例如通过处理器执行存储于存储器中的程序/指令来实现其相应功能。本发明实施例不限制于任何特定形式的硬件和软件的结合。
[0083]
现有的在边缘设备上进行深度学习编程框架评估的工作较少且不全面,普遍针对运行时进行评估,这导致评估结果不够全面。同时不同研究针对相同指标的定义方式不尽相同,导致研究结果的准确性存在问题。最后,现有的深度学习编程框架进行不同指标的数据采集时,环境安装成本高,采集效率低,且工作量大。本发明针对以上三个问题,从使用深度学习编程框架的角度出发,构建了涵盖开发时、部署时和运行时指标的全生命周期的评估指标集。该指标集中包含不同粒度大小的单一指标或综合指标,并对每个指标进行了定性或定量定义。最后,本发明以边缘设备上全生命周期的深度学习编程框架评估指标集为基础实现了自动化采集不同指标数据的系统。该系统分为条件选择模块、数据收集模块、数据处理和输出模块。系统可对用户选择的内置评估程序或用户自定义程序进行不同条件下的自动化运行和数据采集,并将结果数据进行处理和图表形式输出。本发明一方面构建出了边缘设备上进行深度学习编程框架评估的系统完整的指标集,并给出了具体定义,使得在边缘设备上进行深度学习编程框架评估的工作更加系统全面,结果更加具有参考价值。另一方面大幅提高了在边缘设备上进行深度学习编程框架评估工作的效率,通过自动化的运行不同条件下的评估程序,并对结果数据进行处理和输出。使得在边缘设备上深度学习编程框架的评估工作的门槛降低,更多的研究者可以方便快捷系统准确地开展该类工作。
[0084]
以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变形,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
技术特征:
1.一种面向边缘设备的深度学习编程框架评估优化方法,其特征在于,包括:解析深度学习任务的配置文件,获得深度学习任务的程序控制信息;依据该程序控制信息,依次获取边缘设备执行该深度学习任务的多个实际运行数据;该实际运行数据包括该边缘设备运行该深度学习任务时的gpu实际峰值浮点运算数据、gpu实际各层级内存峰值带宽数据、浮点运算数量、gpu内核活动时间和gpu数据移动量;以该实际运行数据绘制该边缘设备运行该深度学习任务的运行时分层屋顶线图;根据该运行时分层屋顶线图,确定对该深度学习任务的优化方向及优化顺序。2.如权利要求1所述的深度学习编程框架评估优化方法,其特征在于,该运行时分层屋顶线图采用对数坐标系,并使用该gpu实际峰值浮点运算数据绘制平行于x轴的算力屋顶线部分,使用该gpu实际各层级内存峰值带宽数据绘制各级带宽的斜向带宽屋顶线部分;该算力屋顶线部分与该斜向带宽屋顶线部分相交于屋顶线拐点;以该浮点运算数量除以该gpu数据移动量的商值为该深度学习任务的程序性能的横坐标值,以该gpu内核活动时间为该程序性能的纵坐标值,将该程序性能绘制于该对数坐标系内。3.如权利要求2所述的深度学习编程框架评估优化方法,其特征在于,以该运行时分层屋顶线图中屋顶线拐点的左侧区域为带宽限制区域,右侧区域为算力限制区域;若该程序性能的坐标点落在该带宽限制区域,则该优化方向为提升该深度学习任务的带宽占用效率,若该坐标点落在该算力限制区域,则该优化方向为提升该深度学习任务的算力使用效率。4.如权利要求1所述的深度学习编程框架评估优化方法,其特征在于,对该实际运行数据进行清洗操作后,生成该运行时分层屋顶线图,该清洗操作包括:删除gpu实际浮点运算数据中的无关数据,并比对查找出该gpu实际浮点运算数据中的最大数值,作为该gpu实际峰值浮点运算数据;删除gpu实际各层级内存带宽数据中的无关数据,并比对查找出该gpu实际各层级内存带宽数据中最大数值,作为该gpu实际各层级内存峰值带宽数据;删除该深度学习任务运行时相关浮点运算操作数据的无关数据,并将该浮点运算操作数据中的单精度浮点运算数目、双精度浮点运算数目和混合精度浮点运算数目进行加和,获得该浮点运算数量;删除该深度学习任务运行时各项操作的分项gpu内核活动时间数据中的无关数据,并将该分项gpu内核活动时间数据统一单位后进行加和,获得该深度学习任务于该边缘设备进行各项操作所对应的gpu内核活动时间;删除该深度学习任务运行时gpu各内存等级的数据移动量中的无关数据,并将内存数据移动量按照层级进行加和,获得执行该深度学习任务时于该边缘设备gpu各内存所对应的gpu数据移动量。5.一种面向边缘设备的深度学习编程框架评估优化系统,其特征在于,包括:配置模块,用于通过解析深度学习任务的配置文件,获得深度学习任务的程序控制信息;数据采集模块,用于依据该程序控制信息,依次获取边缘设备执行该深度学习任务的多个实际运行数据;该实际运行数据包括该边缘设备运行该深度学习任务时的gpu实际峰
值浮点运算数据、gpu实际各层级内存峰值带宽数据、浮点运算数量、gpu内核活动时间和gpu数据移动量;指标图绘制模块,用于以该实际运行数据绘制该边缘设备运行该深度学习任务的运行时分层屋顶线图;评估优化模块,用于根据该运行时分层屋顶线图,确定对该深度学习任务的优化方向及优化顺序。6.如权利要求5所述的深度学习编程框架评估优化系统,其特征在于,该运行时分层屋顶线图采用对数坐标系,并使用该gpu实际峰值浮点运算数据绘制平行于x轴的算力屋顶线部分,使用该gpu实际各层级内存峰值带宽数据绘制各级带宽的斜向带宽屋顶线部分;该算力屋顶线部分与该斜向带宽屋顶线部分相交于屋顶线拐点;以该浮点运算数量除以该gpu数据移动量的商值为该深度学习任务的程序性能的横坐标值,以该gpu内核活动时间为该程序性能的纵坐标值,将该程序性能绘制于该对数坐标系内。7.如权利要求6所述的深度学习编程框架评估优化系统,其特征在于,该评估优化模块包括:以该运行时分层屋顶线图中屋顶线拐点的左侧区域为带宽限制区域,右侧区域为算力限制区域;若该程序性能的坐标点落在该带宽限制区域,则该优化方向为提升该深度学习任务的带宽占用效率,若该坐标点落在该算力限制区域,则该优化方向为提升该深度学习任务的算力使用效率。8.如权利要求5所述的深度学习编程框架评估优化系统,其特征在于,该数据采集模块包括数据清洗模块,该数据清洗模块包括:第一清洗模块,用于删除gpu实际浮点运算数据中的无关数据,并比对查找出该gpu实际浮点运算数据中的最大数值,作为该gpu实际峰值浮点运算数据;第二清洗模块,用于删除gpu实际各层级内存带宽数据中的无关数据,并比对查找出该gpu实际各层级内存带宽数据中最大数值,作为该gpu实际各层级内存峰值带宽数据;第三清洗模块,用于删除该深度学习任务运行时相关浮点运算操作数据的无关数据,并将该浮点运算操作数据中的单精度浮点运算数目、双精度浮点运算数目和混合精度浮点运算数目进行加和,获得该浮点运算数量;第四清洗模块,用于删除该深度学习任务运行时各项操作的分项gpu内核活动时间数据中的无关数据,并将该分项gpu内核活动时间数据统一单位后进行加和,获得该深度学习任务于该边缘设备进行各项操作所对应的gpu内核活动时间;第五清洗模块,用于删除该深度学习任务运行时gpu各内存等级的数据移动量中的无关数据,并将内存数据移动量按照层级进行加和,获得执行该深度学习任务时于该边缘设备gpu各内存所对应的gpu数据移动量。9.一种计算机可读存储介质,存储有计算机可执行指令,其特征在于,当该计算机可执行指令被执行时,实现如权利要求1~4任一项所述的面向边缘设备的深度学习编程框架评估优化。10.一种数据处理装置,包括如权利要求9所述的计算机可读存储介质,当该数据处理装置的处理器调取并执行该计算机可读存储介质中的计算机可执行指令时,该数据处理装
置实现面向边缘设备的深度学习编程框架评估优化。
技术总结
本发明提出一种面向边缘设备的深度学习编程框架评估优化方法,包括:解析深度学习任务的配置文件,获得深度学习任务的程序控制信息;依据该程序控制信息,依次获取边缘设备执行该深度学习任务的多个实际运行数据;该实际运行数据包括该边缘设备运行该深度学习任务时的GPU实际峰值浮点运算数据、GPU实际各层级内存峰值带宽数据、浮点运算数量、GPU内核活动时间和GPU数据移动量;以该实际运行数据绘制该边缘设备运行该深度学习任务的运行时分层屋顶线图;根据该运行时分层屋顶线图,确定对该深度学习任务的优化方向及优化顺序。本发明还提出一种面向边缘设备的深度学习编程框架评估优化系统,以及一种用于深度学习编程框架评估优化的数据处理装置。评估优化的数据处理装置。评估优化的数据处理装置。
技术研发人员:张星洲 姜晓阳 彭晓晖
受保护的技术使用者:中国科学院计算技术研究所
技术研发日:2023.03.15
技术公布日:2023/7/21
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
上一篇:一种自动浇铸系统的制作方法 下一篇:纯电动汽车的自动除霜方法、装置及系统与流程
