CN116701145A - 性能分析方法、装置、系统、计算设备及存储介质 - Google Patents

性能分析方法、装置、系统、计算设备及存储介质 Download PDF

Info

Publication number
CN116701145A
CN116701145A CN202310673323.6A CN202310673323A CN116701145A CN 116701145 A CN116701145 A CN 116701145A CN 202310673323 A CN202310673323 A CN 202310673323A CN 116701145 A CN116701145 A CN 116701145A
Authority
CN
China
Prior art keywords
data
model
performance
cloud platform
graphics processor
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
Application number
CN202310673323.6A
Other languages
English (en)
Inventor
请求不公布姓名
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Moore Threads Technology Co Ltd
Original Assignee
Moore Threads Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Moore Threads Technology Co Ltd filed Critical Moore Threads Technology Co Ltd
Priority to CN202310673323.6A priority Critical patent/CN116701145A/zh
Publication of CN116701145A publication Critical patent/CN116701145A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3409Recording 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3447Performance evaluation by modeling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3452Performance evaluation by statistical analysis
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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)
  • Debugging And Monitoring (AREA)

Abstract

本公开涉及一种性能分析方法、装置、系统、计算设备及存储介质,所述方法应用于计算设备,计算设备上设置有图形处理器和容器,所述方法包括:从云端平台接收配置信息、拷贝代码仓库;根据代码仓库指示从云端平台下载运行模型所需的资源,基于资源使用图形处理器运行模型,使用容器获取模型运行的性能原始数据并分析得到性能展示数据;上传性能展示数据到云端平台,用户设备从云端平台下载性能展示数据并展示给用户;性能原始数据包括图形处理器以多种框架分别运行模型时获取到的多种数据格式的痕迹数据。根据本公开实施例的性能分析方法,一次可展示图形处理器以多种框架运行模型时的性能分析结果,使基于性能分析结果确定性能优化方式更便捷。

Description

性能分析方法、装置、系统、计算设备及存储介质
技术领域
本公开涉及人工智能领域,尤其涉及一种性能分析方法、装置、系统、计算设备及存储介质。
背景技术
近年来,人工智能(artificial intelligence,AI)的研究及落地正在如火如荼地展开,AI应用正在进入人们的日常生活。AI模型需要大规模的矩阵运算,因此通常使用擅长矩阵运算的图形处理器(graphics processing unit,GPU)来加速AI应用。想要提高AI模型在GPU上运行的性能,需要获取AI模型的运行数据,给出性能分析报告,然后结合报告针对性优化AI模型在GPU上运行的性能。
AI领域通常涵盖视觉、自然语言处理、推荐系统、医疗影像、语音识别等多个方向。而每个方向都有大量的AI模型,业界常用的模型也有数百到数千个。第一,如果每个模型都需要算法工程师手动进行性能分析,那么工作量将非常庞大;第二,每个算法工程师开发水平,编码习惯相差很大,导致性能分析报告风格多样,内容参差不齐,也无法保证报告的质量,非常不利于性能优化;第三,手动产生的报告一般都是一些文本或命令行打印的数据,无法直观的展示数据,不能进行有效的分析。
综上所述,现有技术尚不能实现自动化、标准化的AI性能分析方案。另外,图形处理器可支持多种框架,现有技术通常一次只能展示图形处理器以一种框架运行AI模型时的性能分析报告,不够全面。
发明内容
有鉴于此,本公开提出了一种性能分析方法、装置、系统、计算设备及存储介质,根据本公开实施例的性能分析方法,只需用户提交配置信息即可实现一键式、自动化性能分析,并且性能分析结果是结构化、标准化的结果,同时,一次可展示图形处理器以多种框架运行模型时的性能分析结果,使基于性能分析结果确定性能优化方式更便捷。
根据本公开的一方面,提供了一种性能分析方法,所述方法应用于计算设备,所述计算设备上设置有实体的图形处理器和虚拟的容器,所述方法包括:从云端平台接收配置信息,所述配置信息由用户设备上传,所述配置信息指示待分析的模型及所述模型的运行参数;从所述云端平台拷贝代码仓库,所述代码仓库指示所述计算设备分析所述模型在所述图形处理器上运行的性能的方式以及预设的数据格式;根据所述代码仓库指示的方式,从所述云端平台下载运行所述模型所需的资源,基于所述资源使用所述图形处理器运行所述模型,使用所述容器获取所述模型运行的性能原始数据并分析所述性能原始数据得到性能展示数据,所述性能展示数据符合所述预设的数据格式;上传所述性能展示数据到所述云端平台,所述性能展示数据由所述用户设备从所述云端平台下载并展示给用户;其中,所述图形处理器支持多种框架,所述性能原始数据包括所述图形处理器以所述多种框架分别运行所述模型时获取到的多种数据格式的痕迹数据,分析所述性能原始数据得到性能展示数据时,包括对所述多种数据格式的痕迹数据进行处理,得到符合所述预设的数据格式的痕迹数据,作为性能展示数据中的一种数据。
在一种可能的实现方式中,基于所述资源使用所述图形处理器运行所述模型之前,所述方法还包括:从所述云端平台拷贝与所述模型相关的深度神经网络库和至少一种框架;编译所述深度神经网络库,从所述至少一种框架中选择一种框架并安装选择出的框架;所述基于所述资源使用所述图形处理器运行所述模型,包括:所述深度神经网络库编译好且所述选择出的框架安装好后,基于所述资源使用所述图形处理器运行所述模型。
在一种可能的实现方式中,所述图形处理器的软件栈包括计算层、框架层和模型层,所述性能原始数据包括与所述模型层对应的模型端到端性能数据、与所述框架层对应的所述痕迹数据、与所述计算层对应的核函数数据,所述框架层支持所述多种框架,所述模型的运行阶段包括预处理阶段、内存到显存的数据拷贝阶段、推理阶段、显存到内存的数据拷贝阶段、后处理阶段,所述模型端到端性能数据包括所述模型各运行阶段的耗时和所述模型各运行阶段的吞吐量;所述模型包括多个算子,所述痕迹数据包括每一算子的算子执行耗时;所述算子在运行时调用所述深度神经网络库中的核函数,所述核函数数据包括所述核函数的吞吐量和所述核函数的带宽。
在一种可能的实现方式中,所述运行参数包括多种批尺寸,所述使用所述容器获取所述模型运行的性能原始数据并分析所述性能原始数据得到性能展示数据,包括:在所述核函数并行运行的情况下,针对所述模型的每一批尺寸,分别获取至少一次所述模型端到端性能数据;重新编译所述深度神经网络库,并在所述核函数串行运行的情况下,基于所述模型各运行阶段的吞吐量最高时对应的批尺寸,获取所述选择出的框架对应的痕迹数据和所述核函数数据;所述方法还包括:重新执行编译所述深度神经网络库到使用所述容器获取所述模型运行的性能原始数据之间的步骤,直到所述至少一种框架中的每种框架均被选择过。
在一种可能的实现方式中,所述性能原始数据还包括系统层面数据,所述系统层面数据包括所述计算设备的硬件性能数据、固件性能数据、内核调用数据、进程数据,所述配置信息还指示所述容器的环境变量、待进行数据获取的模型程序段、获取所述系统层面数据的方式,所述使用所述容器获取所述模型运行的性能原始数据并分析所述性能原始数据得到性能展示数据,包括:根据所述配置信息定义所述容器的环境变量;所述模型以所述运行参数运行所述待进行数据获取的模型程序段时,采用所述获取系统层面数据的方式,获取所述硬件性能数据、所述固件性能数据、所述内核调用数据、所述进程数据。
在一种可能的实现方式中,所述预设的数据格式包括网页文件格式,使用所述容器获取所述模型运行的性能原始数据并分析所述性能原始数据得到性能展示数据,包括:分析所述性能原始数据,得到所述模型的运行环境数据和所述模型的属性数据;调整所述模型端到端性能数据、所述核函数数据、所述系统层面数据、所述运行环境数据以及所述属性数据的数据格式,使其符合预设的网页文件格式。
在一种可能的实现方式中,所述预设的数据格式包括网页文件格式,所述方法还包括:通过所述云端平台将所述多种数据格式的痕迹数据存储至所述云端平台关联的至少一个存储设备;根据所述多种数据格式的痕迹数据及其存储地址得到痕迹数据存储目录;对所述多种数据格式的痕迹数据进行处理,得到符合所述预设的数据格式的痕迹数据,包括:根据所述痕迹数据存储目录中的地址,通过所述云端平台获取所述地址处存储的多种数据格式的痕迹数据;调整所述多种数据格式的痕迹数据的数据格式,使所述多种数据格式的痕迹数据的数据格式统一;根据每种数据格式的痕迹数据对应的框架、所述模型、所述批尺寸,对数据格式统一的痕迹数据进行命名并保存为文本格式;将文本格式的痕迹数据转换为网页文件格式的痕迹数据。
在一种可能的实现方式中,所述从所述云端平台下载运行所述模型所需的资源之前,所述方法还包括:检查所述容器和所述图形处理器是否具备满足条件的运行环境;所述从所述云端平台下载运行所述模型所需的资源,包括:在具备满足条件的运行环境时,从所述云端平台下载运行所述模型所需的资源,所述运行所述模型所需的资源包括运行所述模型所需的模型文件、库文件、数据集文件中的一种或多种。
在一种可能的实现方式中,所述图形处理器是基准图形处理器时,所述满足条件的运行环境包括:所述图形处理器上设置有基准图形处理器的软件栈,或者,所述图形处理器上设置有目标图形处理器的软件栈的运行镜像,在所述运行镜像中安装有软件包管理程序、所述代码仓库使用的编程语言的运行依赖数据包、目标图形处理器的显卡驱动程序、目标图形处理器的算子库,所述算子库的运行环境的环境变量设置为目标图形处理器的运行环境的环境变量,其中,所述目标图形处理器是用户预设好的待优化的图形处理器,所述基准处理器的理论性能高于所述目标图形处理器。
在一种可能的实现方式中,所述方法还包括:上传所述性能原始数据到所述云端平台;从所述云端平台接收来自用户设备的历史数据分析指示时,从所述云端平台处下载所述性能原始数据,重新执行分析所述性能原始数据得到性能展示数据及之后的步骤。
根据本公开的另一方面,提供了一种性能分析装置,所述装置应用于计算设备,所述计算设备上设置有实体的图形处理器和虚拟的容器,所述装置包括:第一接收模块,用于从云端平台接收配置信息,所述配置信息由用户设备上传,所述配置信息指示待分析的模型及所述模型的运行参数;第一拷贝模块,用于从所述云端平台拷贝代码仓库,所述代码仓库指示所述计算设备分析所述模型在所述图形处理器上运行的性能的方式以及预设的数据格式;分析模块,用于根据所述代码仓库指示的方式,从所述云端平台下载运行所述模型所需的资源,基于所述资源使用所述图形处理器运行所述模型,使用所述容器获取所述模型运行的性能原始数据并分析所述性能原始数据得到性能展示数据,所述性能展示数据符合所述预设的数据格式;第一上传模块,用于上传所述性能展示数据到所述云端平台,所述性能展示数据由所述用户设备从所述云端平台下载并展示给用户;其中,所述图形处理器支持多种框架,所述性能原始数据包括所述图形处理器以所述多种框架分别运行所述模型时获取到的多种数据格式的痕迹数据,分析所述性能原始数据得到性能展示数据时,包括对所述多种数据格式的痕迹数据进行处理,得到符合所述预设的数据格式的痕迹数据,作为性能展示数据中的一种数据。
在一种可能的实现方式中,所述装置还包括:第二拷贝模块,用于从所述云端平台拷贝与所述模型相关的深度神经网络库和至少一种框架;编译安装模块,用于编译所述深度神经网络库,从所述至少一种框架中选择一种框架并安装选择出的框架;所述基于所述资源使用所述图形处理器运行所述模型,包括:所述深度神经网络库编译好且所述选择出的框架安装好后,基于所述资源使用所述图形处理器运行所述模型。
在一种可能的实现方式中,所述图形处理器的软件栈包括计算层、框架层和模型层,所述性能原始数据包括与所述模型层对应的模型端到端性能数据、与所述框架层对应的所述痕迹数据、与所述计算层对应的核函数数据,所述框架层支持所述多种框架,所述模型的运行阶段包括预处理阶段、内存到显存的数据拷贝阶段、推理阶段、显存到内存的数据拷贝阶段、后处理阶段,所述模型端到端性能数据包括所述模型各运行阶段的耗时和所述模型各运行阶段的吞吐量;所述模型包括多个算子,所述痕迹数据包括每一算子的算子执行耗时;所述算子在运行时调用所述深度神经网络库中的核函数,所述核函数数据包括所述核函数的吞吐量和所述核函数的带宽。
在一种可能的实现方式中,所述运行参数包括多种批尺寸,所述使用所述容器获取所述模型运行的性能原始数据并分析所述性能原始数据得到性能展示数据,包括:在所述核函数并行运行的情况下,针对所述模型的每一批尺寸,分别获取至少一次所述模型端到端性能数据;重新编译所述深度神经网络库,并在所述核函数串行运行的情况下,基于所述模型各运行阶段的吞吐量最高时对应的批尺寸,获取所述选择出的框架对应的痕迹数据和所述核函数数据;所述装置还包括:驱动模块,用于驱动所述分析模块重新执行编译所述深度神经网络库到使用所述容器获取所述模型运行的性能原始数据之间的步骤,直到所述至少一种框架中的每种框架均被选择过。
在一种可能的实现方式中,所述性能原始数据还包括系统层面数据,所述系统层面数据包括所述计算设备的硬件性能数据、固件性能数据、内核调用数据、进程数据,所述配置信息还指示所述容器的环境变量、待进行数据获取的模型程序段、获取所述系统层面数据的方式,所述使用所述容器获取所述模型运行的性能原始数据并分析所述性能原始数据得到性能展示数据,包括:根据所述配置信息定义所述容器的环境变量;所述模型以所述运行参数运行所述待进行数据获取的模型程序段时,采用所述获取系统层面数据的方式,获取所述硬件性能数据、所述固件性能数据、所述内核调用数据、所述进程数据。
在一种可能的实现方式中,所述预设的数据格式包括网页文件格式,使用所述容器获取所述模型运行的性能原始数据并分析所述性能原始数据得到性能展示数据,包括:分析所述性能原始数据,得到所述模型的运行环境数据和所述模型的属性数据;调整所述模型端到端性能数据、所述核函数数据、所述系统层面数据、所述运行环境数据以及所述属性数据的数据格式,使其符合预设的网页文件格式。
在一种可能的实现方式中,所述预设的数据格式包括网页文件格式,所述装置还包括:存储模块,用于通过所述云端平台将所述多种数据格式的痕迹数据存储至所述云端平台关联的至少一个存储设备;第一确定模块,用于根据所述多种数据格式的痕迹数据及其存储地址得到痕迹数据存储目录;对所述多种数据格式的痕迹数据进行处理,得到符合所述预设的数据格式的痕迹数据,包括:根据所述痕迹数据存储目录中的地址,通过所述云端平台获取所述地址处存储的多种数据格式的痕迹数据;调整所述多种数据格式的痕迹数据的数据格式,使所述多种数据格式的痕迹数据的数据格式统一;根据每种数据格式的痕迹数据对应的框架、所述模型、所述批尺寸,对数据格式统一的痕迹数据进行命名并保存为文本格式;将文本格式的痕迹数据转换为网页文件格式的痕迹数据。
在一种可能的实现方式中,所述装置还包括:检查模块,用于检查所述容器和所述图形处理器是否具备满足条件的运行环境;所述从所述云端平台下载运行所述模型所需的资源,包括:在具备满足条件的运行环境时,从所述云端平台下载运行所述模型所需的资源,所述运行所述模型所需的资源包括运行所述模型所需的模型文件、库文件、数据集文件中的一种或多种。
在一种可能的实现方式中,所述图形处理器是基准图形处理器时,所述满足条件的运行环境包括:所述图形处理器上设置有基准图形处理器的软件栈,或者,所述图形处理器上设置有目标图形处理器的软件栈的运行镜像,在所述运行镜像中安装有软件包管理程序、所述代码仓库使用的编程语言的运行依赖数据包、目标图形处理器的显卡驱动程序、目标图形处理器的算子库,所述算子库的运行环境的环境变量设置为目标图形处理器的运行环境的环境变量,其中,所述目标图形处理器是用户预设好的待优化的图形处理器,所述基准处理器的理论性能高于所述目标图形处理器。
在一种可能的实现方式中,所述装置还包括:第二上传模块,用于上传所述性能原始数据到所述云端平台;第二接收模块,用于从所述云端平台接收来自用户设备的历史数据分析指示时,从所述云端平台处下载所述性能原始数据,驱动所述分析模块重新执行分析所述性能原始数据得到性能展示数据及之后的步骤。
根据本公开的另一方面,提供了一种性能分析系统,所述系统包括用户设备、至少一个计算设备和至少一个存储设备,所述用户设备和所述至少一个计算设备通过云端平台交互,所述至少一个计算设备和所述至少一个存储设备通过所述云端平台交互,所述计算设备上设置有实体的图形处理器和虚拟的容器,所述用户设备用于上传配置信息到所述云端平台,所述配置信息指示待分析的模型及所述模型的运行参数;所述至少一个存储设备用于上传代码仓库以及运行所述模型所需的资源到所述云端平台,所述代码仓库指示所述计算设备分析所述模型在所述图形处理器上运行的性能的方式以及预设的数据格式;所述计算设备用于从所述云端平台接收来自所述用户设备的配置信息并从所述云端平台拷贝所述代码仓库,根据所述代码仓库指示的方式,从所述云端平台下载运行所述模型所需的资源,基于所述资源使用所述图形处理器运行所述模型,使用所述容器获取所述模型运行的性能原始数据并分析所述性能原始数据得到性能展示数据,上传所述性能展示数据到所述云端平台,所述性能展示数据符合所述预设的数据格式;所述用户设备还用于从所述云端平台下载所述性能展示数据并展示给用户。
根据本公开的另一方面,提供了一种性能分析装置,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为在执行所述存储器存储的指令时,实现上述方法。
根据本公开的另一方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其中,所述计算机程序指令被处理器执行时实现上述方法。
根据本公开的另一方面,提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述方法。
根据本公开实施例的性能分析方法,从云端平台接收配置信息,配置信息由用户设备上传,配置信息指示待分析的模型及模型的运行参数,可以确定用户的性能分析需求;从云端平台拷贝代码仓库文件,代码仓库文件指示计算设备分析模型在图形处理器上运行的性能的方式以及预设的数据格式,使得计算设备能够具备分析模型在图形处理器上运行的性能的能力;根据代码仓库文件指示的方式,从云端平台下载运行模型所需的资源,基于资源使用图形处理器运行模型,使用容器获取模型运行的性能原始数据并分析性能原始数据得到性能展示数据,使得性能展示数据可以是满足用户的性能分析需求的性能分析结果,性能展示数据符合预设的数据格式,因此实现了标准化、结构化的数据处理;通过上传性能展示数据到云端平台,性能展示数据由用户设备从云端平台下载并展示给用户,使得用户可以随时查看性能展示数据。针对图形处理器支持的多种框架,获取的性能原始数据包括图形处理器以多种框架分别运行模型时获取到的多种数据格式的痕迹数据,分析性能原始数据得到性能展示数据时,包括对多种数据格式的痕迹数据进行处理,得到符合预设的数据格式的痕迹数据,作为性能展示数据中的一种数据,使得用户可以查看性能展示数据时,可以同时查看图形处理器以多种框架运行模型时的性能分析结果,本公开的性能分析方法,只需用户提交配置信息即可实现一键式、自动化性能分析,并且性能分析结果是结构化、标准化的结果,同时,一次可展示图形处理器以多种框架运行模型时的性能分析结果,使基于性能分析结果确定性能优化方式更便捷。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开实施例的性能分析方法的示例性应用场景。
图2示出根据本公开实施例的性能分析方法的流程的示意图。
图3示出根据本公开实施例的性能分析系统的示例性结构图。
图4示出本公开实施例的性能展示数据在可视化模块中展示为图表的示例。
图5示出本公开实施例的性能展示数据在可视化模块中展示为图表的示例。
图6示出本公开实施例的性能展示数据在可视化模块中展示为图表的示例。
图7示出本公开实施例的性能展示数据在可视化模块中展示为图表的示例。
图8示出本公开实施例的性能展示数据在可视化模块中展示为图表的示例。
图9示出本公开实施例的性能展示数据在可视化模块中展示为图表的示例。
图10示出本公开实施例的性能展示数据在可视化模块中展示为图表的示例。
图11示出本公开实施例的性能展示数据在可视化模块中展示为图表的示例。
图12示出根据本公开实施例的性能分析装置的示例性结构图。
图13示出根据本公开实施例的装置1900的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
图1示出根据本公开实施例的性能分析方法的示例性应用场景。
如图1所示,应用场景中可包括用户设备、存储设备1-存储设备3、计算设备1和计算设备2。用户设备和计算设备之间、计算设备和存储设备之间可以通过云端平台来实现数据交互。
用户可通过用户设备输入配置信息并将配置信息上传至云端平台,配置信息可由云端平台输出到应用场景中的计算设备,配置信息可以指示待分析的模型(例如模型A)及模型的运行参数,其示例可以参见下文及图2的相关描述。
每个计算设备上可设置有不同型号的图形处理器,图形处理器可具备运行模型的能力。在图1的示例中,计算设备1上设置有图形处理器1,计算设备2上设置有图形处理器2。用户还可进一步通过用户设备选择特定的计算设备的标签(未示出)并发送给云端平台,以指示云端平台将配置信息输出到应用场景中的某个或者某些计算设备。例如,如果用户需求是分析模型A在图形处理器1上运行的性能,则可发送包括图形处理器1的计算设备(也即计算设备1)的标签,可指示云端平台将配置信息输出至计算设备1。如果用户需求是分析模型A在图形处理器1和图形处理器2上运行的性能,则可发送包括图形处理器1的计算设备(也即计算设备1)和包括图形处理器2的计算设备(也即计算设备2)的标签,可指示云端平台将配置信息输出至计算设备1和计算设备2。
本公开实施例的性能分析方法可由任意计算设备执行,执行该性能分析方法可得到指示模型在该计算设备上的图形处理器上运行的性能的数据,如下文所述的性能原始数据和性能展示数据,性能展示数据可以被用户设备通过云端平台获取并展示为图表,以便用户查看并确定优化模型性能的方式。存储设备可用于提供构建模型在图形处理器上运行的运行环境的文件(如下文所述的框架、深度神经网络库)以及模型运行所需的资源(如下文所述的模型文件、库文件、数据集文件),还可用于存储指示模型在图形处理器上运行的性能的数据(如下文所述的性能原始数据和性能展示数据)。本文中所提及的框架指深度学习框架。
可以理解的是,应用场景中还可以包括更多或者更少的计算设备和存储设备,只要计算设备能够完成用户需求、存储设备能够满足数据存储需求即可,本公开实施例对于应用场景中的计算设备数量和存储设备数量不作限制。
图2示出根据本公开实施例的性能分析方法的流程的示意图。
如图2所示,在一种可能的实现方式中,所述方法应用于计算设备,所述计算设备上设置有实体的图形处理器和虚拟的容器,所述方法包括步骤S21-步骤S24:
步骤S21,从云端平台接收配置信息,配置信息由用户设备上传,配置信息指示待分析的模型及模型的运行参数;
步骤S22,从云端平台拷贝代码仓库,代码仓库指示计算设备分析模型在图形处理器上运行的性能的方式以及预设的数据格式;
步骤S23,根据代码仓库指示的方式,从云端平台下载运行模型所需的资源,基于资源使用图形处理器运行模型,使用容器获取模型运行的性能原始数据并分析性能原始数据得到性能展示数据,性能展示数据符合预设的数据格式;
步骤S24,上传性能展示数据到云端平台,性能展示数据由用户设备从云端平台下载并展示给用户;
其中,图形处理器支持多种框架,性能原始数据包括图形处理器以多种框架分别运行模型时获取到的多种数据格式的痕迹数据,分析性能原始数据得到性能展示数据时,包括对多种数据格式的痕迹数据进行处理,得到符合预设的数据格式的痕迹数据,作为性能展示数据中的一种数据。
下面介绍配置信息的示例。
待分析的模型可以是人工智能领域的任意模型,例如可以是视觉方向的人脸识别模型等。配置信息可包括模型名称和模型文件的获取路径,使得根据配置信息可唯一确定待分析的模型。另外,不同的模型可能还有一些特定的运行参数需要在运行前设置,比如模型的输入尺寸(输入模型的每个样本的尺寸)、模型权重等等,这部分参数可以由用户输入,表示用户希望在何种特定的参数下分析模型的性能。
配置信息还可包括批尺寸列表,批尺寸表示同一次进入模型的样本的数量。通常在生产环境中模型运行各种批尺寸是都有可能的,不同的批尺寸对应的矩阵运算维度不同,因此也是影响模型性能的一个关键参数。批尺寸列表可包括用户指定的多种数值(各数值之间可以是倍数关系,例如2倍、4倍等),表示用户希望在何种数值的批尺寸下分别分析模型的性能。
用户输入的批尺寸列表中的数值过大、超出图形处理器所支持的范围也是允许的,因为计算设备可以基于现有技术对这一问题进行识别从而进行处理,使得实际运行模型时的批尺寸可以是图形处理器硬件所支持的批尺寸。在此不再对如何识别批尺寸列表中的过大的数值并进行处理的具体实现方式进行介绍。
在运行模型时,会调用到图形处理器的软件栈中的框架,图形处理器可支持的深度学习框架主要有PyTorch,TensorFlow,PaddlePaddle等,而这几个框架的行为有比较大的差异,对于模型的运行产生不同的影响,因此框架可以由用户指定。对此,配置信息还可包括框架名称,用于标识所选用的框架。为了适应不同的应用场景需求,框架还具备多种分支,深度神经网络库也具备多种分支,配置信息还可包括框架分支的标识和深度神经网络库分支标识,以表示用户希望在指定的哪一框架分支、哪一深度神经网络库分支下运行模型。除使用已有的分支之外,也支持使用用户提交的新分支。
可以理解的是,配置信息可以包括以上的示例的更少或者更多的信息,只要根据配置信息可以确定待分析的模型及模型的运行参数即可,本公开对于配置信息所包括的具体内容不做限制。
本公开的性能分析方法在被计算设备执行时可看作存在5个阶段:一次克隆阶段、检查阶段、下载阶段、二次克隆阶段、分析阶段。步骤S22相当于一次克隆阶段,在步骤S22中,计算设备从云端平台拷贝代码仓库,代码仓库可以是用户事先编写好,并预先通过云端平台存储在任意存储设备中的文件,可以指示计算设备分析模型在图形处理器上运行的性能的方式以及预设的数据格式。方式和数据格式的示例可以参见下文对步骤S23的进一步描述。
代码仓库可以包括多段代码,每段代码对应计算设备分析模型在图形处理器上运行的性能的一个或多个步骤(参见步骤S23)。预设的数据格式可以是便于以图表的形式展示的数据格式,可以在其中的某个或者某几个步骤对应的代码中体现。
步骤S23相当于检查阶段、下载阶段、二次克隆阶段、分析阶段。在步骤S23中,根据代码仓库指示的方式,计算设备可以从云端平台下载运行模型所需的资源,并基于资源运行模型。计算设备还可设置有虚拟的容器(docker),计算设备可使用容器获取模型运行的性能原始数据并分析性能原始数据得到性能展示数据。
性能展示数据可以是符合代码仓库指示的预设的数据格式的数据,在此情况下,性能展示数据可以方便地采用图表形式进行展示。图形处理器支持多种框架,框架可自动地获取模型运行时的痕迹数据(示例参见下文对步骤S23的进一步描述),作为性能原始数据中的一种。模型一次运行时只能使用一种框架,而不同的框架自动获取的痕迹数据的格式也有差异。本公开提出图形处理器以支持的多种框架分别运行模型多次,每次以一种框架运行,在多次运行的过程中,获取到多种数据格式的痕迹数据。分析性能原始数据得到性能展示数据时,包括对多种数据格式的痕迹数据进行处理,得到符合预设的数据格式的痕迹数据,作为性能展示数据中的一种数据,实现数据格式的统一。
对于资源下载、运行模型、获取性能原始数据和分析得到性能展示数据的细节描述在后文中给出。由于容器具备隔离效果,可使得数据获取以及数据分析的操作不会与模型的运行相互影响。
在步骤S24中,计算设备可上传性能展示数据到云端平台,进一步地,可通过云端平台将性能展示数据、性能展示数据存储至任意存储设备,还可将性能展示数据的文件名和存储地址以表单形式存储在存储设备中的关系型数据库(下文也简称为数据库)中。用户设备可以通过云端平台访问存储设备的关系型数据库以获取表单,从表单中查询希望下载的性能展示数据的存储地址,再通过云端平台访问所述地址以下载性能展示数据。结合用户的查看需求,还使用可视化工具以图表的形式展示性能展示数据,以便用户查看并确定优化模型性能的方式。
用户的查看需求可以是针对同一模型在同一图形处理器上以不同运行参数运行时的性能对比,或者是针对同一模型在不同图形处理器上以相同运行参数运行时的性能对比等等。由于性能展示数据已经被结构化为预设的数据格式,因此可以方便地查找到对应的数据并展示。
在用户确定优化模型性能的方式之后,可以重新给出配置信息并通过云端平台输出至计算设备处。在此情况下,计算设备可重新执行步骤S21-步骤S24,直到用户根据性能展示数据确定模型的性能满足需求。
根据本公开实施例的性能分析方法,从云端平台接收配置信息,配置信息由用户设备上传,配置信息指示待分析的模型及模型的运行参数,可以确定用户的性能分析需求;从云端平台拷贝代码仓库文件,代码仓库文件指示计算设备分析模型在图形处理器上运行的性能的方式以及预设的数据格式,使得计算设备能够具备分析模型在图形处理器上运行的性能的能力;根据代码仓库文件指示的方式,从云端平台下载运行模型所需的资源,基于资源使用图形处理器运行模型,使用容器获取模型运行的性能原始数据并分析性能原始数据得到性能展示数据,使得性能展示数据可以是满足用户的性能分析需求的性能分析结果,性能展示数据符合预设的数据格式,因此实现了标准化、结构化的数据处理;通过上传性能展示数据到云端平台,性能展示数据由用户设备从云端平台下载并展示给用户,使得用户可以随时查看性能展示数据。针对图形处理器支持的多种框架,获取的性能原始数据包括图形处理器以多种框架分别运行模型时获取到的多种数据格式的痕迹数据,分析性能原始数据得到性能展示数据时,包括对多种数据格式的痕迹数据进行处理,得到符合预设的数据格式的痕迹数据,作为性能展示数据中的一种数据,使得用户可以查看性能展示数据时,可以同时查看图形处理器以多种框架运行模型时的性能分析结果,本公开的性能分析方法,只需用户提交配置信息即可实现一键式、自动化性能分析,并且性能分析结果是结构化、标准化的结果,同时,一次可展示图形处理器以多种框架运行模型时的性能分析结果,使基于性能分析结果确定性能优化方式更便捷。
在一种可能的实现方式中,在步骤S23中,从云端平台下载运行模型所需的资源之前,所述方法还包括:
检查容器和图形处理器是否具备满足条件的运行环境;
所述从所述云端平台下载运行所述模型所需的资源,包括:
在具备满足条件的运行环境时,从云端平台下载运行模型所需的资源,运行模型所需的资源包括运行,模型所需的模型文件、库文件、数据集文件中的一种或多种。
举例来说,模型的运行由图形处理器完成,性能原始数据以及性能展示数据的获取均由容器完成,因此在下载运行模型所需的资源前,可先行检查容器和图形处理器是否具备满足条件的运行环境(即上文所述的检查阶段),在具备满足条件的运行环境时,对运行环境进行初始化,再从云端平台下载运行模型所需的资源(即上文所述的下载阶段),以避免资源下载后因运行环境不满足而无法运行模型导致显存被占用的现象,以及避免运行了模型但无法正常获取性能原始数据以及性能展示数据,导致图形处理器产生不必要的功耗的现象。
运行模型所需的资源可包括运行模型所需的模型文件、库文件、数据集文件中的一种或多种。这里的模型文件可以包括模型的代码,库文件可以包括运行任意模型所必需的函数和不需用户定义的参数等,数据集文件可以包括输入模型的数据,例如模型是用于人脸识别的神经网络模型时,数据集可包括输入模型的样本图像。
可以理解的是,运行模型所需的资源还可以包括更多的数据,本公开对此不作限制。
通过这种方式,可以避免资源下载后因运行环境不满足而无法运行模型导致显存被占用的现象,以及避免运行了模型但无法正常获取性能原始数据以及性能展示数据,导致图形处理器产生不必要的功耗的现象,提高性能分析效率的同时,减少数据处理和数据搬移成本。
在一种可能的实现方式中,图形处理器是基准图形处理器时,满足条件的运行环境包括:
图形处理器上设置有基准图形处理器的软件栈,或者,
图形处理器上设置有目标图形处理器的软件栈的运行镜像,在运行镜像中安装有软件包管理程序、代码仓库使用的编程语言的运行依赖数据包、目标图形处理器的显卡驱动程序、目标图形处理器的算子库,算子库的运行环境的环境变量设置为目标图形处理器的运行环境的环境变量,
其中,目标图形处理器是用户预设好的待优化的图形处理器,基准处理器的理论性能高于目标图形处理器。
举例来说,在一些应用场景中,用户选择一种型号的图形处理器(即目标图形处理器)作为优化对象时,可能还选择了另一种性能更高的图形处理器(即基准图形处理器)作为优化基准。此时可认为用户希望对目标图形处理器的软件栈进行优化,使模型在目标图形处理器上运行的性能更加接近在基准图形处理器上运行的性能。对此,用户可能希望观察到基准图形处理器运行模型时的性能,以为确定优化方式提供基础。
图形处理器的生产厂家通常还会提供与图形处理器型号相适配的软件栈,因此每种图形处理器上设置有自身型号相适配的软件栈即可使得图形处理器具备满足条件的运行环境。也即,在图形处理器是基准图形处理器时,其上设置有基准图形处理器的软件栈时具备满足条件的运行环境。该运行环境允许基准图形处理器运行自身相适配的软件栈。
除了运行本身适配的软件栈,本公开还可使得某一型号的图形处理器运行其他图形处理器相适配的软件栈。例如,还可以在基准图形处理器上构建如下的运行环境:在图形处理器(基准图形处理器)上设置目标图形处理器的软件栈的运行镜像,在运行镜像中安装软件包管理程序(apt)、代码仓库使用的编程语言(如python)的运行依赖数据包、目标图形处理器的显卡驱动程序、目标图形处理器的算子库(如上文所述的深度神经网络库,也可以是目标图形处理器支持的其他算子库),算子库的运行环境的环境变量设置为目标图形处理器的运行环境的环境变量。该运行环境也是满足条件的运行环境,并允许基准图形处理器运行目标图形处理器相适配的软件栈。在此条件下继续执行步骤S23中的其余步骤,获取的性能原始数据和性能展示数据可以表征基准图形处理器以目标图形处理器的软件栈运行所述模型时的性能。
通过这种方式,可实现不同图形处理器以同一种软件栈运行相同模型时的数据对比。使得性能展示数据更具针对性。
在一种可能的实现方式中,在步骤S23中,基于资源使用图形处理器运行模型之前,所述方法还包括:
从云端平台拷贝与模型相关的深度神经网络库和至少一种框架;
编译深度神经网络库,从至少一种框架中选择一种框架并安装选择出的框架;
基于资源使用图形处理器运行模型,包括:
深度神经网络库编译好且选择出的框架安装好后,基于资源使用图形处理器运行模型。
举例来说,模型的运行需要调用框架以及深度神经网络库,深度神经网络库可以包括运行神经网络模型额外需要的函数和参数等。框架可以是如上文所述的PyTorch,TensorFlow,PaddlePaddle等深度学习框架。
因此,基于资源使用图形处理器运行模型之前,可以从云端平台拷贝与模型相关的深度神经网络库和至少一种框架(即上文所述的二次克隆阶段)。拷贝的至少一种框架可以是图形处理器支持的框架。然后编译深度神经网络库,从至少一种框架中选择一种框架并安装选择出的框架。在深度神经网络库编译好且选择出的框架安装好后,再基于资源运行模型(即上文所述的分析阶段)。此时图形处理器是使用选择出的框架运行模型。
通过这种方式,可以在资源已经成功下载的情况下,使得模型能够正常运行一次。
在一种可能的实现方式中,图形处理器的软件栈包括计算层、框架层和模型层,性能原始数据包括与模型层对应的模型端到端性能数据、与框架层对应的痕迹数据、与计算层对应的核函数数据,框架层支持多种框架,
模型的运行阶段包括预处理阶段、内存到显存的数据拷贝阶段、推理阶段、显存到内存的数据拷贝阶段、后处理阶段,模型端到端性能数据包括模型各运行阶段的耗时和模型各运行阶段的吞吐量;
模型包括多个算子,痕迹数据包括每一算子的算子执行耗时;
算子在运行时调用深度神经网络库中的核函数,核函数数据包括核函数的吞吐量和核函数的带宽。
举例来说,图形处理器软件栈可包括驱动层、计算层、框架层、模型层、应用层等多个层次。本公开实施例的性能分析方法主要针对计算层、框架层、模型层,在本公开实施例中,性能原始数据可包括与模型层对应的模型端到端性能数据、与框架层对应的痕迹(trace)数据、与计算层对应的核函数(kernel)数据。
模型运行主要包括预处理阶段、内存到显存的数据传输(host to device,H2D)阶段,推理阶段,显存到内存的数据传输(device to host,D2H)阶段,后处理阶段。运行代码中会严格区分不同阶段的运行耗时,通过运行代码即可获取到模型各运行阶段的耗时。模型端到端性能数据可包括模型各运行阶段的耗时。获取到模型各运行阶段的耗时之后,结合批尺寸还可以获得模型各运行阶段的吞吐量(单位:样本/秒),对于每一阶段,其吞吐量可以是其耗时与批尺寸的比值。
可以理解的是,模型端到端性能数据还可包括更多的信息,例如上述各个阶段的运行耗时的总和作为模型整体的耗时,以及模型整体的耗时与批尺寸的比值作为模型整体的吞吐量,本公开对于模型端到端性能数据所包括的具体信息不作限制。
模型可包括多个算子,算子之间以一定的方式组合,由框架层驱动运行,通过获取算子的运行耗时及其他信息,我们就可以从算子层面进行分析。深度学习框架(如TensorFlow,PyTorch)一般都会提供分析器(呈现为profiler接口),用于分析模型算子性能,触发分析器启动后(例如可以是通过增加相应的分析代码),运行模型时可自动生成包括痕迹数据的文件。痕迹数据可包括每一算子的算子执行耗时。框架层支持多种框架,多种框架获取到的痕迹数据的数据格式可能不同。
算子一般都会调用更加底层的深度神经网络库所包括的核函数,这些核函数与图形处理器硬件架构和上层算子的输入尺寸适配,所以是主要的分析对象。对此,可以获取核函数的运行信息,包括核函数的运行耗时、计算量、访存大小等,根据这些运行信息获取核函数数据(包括核函数的吞吐量和带宽)。其中核函数的计算量与核函数的运行耗时的比值用于得到核函数的吞吐量,核函数的访存大小与核函数的运行耗时的比值用于得到核函数的带宽,从而获取到模型在图形处理器上运行时对应的核函数数据。
可以理解的是,核函数数据还可包括更多的信息,例如上述核函数的运行耗时、核函数的运行耗时占比等等,本公开对于核函数数据所包括的具体信息不作限制。
通过获取多种维度的数据,使得性能原始数据的准确度更高,性能展示数据更全面。
在一种可能的实现方式中,运行参数包括多种批尺寸,使用容器获取模型运行的性能原始数据并分析性能原始数据得到性能展示数据,包括:
在核函数并行运行的情况下,针对模型的每一批尺寸,分别获取至少一次模型端到端性能数据;
重新编译深度神经网络库,并在核函数串行运行的情况下,基于模型各运行阶段的吞吐量最高时对应的批尺寸,获取选择出的框架对应的痕迹数据和核函数数据;
所述方法还包括:
重新执行编译深度神经网络库到使用容器获取所述模型运行的性能原始数据之间的步骤,直到至少一种框架中的每种框架均被选择过。
举例来说,模型端到端性能数据的获取不涉及算子层级,因此为节省时间,从上文所述的编译深度神经网络库文件、安装框架文件的步骤开始,到获取一次模型端到端性能数据的步骤为止,均可以在核函数并行运行模式下进行。且模型端到端性能数据可以是针对模型的每一批尺寸(即上文所述的批尺寸列表中的每一批尺寸)分别获取。在正式获取模型端到端性能数据之前还可基于现有技术进行模型预热,保证图形处理器运行在最佳状态。对于任意批尺寸,可以获取一次以节省时间,或者获取多次模型端到端性能数据取平均值以保证模型端到端性能数据的准确度,本公开对针对每一批尺寸对应获取模型端到端性能数据的次数不作限制。
对于涉及到算子层级的痕迹数据和核函数数据的获取,可以重新编译深度神经网络库后,在核函数串行运行模式下进行。这样可以保证获取到的算子执行耗时、核函数的吞吐量、核函数的带宽都是准确的。示例性地,可以基于模型各运行阶段的吞吐量最高时对应的批尺寸,获取痕迹数据和核函数数据。原因在于模型各运行阶段的吞吐量最高时对应的批尺寸在优化后的性能也会更具优势。可以理解的是,也可以进一步基于其他非最高的吞吐量对应的批尺寸获取更多的痕迹数据和核函数数据,本公开实施例对此不作限制。
在图形处理器以当前选择出的框架完成一次模型的运行后,还可以重新执行编译深度神经网络库到使用容器获取模型运行的性能原始数据之间的步骤,直到至少一种框架中的每种框架均被选择过。此时,性能原始数据可包括图形处理器以每种框架运行模型时获取到的模型端到端性能数据、痕迹数据、核函数数据。
在基准图形处理器以目标图形处理器适配的软件栈运行模型时,性能原始数据和性能展示数据可指示基准图形处理器以目标图形处理器适配的软件栈运行模型的性能。
通过这种方式,可以使用更少的数据处理成本、更少的时间成本完成模型一次运行过程中的模型端到端性能数据、痕迹数据、核函数数据的获取,且通过选择不同的框架,使得性能原始数据更全面。
在一种可能的实现方式中,性能原始数据还包括系统层面数据,系统层面数据包括计算设备的硬件性能数据、固件性能数据、内核调用数据、进程数据,配置信息还指示容器的环境变量、待进行数据获取的模型程序段、获取系统层面数据的方式,
使用容器获取模型运行的性能原始数据并分析性能原始数据得到性能展示数据,包括:
根据配置信息定义容器的环境变量;
模型以运行参数运行待进行数据获取的模型程序段时,采用获取系统层面数据的方式,获取硬件性能数据、固件性能数据、内核调用数据、进程数据。
举例来说,本公开实施例可获取的性能原始数据可包括系统层面数据,如计算设备的硬件性能数据、固件性能数据、内核调用数据、进程数据等。其中,硬件性能数据可与图形处理器的硬件有关,例如包括显存、负载、性能计数(例如访存次数)等。固件性能数据可与模型驱动程序有关,例如包括中断请求事件等。内核调用数据可与核函数调用有关,例如包括栅栏(fence)相关数据等。进程数据可与数据获取进程有关,例如包括核函数事件、驱动事件等。
模型可包括多个模型程序段。配置信息还可指示容器的环境变量、待进行数据获取的模型程序段、获取系统层面数据的方式。基于配置信息,使用预先安装在容器中的命令行工具可获取系统层面数据。该工具可使用命令行获取系统层面数据,输入该工具的可以是具备数据获取功能的对应程序、根据用户提供的配置信息定义的环境变量(例如是容器使用的算子库的地址)、系统层面数据的数据格式(例如文本格式)和系统层面数据的输出路径(例如计算设备到云端平台再到某个存储设备)。
系统层面数据可以在痕迹数据和核函数数据获取完成之后再获取。系统层面数据主要获取流程如下:
第一步,在工具已安装的前提下,可先根据配置信息定义容器的环境变量。第二步,根据配置信息设置获取系统层面数据的方式。第三步,根据配置信息设置待进行数据获取的模型程序段,以及根据配置信息中的运行参数设置该模型程序段的运行参数。第四步,设置获取到的系统层面数据的数据格式,例如设置为文本格式(json)。第五步,执行具备数据获取功能的对应程序,采用设置好的获取系统层面数据的方式,获取系统层面数据。此时获取到的系统层面数据的数据格式即为文本格式。第六步,根据系统层面数据的输出路径完成系统层面数据的存储。
进一步地,在第一步中,在工具的版本有更新时,还可以重新安装最新版本的工具,然后再根据配置信息定义容器的环境变量。第五步中,在执行具备数据获取功能的对应程序之前,还可以设置重复获取系统层面数据的次数,重复获取系统层面数据可以保证获取到的数据的稳定性。
通过这种方式,可以获得更多种类的性能原始数据。
在一种可能的实现方式中,预设的数据格式包括网页文件格式,使用所容器获取模型运行的性能原始数据并分析性能原始数据得到性能展示数据,包括:
分析性能原始数据,得到模型的运行环境数据和模型的属性数据;
调整模型端到端性能数据、核函数数据、系统层面数据、运行环境数据以及属性数据的数据格式,使其符合预设的网页文件格式。
举例来说,图形处理器运行模型会得到相应的运行结果,例如如果模型是人脸识别模型时,运行结果可能是输入模型的样本为某个人的人脸图像的概率等等。根据该运行结果的合理性,计算设备可以确定核函数的串行运行是否正常并且是否已经结束。同时还可检查是否已经获取了性能分析所需要的性能原始数据。在已经获取到性能原始数据时,根据预设的数据格式对性能原始数据进行分析得到性能展示数据。
对性能原始数据进行分析包括两种情况:一种是直接调整性能原始数据的数据格式为预设的数据格式,另一种是根据性能原始数据分析得到新的数据,调整新的数据的数据格式为预设的数据格式。其中,可采用前一种方式的性能原始数据有模型端到端性能数据、核函数数据、系统层面数据以及痕迹数据。其中,痕迹数据由于是多种框架获取,因此包括多种数据格式,在下文中对痕迹数据的数据格式调整方式进行更细节的描述。
采用后一种方式得到的新的数据可以包括模型的运行环境数据和模型的属性数据。属性数据是性能分析的基本信息,主要包括自增主键,时间戳,模型名称,框架名称,图形处理器名称等。模型的运行环境数据主要包括图形处理器的详细信息(图形处理器数量、带宽、频率等),系统的详细信息(如系统名称、处理器、核、处理器频率),驱动的版本,框架的版本,深度神经网络库的版本等。
预设的数据格式可以与用户设备上具备可视化功能的工具支持的格式相关联,例如可设置为网页文件格式(如html)。网页文件格式的优点在于获取一份文件即可完成数据展示,大大提高了数据展示效率。
下面介绍本公开对痕迹数据的数据格式的调整方式。
在一种可能的实现方式中,预设的数据格式包括网页文件格式,所述方法还包括:
通过云端平台将多种数据格式的痕迹数据存储至云端平台关联的至少一个存储设备;
根据多种数据格式的痕迹数据及其存储地址得到痕迹数据存储目录;
对多种数据格式的痕迹数据进行处理,得到符合预设的数据格式的痕迹数据,包括:
根据痕迹数据存储目录中的地址,通过云端平台获取地址处存储的多种数据格式的痕迹数据;
调整多种数据格式的痕迹数据的数据格式,使多种数据格式的痕迹数据的数据格式统一;
根据每种数据格式的痕迹数据对应的框架、模型、批尺寸,对数据格式统一的痕迹数据进行命名并保存为文本格式;
将文本格式的痕迹数据转换为网页文件格式的痕迹数据。
举例来说,痕迹数据是深度学习框架进行算子行为分析的重要数据,包括每一算子的算子执行耗时,还可包括算子调用链(即算子的调用关系)、算子输入输出维度等,是优化图形处理器软件栈的重要参考数据。在获取到痕迹数据后,可通过云端平台将多种数据格式的痕迹数据存储至云端平台关联的至少一个存储设备(可以压缩后存储,也可以直接存储),并根据多种数据格式的痕迹数据及其存储地址得到痕迹数据存储目录。在此情况下,通过在痕迹数据存储目录中查找对应数据格式的痕迹数据的存储地址,即可从该存储地址处获取痕迹数据。
本公开提出了痕迹数据采集后端,该痕迹数据采集后端可由容器运行,并完成“对多种数据格式的痕迹数据进行处理,得到符合预设的数据格式的痕迹数据”的功能。示例性地,首先,痕迹数据采集后端通过云端平台获取痕迹数据存储目录,检索痕迹数据存储目录查看是否有框架保存的痕迹数据。在有痕迹数据存储时,根据痕迹数据存储目录中的地址,通过云端平台获取地址处存储的多种数据格式的痕迹数据。然后再判断获取到的痕迹数据是否是压缩状态,如果是,则进行解压缩并重新命名。其次,对各种格式的痕迹数据分别进行读取与解析,进行数据结构化,使得不同框架的痕迹数据保持数据格式上的统一;然后根据每种数据格式的痕迹数据对应的框架、模型、批尺寸等参数对数据格式统一的痕迹数据进行命名并保存为文本格式。最后,将文本格式的痕迹数据转换为网页文件格式的痕迹数据,转换可采用现有技术的格式转换工具。进一步地,还可通过云端平台将网页文件格式的痕迹数据的文件名存储至至少一个存储设备(的数据库)中,文件名可以用于展示以存储的网页文件的类型、内容等信息。
通过这种方式,可以实现不同数据格式的痕迹数据的格式统一,使得同时展示多种框架运行模型的性能成为可能。并且最终使得痕迹数据的数据格式为易展示的网页文件格式,方便用户查看。
在一种可能的实现方式中,所述方法还包括:
上传性能原始数据到云端平台;
从云端平台接收来自用户设备的历史数据分析指示时,从云端平台处下载性能原始数据,重新执行分析性能原始数据得到性能展示数据及之后的步骤。
举例来说,性能原始数据可以上传至云端平台,以方便用户使用。例如,用户可能希望对某次运行模型时获取得到的性能原始数据重新进行分析,此时用户设备可以输出历史数据分析指示到云端平台。云端平台接收到历史数据分析指示后,可以转发至计算设备处。计算设备从云端平台接收来自用户设备的历史数据分析指示时,可以从云端平台处下载性能原始数据,重新执行分析性能原始数据得到性能展示数据及之后的步骤。析的性能原始数据可以是下载的原始数据以及新获取的性能原始数据。
通过这种方式,使得性能原始数据的利用率更高。
在一种可能的实现方式中,本公开还提出一种性能分析系统,所述系统包括用户设备、至少一个计算设备和至少一个存储设备,所述用户设备和所述至少一个计算设备通过云端平台交互,所述至少一个计算设备和所述至少一个存储设备通过所述云端平台交互,所述计算设备上设置有实体的图形处理器和虚拟的容器,
所述用户设备用于上传配置信息到所述云端平台,所述配置信息指示待分析的模型及所述模型的运行参数;
所述至少一个存储设备用于上传代码仓库以及运行所述模型所需的资源到所述云端平台,所述代码仓库指示所述计算设备分析所述模型在所述图形处理器上运行的性能的方式以及预设的数据格式;
所述计算设备用于从所述云端平台接收来自所述用户设备的配置信息并从所述云端平台拷贝所述代码仓库,根据所述代码仓库指示的方式,从所述云端平台下载运行所述模型所需的资源,基于所述资源使用所述图形处理器运行所述模型,使用所述容器获取所述模型运行的性能原始数据并分析所述性能原始数据得到性能展示数据,上传所述性能展示数据到所述云端平台,所述性能展示数据符合所述预设的数据格式;
所述用户设备还用于从所述云端平台下载所述性能展示数据并展示给用户。
图3示出根据本公开实施例的性能分析系统的示例性结构图。
如图3所示,云端平台上可设置有存储资源管理模块、计算资源管理模块、数据库管理模块。存储资源管理模块用于管理至少一个存储设备(图3中以1个为例)上存储的运行模型所需的资源,包括获取存储设备处存储的代码仓库、运行模型所需的资源等,以及将性能原始数据、性能展示数据存储至存储设备处。数据库管理模块用于管理至少一个存储设备上的数据库,包括获取数据库中存储的文件名和地址并输出给用户设备,将符合预设的数据格式的各种性能展示数据的文件名和地址存储至数据库。计算资源管理模块用于管理至少一个计算设备(图3中以1个为例)上的图形处理器和容器,包括将配置信息、代码仓库、运行模型所需的资源等输出至计算设备,以及获取计算设备得到的性能原始数据和性能展示数据。
计算设备上,图形处理器可用于运行模型,容器可用获取模型运行的性能原始数据并分析性能原始数据得到性能展示数据,输出性能原始数据和性能展示数据到云端平台。
用户设备上可设置有配置模块、分析流程启动模块和可视化模块。配置模块用于接收用户输入的配置信息,用户提交配置信息后分析流程启动模块自动启动,并上传配置信息以及选择的计算设备的标签至云端平台,使得云端平台的计算资源管理模块可以将配置信息下发至选择的计算设备以触发计算设备执行性能分析方法。可视化模块用于使用不同的图表表现形式从不同维度对模型展示数据进行展示。该模块可使用现有的可视化工具,然后通过结构化查询语言(structured query language,SQL)等编程语言的语句筛选、组织希望展示的数据。
以上所述的存储资源管理模块、计算资源管理模块、数据库管理模块、配置模块、分析流程启动模块和可视化模块均是逻辑上的软件模块,并非硬件模块。可以理解的是,上述模块的划分只是一个示例,本公开的性能分析系统还可以具备其他的模块划分方式,本公开对此不作限制。
在展示性能展示数据之前,用户可选择与希望查看的性能相关的关键词并提交,可选择的有:模型名称,框架名称,图形处理器型号等。例如,选择模型名称resnet50,框架名称PyTorch,图形处理器型号A和B,则展示的性能展示数据可以是图形处理器A和图形处理器B安装了框架PyTorch后,运行模型resnet50时的性能对比。
可以理解的是,还可选择更多的图形处理器型号,或者只选择一个图形处理器型号,本公开对此不作限制。
性能对比方式也可以有多种。图4-图11示出本公开实施例的性能展示数据在可视化模块中展示为图表的示例。
如图4所示,该图表展示了对图形处理器1的软件栈进行优化前、以及对图形处理器1的软件栈进行优化后,图形处理器1运行模型时,在不同的批尺寸下,推理阶段(不包含前后处理及数据拷贝阶段)的吞吐量的变化。并同时示出了性能较好的图形处理器2运行模型时,在不同的批尺寸下,推理阶段(不包含前后处理及数据拷贝阶段)的吞吐量的变化。可以看出优化后图形处理器1的模型性能得到提升。
如图5所示,该图表展示了和优化前相比,优化的后图形处理器1运行模型时,在不同的批尺寸下,在推理阶段(不包含前后处理及数据拷贝阶段)的吞吐量的提升幅度。可以看出批尺寸为1时提升幅度最大。
如图6所示,该图表展示了对图形处理器1的软件栈进行优化前,图形处理器1运行模型时各算子的算子执行耗时占比。可以看出,算子a的算子执行耗时占比较高,达到78%。算子b的算子执行耗时为9%。
如图7所示,该图表展示了图形处理器2运行模型时各算子的算子执行耗时占比。可以看出,算子a的算子执行耗时占比较高,达到60%。算子b的算子执行耗时为16%。
如图8所示,该图表展示了对图形处理器1的软件栈进行优化后,图形处理器1运行模型时各算子的算子执行耗时占比。可以看出,相比优化前,卷积类型算子的算子执行耗时占比降低至73%。算子b的算子执行耗时为11%。
如图9所示,该图表分为两部分,一部分展示了图形处理器1运行模型时各算子的算子执行耗时和算子调用链,另一部分展示了图形处理器2运行模型时各算子的算子执行耗时和算子调用链。根据该图表可进行细粒度的算子调用分析,查看算子调用行为是否正常,查看算子调用是否存在优化空间等,为框架侧算子调用优化提供指导数据。
如图10所示,该图表左侧展示了图形处理器1运行模型时,对于系统层面上,使用的硬件、固件的名称,右侧展示了使用该硬件、固件的时机以及耗时(通过右侧长方形的宽度体现)。该图表可对于图形处理器架构优化、固件优化等提供良好的调优指导数据。
如图11所示,该图表展示了图形处理器1使用自身适配的软件栈运行模型,与图形处理器2适配的软件栈运行模型时,核函数的执行耗时的对比。该图表可为图形处理器架构的优化提供指导数据。
除以上示例外,可视化模块还可以根据性能展示数据展示更多的图表,例如还可以展示核函数吞吐量对比、核函数计算效率对比、显卡利用率对比、算子调用次数对比、数据拷贝次数对比等等。本公开对于图表具体展示的信息不作限制。
以上给出的各种图表的示例可以单独展示给用户,也可以相关联的多个图表一起展示给用户,例如图4和图5均与推理阶段的吞吐量有关,因此可以一起展示。用户还可定制个性化性能展示方式,自定义关注的性能展示数据类型,展示为包括其关注的性能展示数据类型的图表的组合/拆分。本公开对于允许同时展示的图表数量不作限制。
由于模型是由图形处理器运行,因此优化模型性能可以从优化图形处理器的软件栈的性能出发。也即,展示性能展示数据时,可以进一步考虑消除不同的图形处理器的硬件差距对性能展示数据的影响,再展示性能展示数据。在此情况下,展示给用户的性能展示数据可以指示图形处理器的软件栈差异导致的模型性能差异。在此情况下,用户确定的优化模型性能的方式,实际上是优化图形处理器的软件栈,进而使得图形处理器运行的模型性能也优化的方式。
在一种可能的实现方式中,用户确定的优化模型性能的方式可包括以下至少一种:
在框架层中增加显存池,针对模型包括的占用显存大小固定的算子,分配固定的显存地址;
根据算子执行耗时大于第一阈值的至少一个算子的输入尺寸,调整该至少一个算子调用的核函数的参数;
对模型包括的卷积类型算子、元素逻辑运算类型算子、激活函数类型算子进行融合;
将调用次数大于第二阈值或数据拷贝次数大于第三阈值的至少一个算子的核函数增加至计算层的深度神经网络库。
举例来说,假设用户想要优化模型在图形处理器1上运行的性能,并且性能展示数据展示了模型在图形处理器1和图形处理器2上运行的性能,且模型在图形处理器2上运行的性能较好。
如果用户通过可视化模块展示的性能展示数据,发现模型运行期间有大量空泡,显卡利用率数值较低,并分析出是频繁的显存分配导致的。对此,用户确定的优化模型性能的方式可以是在框架层中增加显存池,针对模型包括的占用显存大小固定的算子,分配固定的显存地址(方式一),实现对固定大小的显存重复利用,避免频繁的分配及初始化。
如果用户通过可视化模块展示的性能展示数据,发现模型在图形处理器1和图形处理器2上分别运行时,图形处理器1上部分算子的算子执行耗时占比相比图形处理器2高出很多。对此,用户确定的优化模型性能的方式可以是根据算子执行耗时大于第一阈值的至少一个算子的输入尺寸,调整该至少一个算子调用的核函数的参数(方式二)。调整的参数可以是输入尺寸。第一阈值可以根据需求进行设置,例如可设置为30%,本公开对此不作限制。
卷积类型算子、元素逻辑运算类型算子、激活函数类型算子可以被融合,如果用户通过可视化模块展示的性能展示数据,发现模型包括上述可融合的算子,用户确定的优化模型性能的方式还可以进一步包括对模型包括的卷积类型算子、元素逻辑运算类型算子、激活函数类型算子进行融合(方式三)。这样既可以减少核函数的启动消耗,也避免了带宽带来的性能瓶颈。
如果用户通过可视化模块展示的性能展示数据,发现模型在图形处理器1上运行时某算子的调用次数过大,与模型在图形处理器2上运行时该算子的调用次数(例如等于第二阈值)不匹配,可认为该算子未适配图形处理器1的软件栈。如果算子未适配图形处理器1的软件栈,则算子实际上是图形处理器1所属的计算设备的中央处理器执行,因此会导致图形处理器1与中央处理器之间存在大量的、与该算子的执行相关的数据拷贝。对此,用户确定的优化模型性能的方式可以是将调用次数大于第二阈值或数据拷贝次数大于第三阈值的至少一个算子的核函数增加至计算层的深度神经网络库(方式四),以使得算子适配图形处理器1的软件栈。第二阈值和第三阈值可以根据需求进行设置,本公开对此不作限制。
通过设置多种优化方式,可以提高优化的灵活性与针对性。
本公开提供了一种性能分析装置,图12示出根据本公开实施例的性能分析装置的示例性结构图。
如图12所示,所述装置应用于计算设备,所述计算设备上设置有实体的图形处理器和虚拟的容器,所述装置包括:
第一接收模块121,用于从云端平台接收配置信息,所述配置信息由用户设备上传,所述配置信息指示待分析的模型及所述模型的运行参数;
第一拷贝模块122,用于从所述云端平台拷贝代码仓库,所述代码仓库指示所述计算设备分析所述模型在所述图形处理器上运行的性能的方式以及预设的数据格式;
分析模块123,用于根据所述代码仓库指示的方式,从所述云端平台下载运行所述模型所需的资源,基于所述资源使用所述图形处理器运行所述模型,使用所述容器获取所述模型运行的性能原始数据并分析所述性能原始数据得到性能展示数据,所述性能展示数据符合所述预设的数据格式;
第一上传模块124,用于上传所述性能展示数据到所述云端平台,所述性能展示数据由所述用户设备从所述云端平台下载并展示给用户;
其中,所述图形处理器支持多种框架,所述性能原始数据包括所述图形处理器以所述多种框架分别运行所述模型时获取到的多种数据格式的痕迹数据,分析所述性能原始数据得到性能展示数据时,包括对所述多种数据格式的痕迹数据进行处理,得到符合所述预设的数据格式的痕迹数据,作为性能展示数据中的一种数据。
在一种可能的实现方式中,所述装置还包括:
第二拷贝模块,用于从所述云端平台拷贝与所述模型相关的深度神经网络库和至少一种框架;
编译安装模块,用于编译所述深度神经网络库,从所述至少一种框架中选择一种框架并安装选择出的框架;
所述基于所述资源使用所述图形处理器运行所述模型,包括:
所述深度神经网络库编译好且所述选择出的框架安装好后,基于所述资源使用所述图形处理器运行所述模型。
在一种可能的实现方式中,所述图形处理器的软件栈包括计算层、框架层和模型层,所述性能原始数据包括与所述模型层对应的模型端到端性能数据、与所述框架层对应的所述痕迹数据、与所述计算层对应的核函数数据,所述框架层支持所述多种框架,
所述模型的运行阶段包括预处理阶段、内存到显存的数据拷贝阶段、推理阶段、显存到内存的数据拷贝阶段、后处理阶段,所述模型端到端性能数据包括所述模型各运行阶段的耗时和所述模型各运行阶段的吞吐量;
所述模型包括多个算子,所述痕迹数据包括每一算子的算子执行耗时;
所述算子在运行时调用所述深度神经网络库中的核函数,所述核函数数据包括所述核函数的吞吐量和所述核函数的带宽。
在一种可能的实现方式中,所述运行参数包括多种批尺寸,所述使用所述容器获取所述模型运行的性能原始数据并分析所述性能原始数据得到性能展示数据,包括:
在所述核函数并行运行的情况下,针对所述模型的每一批尺寸,分别获取至少一次所述模型端到端性能数据;
重新编译所述深度神经网络库,并在所述核函数串行运行的情况下,基于所述模型各运行阶段的吞吐量最高时对应的批尺寸,获取所述选择出的框架对应的痕迹数据和所述核函数数据;
所述装置还包括:驱动模块,用于驱动所述分析模块重新执行编译所述深度神经网络库到使用所述容器获取所述模型运行的性能原始数据之间的步骤,直到所述至少一种框架中的每种框架均被选择过。
在一种可能的实现方式中,所述性能原始数据还包括系统层面数据,所述系统层面数据包括所述计算设备的硬件性能数据、固件性能数据、内核调用数据、进程数据,所述配置信息还指示所述容器的环境变量、待进行数据获取的模型程序段、获取所述系统层面数据的方式,
所述使用所述容器获取所述模型运行的性能原始数据并分析所述性能原始数据得到性能展示数据,包括:
根据所述配置信息定义所述容器的环境变量;
所述模型以所述运行参数运行所述待进行数据获取的模型程序段时,采用所述获取系统层面数据的方式,获取所述硬件性能数据、所述固件性能数据、所述内核调用数据、所述进程数据。
在一种可能的实现方式中,所述预设的数据格式包括网页文件格式,使用所述容器获取所述模型运行的性能原始数据并分析所述性能原始数据得到性能展示数据,包括:
分析所述性能原始数据,得到所述模型的运行环境数据和所述模型的属性数据;
调整所述模型端到端性能数据、所述核函数数据、所述系统层面数据、所述运行环境数据以及所述属性数据的数据格式,使其符合预设的网页文件格式。
在一种可能的实现方式中,所述预设的数据格式包括网页文件格式,所述装置还包括:
存储模块,用于通过所述云端平台将所述多种数据格式的痕迹数据存储至所述云端平台关联的至少一个存储设备;
第一确定模块,用于根据所述多种数据格式的痕迹数据及其存储地址得到痕迹数据存储目录;
对所述多种数据格式的痕迹数据进行处理,得到符合所述预设的数据格式的痕迹数据,包括:
根据所述痕迹数据存储目录中的地址,通过所述云端平台获取所述地址处存储的多种数据格式的痕迹数据;
调整所述多种数据格式的痕迹数据的数据格式,使所述多种数据格式的痕迹数据的数据格式统一;
根据每种数据格式的痕迹数据对应的框架、所述模型、所述批尺寸,对数据格式统一的痕迹数据进行命名并保存为文本格式;
将文本格式的痕迹数据转换为网页文件格式的痕迹数据。
在一种可能的实现方式中,所述装置还包括:
检查模块,用于检查所述容器和所述图形处理器是否具备满足条件的运行环境;
所述从所述云端平台下载运行所述模型所需的资源,包括:
在具备满足条件的运行环境时,从所述云端平台下载运行所述模型所需的资源,所述运行所述模型所需的资源包括运行所述模型所需的模型文件、库文件、数据集文件中的一种或多种。
在一种可能的实现方式中,所述图形处理器是基准图形处理器时,所述满足条件的运行环境包括:
所述图形处理器上设置有基准图形处理器的软件栈,或者,
所述图形处理器上设置有目标图形处理器的软件栈的运行镜像,在所述运行镜像中安装有软件包管理程序、所述代码仓库使用的编程语言的运行依赖数据包、目标图形处理器的显卡驱动程序、目标图形处理器的算子库,所述算子库的运行环境的环境变量设置为目标图形处理器的运行环境的环境变量,
其中,所述目标图形处理器是用户预设好的待优化的图形处理器,所述基准处理器的理论性能高于所述目标图形处理器。
在一种可能的实现方式中,所述装置还包括:
第二上传模块,用于上传所述性能原始数据到所述云端平台;
第二接收模块,用于从所述云端平台接收来自用户设备的历史数据分析指示时,从所述云端平台处下载所述性能原始数据,驱动所述分析模块重新执行分析所述性能原始数据得到性能展示数据及之后的步骤。
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
本公开实施例还提出一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。计算机可读存储介质可以是易失性或非易失性计算机可读存储介质。
本公开实施例还提出一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为在执行所述存储器存储的指令时,实现上述方法。
本公开实施例还提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述方法。
图13示出根据本公开实施例的装置1900的框图。例如,装置1900可以是上文所述的计算设备。参照图13,装置1900包括处理组件1922,其进一步包括一个或多个处理器,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以执行上述方法。
装置1900还可以包括一个电源组件1926被配置为执行装置1900的电源管理,一个有线或无线网络接口1950被配置为将装置1900连接到网络,和一个输入输出接口1958(I/O接口)。装置1900可以操作基于存储在存储器1932的操作系统,例如Windows ServerTM,MacOS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器1932,上述计算机程序指令可由装置1900的处理组件1922执行以完成上述方法。
本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (14)

1.一种性能分析方法,其特征在于,所述方法应用于计算设备,所述计算设备上设置有实体的图形处理器和虚拟的容器,所述方法包括:
从云端平台接收配置信息,所述配置信息由用户设备上传,所述配置信息指示待分析的模型及所述模型的运行参数;
从所述云端平台拷贝代码仓库,所述代码仓库指示所述计算设备分析所述模型在所述图形处理器上运行的性能的方式以及预设的数据格式;
根据所述代码仓库指示的方式,从所述云端平台下载运行所述模型所需的资源,基于所述资源使用所述图形处理器运行所述模型,使用所述容器获取所述模型运行的性能原始数据并分析所述性能原始数据得到性能展示数据,所述性能展示数据符合所述预设的数据格式;
上传所述性能展示数据到所述云端平台,所述性能展示数据由所述用户设备从所述云端平台下载并展示给用户;
其中,所述图形处理器支持多种框架,所述性能原始数据包括所述图形处理器以所述多种框架分别运行所述模型时获取到的多种数据格式的痕迹数据,分析所述性能原始数据得到性能展示数据时,包括对所述多种数据格式的痕迹数据进行处理,得到符合所述预设的数据格式的痕迹数据,作为性能展示数据中的一种数据。
2.根据权利要求1所述的方法,其特征在于,基于所述资源使用所述图形处理器运行所述模型之前,所述方法还包括:
从所述云端平台拷贝与所述模型相关的深度神经网络库和至少一种框架;
编译所述深度神经网络库,从所述至少一种框架中选择一种框架并安装选择出的框架;
所述基于所述资源使用所述图形处理器运行所述模型,包括:
所述深度神经网络库编译好且所述选择出的框架安装好后,基于所述资源使用所述图形处理器运行所述模型。
3.根据权利要求2所述的方法,其特征在于,所述图形处理器的软件栈包括计算层、框架层和模型层,所述性能原始数据包括与所述模型层对应的模型端到端性能数据、与所述框架层对应的所述痕迹数据、与所述计算层对应的核函数数据,所述框架层支持所述多种框架,
所述模型的运行阶段包括预处理阶段、内存到显存的数据拷贝阶段、推理阶段、显存到内存的数据拷贝阶段、后处理阶段,所述模型端到端性能数据包括所述模型各运行阶段的耗时和所述模型各运行阶段的吞吐量;
所述模型包括多个算子,所述痕迹数据包括每一算子的算子执行耗时;
所述算子在运行时调用所述深度神经网络库中的核函数,所述核函数数据包括所述核函数的吞吐量和所述核函数的带宽。
4.根据权利要求3所述的方法,其特征在于,所述运行参数包括多种批尺寸,所述使用所述容器获取所述模型运行的性能原始数据并分析所述性能原始数据得到性能展示数据,包括:
在所述核函数并行运行的情况下,针对所述模型的每一批尺寸,分别获取至少一次所述模型端到端性能数据;
重新编译所述深度神经网络库,并在所述核函数串行运行的情况下,基于所述模型各运行阶段的吞吐量最高时对应的批尺寸,获取所述选择出的框架对应的痕迹数据和所述核函数数据;
所述方法还包括:
重新执行编译所述深度神经网络库到使用所述容器获取所述模型运行的性能原始数据之间的步骤,直到所述至少一种框架中的每种框架均被选择过。
5.根据权利要求3或4所述的方法,其特征在于,所述性能原始数据还包括系统层面数据,所述系统层面数据包括所述计算设备的硬件性能数据、固件性能数据、内核调用数据、进程数据,所述配置信息还指示所述容器的环境变量、待进行数据获取的模型程序段、获取所述系统层面数据的方式,
所述使用所述容器获取所述模型运行的性能原始数据并分析所述性能原始数据得到性能展示数据,包括:
根据所述配置信息定义所述容器的环境变量;
所述模型以所述运行参数运行所述待进行数据获取的模型程序段时,采用所述获取系统层面数据的方式,获取所述硬件性能数据、所述固件性能数据、所述内核调用数据、所述进程数据。
6.根据权利要求5所述的方法,其特征在于,所述预设的数据格式包括网页文件格式,使用所述容器获取所述模型运行的性能原始数据并分析所述性能原始数据得到性能展示数据,包括:
分析所述性能原始数据,得到所述模型的运行环境数据和所述模型的属性数据;
调整所述模型端到端性能数据、所述核函数数据、所述系统层面数据、所述运行环境数据以及所述属性数据的数据格式,使其符合预设的网页文件格式。
7.根据权利要求1-6中任一项所述的方法,其特征在于,所述预设的数据格式包括网页文件格式,所述方法还包括:
通过所述云端平台将所述多种数据格式的痕迹数据存储至所述云端平台关联的至少一个存储设备;
根据所述多种数据格式的痕迹数据及其存储地址得到痕迹数据存储目录;
对所述多种数据格式的痕迹数据进行处理,得到符合所述预设的数据格式的痕迹数据,包括:
根据所述痕迹数据存储目录中的地址,通过所述云端平台获取所述地址处存储的多种数据格式的痕迹数据;
调整所述多种数据格式的痕迹数据的数据格式,使所述多种数据格式的痕迹数据的数据格式统一;
根据每种数据格式的痕迹数据对应的框架、所述模型、所述批尺寸,对数据格式统一的痕迹数据进行命名并保存为文本格式;
将文本格式的痕迹数据转换为网页文件格式的痕迹数据。
8.根据权利要求1-7中任一项所述的方法,其特征在于,所述从所述云端平台下载运行所述模型所需的资源之前,所述方法还包括:
检查所述容器和所述图形处理器是否具备满足条件的运行环境;
所述从所述云端平台下载运行所述模型所需的资源,包括:
在具备满足条件的运行环境时,从所述云端平台下载运行所述模型所需的资源,所述运行所述模型所需的资源包括运行所述模型所需的模型文件、库文件、数据集文件中的一种或多种。
9.根据权利要求8所述的方法,其特征在于,所述图形处理器是基准图形处理器时,所述满足条件的运行环境包括:
所述图形处理器上设置有基准图形处理器的软件栈,或者,
所述图形处理器上设置有目标图形处理器的软件栈的运行镜像,在所述运行镜像中安装有软件包管理程序、所述代码仓库使用的编程语言的运行依赖数据包、目标图形处理器的显卡驱动程序、目标图形处理器的算子库,所述算子库的运行环境的环境变量设置为目标图形处理器的运行环境的环境变量,
其中,所述目标图形处理器是用户预设好的待优化的图形处理器,所述基准处理器的理论性能高于所述目标图形处理器。
10.根据权利要求1-9中任一项所述的方法,其特征在于,所述方法还包括:
上传所述性能原始数据到所述云端平台;
从所述云端平台接收来自用户设备的历史数据分析指示时,从所述云端平台处下载所述性能原始数据,重新执行分析所述性能原始数据得到性能展示数据及之后的步骤。
11.一种性能分析装置,其特征在于,所述装置应用于计算设备,所述计算设备上设置有实体的图形处理器和虚拟的容器,所述装置包括:
第一接收模块,用于从云端平台接收配置信息,所述配置信息由用户设备上传,所述配置信息指示待分析的模型及所述模型的运行参数;
第一拷贝模块,用于从所述云端平台拷贝代码仓库,所述代码仓库指示所述计算设备分析所述模型在所述图形处理器上运行的性能的方式以及预设的数据格式;
分析模块,用于根据所述代码仓库指示的方式,从所述云端平台下载运行所述模型所需的资源,基于所述资源使用所述图形处理器运行所述模型,使用所述容器获取所述模型运行的性能原始数据并分析所述性能原始数据得到性能展示数据,所述性能展示数据符合所述预设的数据格式;
第一上传模块,用于上传所述性能展示数据到所述云端平台,所述性能展示数据由所述用户设备从所述云端平台下载并展示给用户;
其中,所述图形处理器支持多种框架,所述性能原始数据包括所述图形处理器以所述多种框架分别运行所述模型时获取到的多种数据格式的痕迹数据,分析所述性能原始数据得到性能展示数据时,包括对所述多种数据格式的痕迹数据进行处理,得到符合所述预设的数据格式的痕迹数据,作为性能展示数据中的一种数据。
12.一种计算设备,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为在执行所述存储器存储的指令时,实现权利要求1至10中任意一项所述的方法。
13.一种性能分析系统,其特征在于,所述系统包括用户设备、至少一个计算设备和至少一个存储设备,所述用户设备和所述至少一个计算设备通过云端平台交互,所述至少一个计算设备和所述至少一个存储设备通过所述云端平台交互,所述计算设备上设置有实体的图形处理器和虚拟的容器,
所述用户设备用于上传配置信息到所述云端平台,所述配置信息指示待分析的模型及所述模型的运行参数;
所述至少一个存储设备用于上传代码仓库以及运行所述模型所需的资源到所述云端平台,所述代码仓库指示所述计算设备分析所述模型在所述图形处理器上运行的性能的方式以及预设的数据格式;
所述计算设备用于从所述云端平台接收来自所述用户设备的配置信息并从所述云端平台拷贝所述代码仓库,根据所述代码仓库指示的方式,从所述云端平台下载运行所述模型所需的资源,基于所述资源使用所述图形处理器运行所述模型,使用所述容器获取所述模型运行的性能原始数据并分析所述性能原始数据得到性能展示数据,上传所述性能展示数据到所述云端平台,所述性能展示数据符合所述预设的数据格式;
所述用户设备还用于从所述云端平台下载所述性能展示数据并展示给用户。
14.一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1至10中任意一项所述的方法。
CN202310673323.6A 2023-06-07 2023-06-07 性能分析方法、装置、系统、计算设备及存储介质 Pending CN116701145A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310673323.6A CN116701145A (zh) 2023-06-07 2023-06-07 性能分析方法、装置、系统、计算设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310673323.6A CN116701145A (zh) 2023-06-07 2023-06-07 性能分析方法、装置、系统、计算设备及存储介质

Publications (1)

Publication Number Publication Date
CN116701145A true CN116701145A (zh) 2023-09-05

Family

ID=87827142

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310673323.6A Pending CN116701145A (zh) 2023-06-07 2023-06-07 性能分析方法、装置、系统、计算设备及存储介质

Country Status (1)

Country Link
CN (1) CN116701145A (zh)

Similar Documents

Publication Publication Date Title
US10481884B2 (en) Systems and methods for dynamically replacing code objects for code pushdown
US10579638B2 (en) Automating extract, transform, and load job testing
US20240152527A1 (en) Systems and methods for storing and accessing database queries
US20160357526A1 (en) Declarative design-time experience platform for code generation
CN111580861A (zh) 用于计算机环境迁移的基于模式的人工智能计划器
CN107273104B (zh) 一种配置数据结构的处理方法及装置
CN107704256B (zh) 一种Ubuntu上实现Python依赖系统库自动化安装的方法
CN108694120B (zh) 测试服务组件的方法和装置
CN111158797A (zh) 运行人工智能应用的方法、系统及引擎装置
CN114237651A (zh) 云原生应用的安装方法、装置、电子设备和介质
CN114064503A (zh) 一种ui自动化测试方法、装置、电子设备及存储介质
CN110716804A (zh) 无用资源的自动删除方法、装置、存储介质及电子设备
CN110019207B (zh) 数据处理方法和装置以及脚本显示方法和装置
CN113014669A (zh) 基于rpa的代理服务方法、系统、服务器和存储介质
US10705824B2 (en) Intention-based command optimization
CN116701143A (zh) 性能分析方法、装置、系统、计算设备及存储介质
CN116701145A (zh) 性能分析方法、装置、系统、计算设备及存储介质
CN110825622A (zh) 软件测试方法、装置、设备和计算机可读介质
CN115145652A (zh) 一种数据处理任务的创建方法、装置、设备及介质
CN111324332A (zh) 大数据任务的处理方法及系统、电子设备、存储介质
CN113760240B (zh) 一种生成数据模型的方法和装置
CN114791826A (zh) 基于参数配置的Jenkins项目运行方法及装置
CN113326079A (zh) 服务版本切换方法、切换装置、电子设备和存储介质
CN116701146A (zh) 性能分析方法、装置、系统、计算设备及存储介质
US11301498B2 (en) Multi-cloud object store access

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