CN116755714A - 深度神经网络模型的运行方法、装置、设备和存储介质 - Google Patents
深度神经网络模型的运行方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN116755714A CN116755714A CN202311030243.5A CN202311030243A CN116755714A CN 116755714 A CN116755714 A CN 116755714A CN 202311030243 A CN202311030243 A CN 202311030243A CN 116755714 A CN116755714 A CN 116755714A
- Authority
- CN
- China
- Prior art keywords
- operator
- original
- parameters
- neural network
- static
- 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.)
- Granted
Links
- 238000003062 neural network model Methods 0.000 title claims abstract description 254
- 238000000034 method Methods 0.000 title claims abstract description 85
- 238000003860 storage Methods 0.000 title claims abstract description 18
- 230000003068 static effect Effects 0.000 claims abstract description 313
- 230000014509 gene expression Effects 0.000 claims abstract description 85
- 230000006870 function Effects 0.000 claims description 52
- 238000004364 calculation method Methods 0.000 claims description 34
- 238000010586 diagram Methods 0.000 claims description 29
- 238000012545 processing Methods 0.000 claims description 29
- 238000004590 computer program Methods 0.000 claims description 19
- 238000004088 simulation Methods 0.000 claims description 8
- 238000012216 screening Methods 0.000 claims description 6
- 238000005516 engineering process Methods 0.000 abstract description 18
- 238000013473 artificial intelligence Methods 0.000 abstract description 11
- 238000005457 optimization Methods 0.000 description 39
- 230000008569 process Effects 0.000 description 20
- 230000008859 change Effects 0.000 description 19
- 238000013528 artificial neural network Methods 0.000 description 9
- 230000004913 activation Effects 0.000 description 6
- 238000001514 detection method Methods 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 238000013135 deep learning Methods 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000010606 normalization Methods 0.000 description 3
- 208000033748 Device issues Diseases 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 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
- 230000003287 optical effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
-
- 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)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
Abstract
本申请涉及一种深度神经网络模型的运行方法、装置、设备和存储介质。该方法涉及人工智能技术,方法包括:获取深度神经网络模型中的各运算节点;从算子库中确定各运算节点分别对应的原始算子;若原始算子对应的算子参数中包括静态参数,则根据静态参数对原始算子进行参数静态化表达,得到对应的特化算子,编译特化算子,得到特化算子可执行文件;运行深度神经网络模型中的各运算节点对应的可执行文件,可执行文件包括特化算子可执行文件。这样,能够提高深度神经网络模型的运行效率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种深度神经网络模型的运行方法、装置、设备和存储介质。
背景技术
随着计算机技术的快速发展,人工智能神经网络模型在生产、生活中的应用越来越广泛,例如,深度神经网络(DNN,Deep Neural Networks)被音视频处理、自动驾驶、增强现实等领域广泛需要。随着深度神经网络功能的不断增强与拓展,其需求的计算量也日益增长,如何提高深度神经网络的运行效率是近年来人工智能领域的核心研究方向之一。
通常,深度神经网络在运行时会被分解为多个节点,每个节点对应到一个算子,深度神经网络的运行效率主要依赖于各个算子的运算效率以及算子下发的效率。然而,由于算子参数的多样性,各个算子的运算效率受到较大影响,导致深度神经网络模型的运行效率较低。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高深度神经网络模型的运行效率的深度神经网络模型的运行方法、装置、设备和存储介质。
第一方面,本申请提供了一种深度神经网络模型的运行方法。所述方法包括:
获取深度神经网络模型中的各运算节点;
从算子库中确定各运算节点分别对应的原始算子;
若所述原始算子对应的算子参数中包括静态参数,则根据所述静态参数对所述原始算子进行参数静态化表达,得到对应的特化算子,编译所述特化算子,得到特化算子可执行文件;
运行所述深度神经网络模型中的各运算节点对应的可执行文件,所述可执行文件包括特化算子可执行文件。
第二方面,本申请还提供了一种深度神经网络模型的运行装置。所述装置包括:
节点获取模块,用于获取深度神经网络模型中的各运算节点;
算子确定模块,用于从算子库中确定各运算节点分别对应的原始算子;
算子编译模块,用于若所述原始算子对应的算子参数中包括静态参数,则根据所述静态参数对所述原始算子进行参数静态化表达,得到对应的特化算子,编译所述特化算子,得到特化算子可执行文件;
运行模块,用于运行所述深度神经网络模型中的各运算节点对应的可执行文件,所述可执行文件包括特化算子可执行文件。
在一些实施例中,所述算子编译模块,还用于若所述原始算子对应的算子参数中不包括静态参数,则直接编译所述原始算子,得到原始算子可执行文件。所述运行模块,用于运行所述深度神经网络模型中的各运算节点对应的可执行文件,所述可执行文件包括所述特化算子可执行文件和所述原始算子可执行文件。
在一些实施例中,所述节点获取模块,用于获取深度神经网络模型;对所述深度神经网络模型进行图编译,得到所述深度神经网络模型的计算流图,所述计算流图包括所述深度神经网络模型中的各运算节点以及各运算节点的运算参数和节点属性。
在一些实施例中,所述算子确定模块,用于对于每个运算节点,获取所述运算节点对应的运算参数和节点属性;根据所述运算节点对应的运算参数和节点属性,从算子库中确定分别与各所述运算节点对应的原始算子。
在一些实施例中,所述算子确定模块,用于根据所述运算节点对应的节点属性,确定与所述运算节点匹配的算子类型;从所述算子库中筛选出属于所述算子类型的多个原始算子,所述算子类型的多个原始算子中的每个原始算子对应不同的算子参数;将所述运算节点对应的运算参数与所述多个原始算子中的每个原始算子对应的算子参数进行匹配,根据匹配结果从所述多个原始算子中确定与所述运算节点对应的原始算子。
在一些实施例中,所述装置还包括静态参数检测模块,所述静态参数检测模块,用于根据各运算节点分别对应的原始算子,在主处理器生成与各所述原始算子对应的模拟子任务下发指令,所述模拟子任务下发指令用于模拟运行所述深度神经网络模型;获取所述模拟子任务下发指令,根据所述模拟子任务下发指令提取每个原始算子对应的算子参数,检测所述算子参数中是否存在静态参数。
在一些实施例中,所述装置还包括算子去重模块,所述算子去重模块,用于对于各运算节点对应的原始算子,若所述原始算子对应的算子参数中包括静态参数,则根据所述原始算子的算子类型与所述静态参数,生成特化算子名;若各运算节点对应的原始算子中,存在相应的特化算子名相同的多个原始算子,则对所述相应的特化算子名相同的多个原始算子进行去重处理。所述算子编译模块,用于对于去重后的得到的每个原始算子,根据所述静态参数对所述原始算子进行参数静态化表达,得到对应的特化算子。
在一些实施例中,所述算子编译模块,用于确定所述静态参数的参数值;将所述原始算子的算子参数中的所述静态参数赋值为所述参数值,得到与所述原始算子对应的特化算子。
在一些实施例中,所述算子编译模块,用于将所述特化算子对应的静态参数的参数值传递到所述特化算子中与所述静态参数相关的函数中;根据所述参数值,消除所述特化算子中与所述静态参数相关的处理指令,得到所述特化算子可执行文件。
在一些实施例中,所述运行模块,用于若所述深度神经网络模型中的运算节点对应的算子参数中仅包括静态参数,则根据对应的特化算子可执行文件执行所述运算节点对应的子任务;若所述深度神经网络模型中的运算节点对应的算子参数中包括静态参数与动态参数,则根据对应的特化算子可执行文件与所述动态参数执行所述运算节点对应的子任务;若所述深度神经网络模型中的运算节点对应的算子参数中仅包括动态参数,则根据对应的原始算子可执行文件执行所述运算节点对应的子任务。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取深度神经网络模型中的各运算节点;
从算子库中确定各运算节点分别对应的原始算子;
若所述原始算子对应的算子参数中包括静态参数,则根据所述静态参数对所述原始算子进行参数静态化表达,得到对应的特化算子,编译所述特化算子,得到特化算子可执行文件;
运行所述深度神经网络模型中的各运算节点对应的可执行文件,所述可执行文件包括所述特化算子可执行文件。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取深度神经网络模型中的各运算节点;
从算子库中确定各运算节点分别对应的原始算子;
若所述原始算子对应的算子参数中包括静态参数,则根据所述静态参数对所述原始算子进行参数静态化表达,得到对应的特化算子,编译所述特化算子,得到特化算子可执行文件;
运行所述深度神经网络模型中的各运算节点对应的可执行文件,所述可执行文件包括所述特化算子可执行文件。
第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
获取深度神经网络模型中的各运算节点;
从算子库中确定各运算节点分别对应的原始算子;
若所述原始算子对应的算子参数中包括静态参数,则根据所述静态参数对所述原始算子进行参数静态化表达,得到对应的特化算子,编译所述特化算子,得到特化算子可执行文件;
运行所述深度神经网络模型中的各运算节点对应的可执行文件,所述可执行文件包括所述特化算子可执行文件。
上述深度神经网络模型的运行方法、装置、设备和存储介质,通过获取深度神经网络模型中的各运算节点,从算子库中确定各运算节点分别对应的原始算子。若原始算子对应的算子参数中包括静态参数,则根据静态参数对原始算子进行参数静态化表达,得到对应的特化算子。也即是,在运行深度神经网络模型之前,预先筛选出包含静态参数的原始算子,并根据静态参数对原始算子进行参数静态化表达,对该原始算子的表达进行了优化,得到了对应的特化算子。并且,提前编译特化算子,得到特化算子可执行文件,运行深度神经网络模型中的各运算节点对应的可执行文件,可执行文件包括特化算子可执行文件。也即是,在进行运行深度神经网络模型之前,由于特化算子是通过对包含静态参数的原始算子进行静态参数优化表达得到的,因此,通过对具备静态优化表达的特化算子进行编译,能够得到更优化的可执行文件,以减少特化算子运行的时间,确保了特化算子的运行效率,进而,减少了深度神经网络模型的整体运行时间,也就提高了深度神经网络模型运行效率。
附图说明
图1为一个实施例中深度神经网络模型的运行方法的应用环境图;
图2为一个实施例中深度神经网络模型的运行方法的流程示意图;
图3为一个实施例中计算流图的示意图;
图4为一个实施例中参数静态化表达的流程示意图;
图5为一个实施例中算子去重的流程示意图;
图6为一个实施例中算子存异的流程示意图;
图7为一个实施例中模型运行的示意图;
图8另一个实施例中深度神经网络模型的运行方法的流程示意图;
图9为一个实施例中深度神经网络模型的运行装置的结构框图;
图10为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的深度神经网络模型的运行方法,人工智能(ArtificialIntelligence,AI)技术,人工智能是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。本申请实施例提供的深度神经网络模型的运行方法,具体涉及人工智能的深度学习技术。
相关技术中,为了实现深度神经网络模型在相关芯片(如AI硬件加速芯片)中运行,先将深度神经网络模型编译成计算流图,随后进行算子选择,确定算子参数。然而,在算子对应的运行任务下发时,算子参数较多,即包括大量的静态参数与动态参数,参数传输时长较长,导致任务下发效率低,而且每个算子中包括大量与静态参数相关的指令,导致了整个深度神经网络模型的运行效率受到较大影响。
基于此,本申请实施例提供一种深度神经网络模型的运行方法,通过获取深度神经网络模型中的各运算节点,从算子库中确定各运算节点分别对应的原始算子。若原始算子对应的算子参数中包括静态参数,则根据静态参数对原始算子进行参数静态化表达,得到对应的特化算子。也即是,在运行深度神经网络模型之前,预先筛选出包含静态参数的原始算子,并根据静态参数对原始算子进行参数静态化表达,对该原始算子的表达进行了优化,得到了对应的特化算子。然后,通过编译特化算子,得到特化算子可执行文件。基于此,通过运行各运算节点对应的可执行文件来运行深度神经网络模型,其中,可执行文件包括特化算子可执行文件。也即是,在进行运行深度神经网络模型之前,由于特化算子是通过对包含静态参数的原始算子进静态参数优化表达得到的,因此,通过对具备静态优化表达的特化算子进行编译,能够得到更优化的可执行文件,以减少特化算子运行的时间,确保了特化算子的运行效率,进而,减少了深度神经网络模型的整体运行时间,也就提高了深度神经网络模型运行效率。
本申请实施例提供的深度神经网络模型的运行方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据,例如数据存储系统可以是算子库。数据存储系统可以集成在服务器104上,也可以放在云上或其他服务器上。终端102和服务器104均可单独执行该深度神经网络模型的运行方法,也可协同执行该深度神经网络模型的运行方法。
在一些实施例中,服务器104从预先存储的模型中获取待运行的深度神经网络模型,并获取该深度神经网络模型中的各运算节点;从算子库中确定各运算节点分别对应的原始算子;若原始算子对应的算子参数中包括静态参数,则根据静态参数对原始算子进行参数静态化表达,得到对应的特化算子,编译特化算子,得到特化算子可执行文件;运行深度神经网络模型中的各运算节点对应的可执行文件,可执行文件包括特化算子可执行文件。
其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器104包含中央控制器(即主处理器)和AI芯片(例如AI硬件加速芯片),服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种深度神经网络模型的运行方法,以该方法应用于计算机设备(可以是图1中的终端102,也可以是图1中的服务器104)为例进行说明,包括以下步骤:
步骤S202,获取深度神经网络模型中的各运算节点。
其中,深度神经网络模型是基于深度学习构建的模型,该深度神经网络模型是训练好的模型。该深度神经网络模型是实现目标业务的模型,示例性地,目标业务可以是文字识别业务、图像识别业务、音视频业务等,具体不作限定。例如,当目标业务为文字识别业务时,该深度神经网络模型是进行文字识别的模型;示例性地,当目标业务为图像识别业务时,该深度神经网络模型是进行图像识别的模型;示例性地,当目标业务为音视频识别业务时,该深度神经网络模型是进行音视频识别的模型。深度神经网络模型的运行涉及到多个运算节点,每个运算节点对应到一个算子。算子可以是卷积(Convolution,Conv)算子,层归一化(Layernorm,LN)算子,激活算子(如Relu激活算子),上采样(Upsample)算子,按元素操作(Element-wise,Eltwise)算子等。可以理解的是,深度神经网络模型中的各运算节点都是用于实现该目标业务的运算节点。
可选地,计算机设备获取用于实现目标业务的深度神经网络模型,并确定该深度神经网络模型的计算流图。计算机设备根据该计算流图,获取深度神经网络模型中的各运算节点。计算流图是用来表示深度神经网络模型在运行过程中计算逻辑与状态。
在一些实施例中,获取深度神经网络模型中的各运算节点,包括:获取深度神经网络模型;对深度神经网络模型进行图编译,得到深度神经网络模型的计算流图,计算流图包括深度神经网络模型中的各运算节点以及各运算节点的运算参数和节点属性。
其中,图编译是对该深度神经网络模型运行过程图形化的过程,即通过对深度神经网络模型进行解析后再生成计算流图。计算流图是一种用于描述函数的有向无环图,用于表示深度神经网络模型的计算逻辑。该计算流图定义了数据的流向方式、数据的计算方式以及各种计算方式之间的关系等。计算流图包括运算节点和有向边。两个运算节点间的有向边反映了这两个运算节点各自对应的网络层的计算逻辑,也可以理解为两个运算节点间的依赖关系。每个运算节点的运算参数是执行该运算节点所需要的参数,每个运算节点的节点属性反映了该运算节点的作用,如算子类型、算子名称等等。
可选地,计算机设备获取用于实现目标业务的深度神经网络模型,计算机设备解析该深度神经网络模型在运行过程中各网络层的计算逻辑与状态,并根据该计算逻辑与状态生成与该深度神经网络模型对应的计算流图。该计算流图包括深度神经网络模型中的各运算节点以及各运算节点的运算参数和节点属性。计算机设备从该计算流图中获取各运算节点。
示例性地,计算机设备利用机器学习框架对深度神经网络模型进行分析,获取该深度神经网络模型中网络层之间的连接拓扑关系以及网络层相关的参数变量设置等信息,并对获取到的信息进行编译,得到对应的计算流图。其中,深度神经网络模型中各网络层的连接拓扑关系可理解为各网络层的计算逻辑,网络层相关的参数变量设置等参数信息可理解为网络层的状态。
例如,如图3所示,为一个实施例中计算流图的示意图。图3中用于实现目标业务的深度神经网络模型包括输入层(Input)、卷积层(Conv)、正则化层(如LN(LayerNorm,层归一化))、激活函数层(Relu)、上采样层(Upsample)、逐元素操作层(Eltwise)、输出层(Output)。在对用于实现目标业务的深度神经网络模型进行图编译后,得到运行该深度神经网络模型中各网络层分别对应的运算节点,并根据该深度神经网络中各网络层的计算逻辑,确定网络层各自对应的运算节点的运算顺序。根据各运算节点的运算顺序,连接各运算节点,得到深度神经网络模型的计算流图。图3中,在对深度神经网络模型进行图编译后,依次得到输入层对应的输入运算节点、卷积层对应的卷积运算节点、正则化层对应的正则化运算节点、激活函数层对应的激活函数运算节点、上采样层对应的上采样运算节点、逐元素操作层对应的逐元素操作运算节点、输出层对应的输出运算节点。
在本实施例中,通过对深度神经网络模型进行图编译,解析该深度神经网络模型在运行过程中的计算逻辑与状态,将深度神经网络模型转化为图形式,直观清晰地反映了与该深度神经网络模型中各网络层分别对应的运算节点和各运算节点的运算参数和节点属性。后续基于准确表达了该深度神经网络模型的计算流图,能够确定该深度神经网络模型中的各运算节点,并从算子库中确定各运算节点分别对应的原始算子。若原始算子对应的算子参数中包括静态参数,则根据静态参数对原始算子进行参数静态化表达,得到对应的特化算子。这样,在运行深度神经网络模型之前,预先筛选出的包含静态参数的原始算子,并根据静态参数对原始算子进行参数静态化表达,对该原始算子的表达进行了优化,得到了对应的特化算子。由于特化算子是通过对包含静态参数的原始算子进行静态参数优化表达得到的,因此,通过对具备静态优化表达的特化算子进行编译,能够得到更优化的可执行文件,以减少特化算子运行的时间,确保了特化算子的运行效率,进而,减少了深度神经网络模型的整体运行时间,也就提高了深度神经网络模型运行效率。
步骤S204,从算子库中确定各运算节点分别对应的原始算子。
其中,深度学习算法是通过多个计算单元组成的,计算单元为算子。在深度神经网络模型中,每个运算节点对应一个算子,也即是,每个运算节点唯一对应一个算子,需要说明的是,在深度神经网络模型中,可能存在被多次运算的算子,即一个算子在多个运算节点中进行运算,此时,一个算子对应多个运算节点,当然,也可能存在被运算一次的算子,此时,一个算子对应一个运算节点。例如,卷积算子、层归一化算子、激活函数算子、上采样算子、逐元素操作算子等。算子库中预先存储了实现不同深度神经网络模型所需要的算子和实现不同深度神经网络模型所需要的算子的版本要求。算子是指算子库中的待运行的算子,即未进行编译的算子。算子库也称加速库。
可选地,计算机设备获取算子库,并从该算子库中进行算子选择,选择出与各运算节点分别对应的原始算子。
在算子库中,预先存储了不同算子类型的原始算子,属于相同算子类型的算子集合中包括至少一个版本的原始算子,每个版本的原始算子唯一对应一个算子要求,算子要求包含算子的参数信息。其中,算子库中也对应存储了各版本的原始算子的算子要求。例如,算子库中包括卷积类型的第一算子集合,该第一算子集合中包括M个版本的原始算子,第一算子集合中的原始算子均是卷积类型的原始算子。
示例性地,对于每个运算节点,计算机设备从算子库中预先存储的各运算节点对应的算子要求,确定该运算节点对应的算子要求。根据该运算节点对应的算子要求,从算子库中选择出与该运算节点匹配的某个类型的某个版本的原始算子。
步骤S206,若原始算子对应的算子参数中包括静态参数,则根据静态参数对原始算子进行参数静态化表达,得到对应的特化算子,编译特化算子,得到特化算子可执行文件。
其中,算子参数是影响算子性能的因素之一,算子参数包括算子的输入规格参数和算子属性参数,示例性地,输入规格参数可以是size(输入数据大小)、shape(形状)、tiling(分块)、memory layout(用于获取内存布局信息的参数)等,对于卷积算子而言,卷积算子的属性参数可以是filter shape(卷积核的大小)、batch size(单次传递给模型用于训练的样本数)、padding(填充参数)、stride(卷积核的移动步长参数)、dilation(膨胀操作参数)等。算子参数可理解为算子的参数集合,包括多个参数。静态参数指在网络编译期可读或可推测出的常量值,且不随网络运行而变化的参数。
参数静态化表达是将静态参数的参数值下沉到原始算子中,参数静态化表达也可理解为参数下沉,示例性地,在未进行参数下沉之前,卷积算子中关于内存排列的静态参数用memory layout表达,当确定内存排列的静态参数的参数值为NHWC后,直接将内存排列的静态参数赋值为NHWC,即参数下沉可以理解为将静态参数赋值为该静态参数的参数值。通过参数静态化表达,将包含静态参数的原始算子生成该原始算子的特化算子,相较于该原始算子中静态参数的表达,对应的特化算子中该静态参数直接用参数值表示,该特化算子的表达更加优化,也能够减少该特化算子的运行时间。由于模型运行的实质就是各算子的运行,因此,特化算子的运行时间减少,也就使得深度神经网络模型的整体运行时间减少,也就提高了深度神经网络模型的运行效率。算子的表达,即特化算子的表达更优化,对应的运行效率也能够得到相应提高。
可执行文件是指可以进行加载执行的文件,特化算子可执行文件是指特化算子的可执行文件。
可选地,计算机设备获取各原始算子对应的算子参数,对于每个原始算子对应的算子参数,根据该算子参数中各参数的参数值,校验该算子参数中的每个参数是否存在静态参数,若存在,则根据存在的静态参数对该原始算子进行参数静态化表达,得到对应的特化算子。计算机设备通过编译器,对该特化算子进行编译,得到特化算子可执行文件。
示例性地,对于每个原始算子,从算子库中获取该原始算子对应的算子参数、以及该算子参数中各参数的属性信息。该属性信息包括参数的参数值是否为常数、以及参数的参数值是否随系统状态变化而变化、以及该参数的参数值是否包含时间参数、以及该参数的参数值是否随网络重复运行次数变化。若校验到该算子参数中存在至少一个参数的参数值是常数、至少一个参数的参数值不随系统状态(如内存容量、任务调度、进程资源、线程资源等)而变化、至少一个参数的参数值不随时间变化、或者至少一个参数的参数值不随网络重复运行次数变化,则计算机设备可以确定该至少一个参数为静态参数,并将该至少一个静态参数对该原始算子进行参数静态化表达,得到对应的特化算子。计算机设备通过编译器,对该特化算子进行编译,得到特化算子可执行文件。
若校验到该算子参数中不存在参数的参数值是常数、不存在一个参数的参数值不随系统状态(如内存容量、任务调度、进程资源、线程资源等)而变化、不存在一个参数的参数值不随时间变化、也不存在一个的参数值不随网络重复运行次数变化,则确定该原始算子的算子参数中不存在静态参数。
在一些实施例中,根据静态参数对原始算子进行参数静态化表达,得到对应的特化算子,包括:确定静态参数的参数值;将原始算子的算子参数中的静态参数赋值为参数值,得到与原始算子对应的特化算子。
示例性地,对于包括静态参数的原始算子,计算机设备将该原始算子的算子参数中的静态参数赋值为对应的参数值。例如,对于卷积算子而言,算子参数中的静态参数包括输入图像的内存布局参数,即Feature Map memory layerout(简称FM memory layerout),还包括输入图像的尺寸参数,即shape,则计算机设备直接将静态参数赋值为对应的参数值,即FM memory layerout赋值为NHWC;shape赋值为(32,64,64,16)。基于此,得到了该原始算子的特化算子。该特化算子中FM memory layerout用NHWC表示;shape用(32,64,64,16)表示。其中,NHWC为一种图片存储方式。
在本实施例中,通过直接将原始算子的算子参数中的静态参数赋值为参数值,来实现静态参数的下沉,得到与原始算子对应的特化算子。后续通过对具备静态优化表达的特化算子进行编译,能够得到更优化的可执行文件,以减少特化算子运行的时间,确保了特化算子的运行效率,进而,减少了深度神经网络模型的整体运行时间,也就提高了深度神经网络模型运行效率。
步骤S208,运行深度神经网络模型中的各运算节点对应的可执行文件,可执行文件包括特化算子可执行文件。
可选地,计算机设备获取各运算节点对应的可执行文件,在运行该深度神经网络模型的过程中,计算机设备根据各运算节点对应的可执行文件,按各运算节点的运行顺序,依次执行各运算节点对应的子任务。每个运算节点对应一个子任务,例如,运算节点为卷积运算节点,则对应的子任务为卷积运算。
需要说明的是,计算机设备中包括主处理器和硬件平台,硬件平台为AI加速硬件芯片。
在相关技术中,算子库中包括该深度神经网络模型的算子和其他神经网络模型的算子,预先对算子库中所有深度神经网络模型所涉及到的算子进行预编译,得到各算子可执行文件。在主处理器进行了算子选择,主处理器确定各运算节点分别对应的原始算子之后,此时,硬件平台根据各算子可执行文件运行深度神经网络模型。但是,深度神经网络中的静态参数是存在于网络中,只在网络编译过程中可知,故而在算子库预编译的时候无法感知实际参数,只能将参数进行分类处理,无法对每一个静态参数的参数值进行调优。也就是说,相关技术中不仅要对该深度神经网络模型的算子进行编译,还需要对其他深度神经网络模型的算子进行编译,得到所有深度神经网络模型所涉及到的算子的算子可执行文件,硬件平台在运行模型时,所使用的算子可执行文件是没有进行参数优化表达所确定的,很显然,相关技术中,深度神经网络模型的运行效率低。
而本申请中,前述步骤S202至步骤S206的执行主体是计算机设备中的主处理器,步骤S208的执行主体是计算机设备中的硬件平台。由于深度神经网络模型的运行是基于各算子实现的,算子可以是仅包括原始算子(即不包含静态参数的算子)、可以是仅包括特化算子、也可以是包括原始算子和特化算子。因此,深度神经网络模型的运行效率的提高本质上是提高至少一个算子的运行效率。那么,在包括特化算子的情况下,由于特化算子中的静态参数已经预先赋值为参数值,那么,在运行该特化算子时,无需重复获取该静态参数的参数值。相对于不包含静态参数的算子而言,特化算子的运行效率更高。也就是说,在该情况下,由于特化算子的运行效率提高,那么,整个深度神经网络模型的运行效率也就提高了。此外,本申请所涉及到的原始算子都是该深度神经网络模型的算子,不是其他深度神经网络模型的算子。本申请无需对其他深度神经网络模型的算子进行编译,也就相应提高了编译的速度和效率。
示例性地,计算机设备中的主处理器将各运算节点对应的可执行文件下发至计算机设备中的硬件平台,在计算机设备中的硬件平台运行该深度神经网络模型的过程中,计算机设备中的硬件平台根据各运算节点对应的可执行文件,按各运算节点的运行顺序,依次执行各运算节点对应的子任务。可执行文件包括特化算子的可执行文件。
上述深度神经网络模型的运行方法中,通过获取深度神经网络模型中的各运算节点;从算子库中确定各运算节点分别对应的原始算子。若原始算子对应的算子参数中包括静态参数,则根据静态参数对原始算子进行参数静态化表达,得到对应的特化算子。也即是,在运行深度神经网络模型之前,预先筛选出包含静态参数的原始算子,并根据静态参数对原始算子进行参数静态化表达,对该原始算子的表达进行了优化,得到了对应的特化算子。并且提前编译特化算子,得到特化算子可执行文件;运行深度神经网络模型中的各运算节点对应的可执行文件,可执行文件包括特化算子可执行文件。也即是,在进行运行深度神经网络模型之前,由于特化算子是通过对包含静态参数的原始算子进行静态参数优化表达得到的,因此,通过对具备静态优化表达的特化算子进行编译,能够得到更优化的可执行文件,以减少特化算子运行的时间,确保了特化算子的运行效率,进而,减少了深度神经网络模型的整体运行时间,也就提高了深度神经网络模型运行效率。
在一些实施例中,方法还包括:若原始算子对应的算子参数中不包括静态参数,则直接编译原始算子,得到原始算子可执行文件。
其中,算子参数还包括动态参数,动态参数是在网络编译期不可知,动态参数是仅在网络运行后可知的参数以及随网络运行而变化的参数。
可选地,若校验到该算子参数中不存在一个参数的参数值是常数、不存在一个参数的参数值不随系统状态(如内存容量、任务调度、进程资源、线程资源等)而变化、不存在一个参数的参数值不随时间变化、或者不存在一个的参数值不随网络重复运行次数变化,则计算机设备确定该原始算子的算子参数中不存在静态参数,并确定该算子参数中的参数均为动态参数。计算机设备通过编译器,直接对该原始算子进行编译,得到原始算子可执行文件。
示例性地,计算机设备一一校验每个原始算子对应的算子参数中是否包括静态参数。若存在原始算子对应的算子参数中包括静态参数,则计算机设备从多个原始算子中筛选出存在静态参数的原始算子,并根据筛选出的原始算子(对应的算子参数包括静态参数)的静态参数,对筛选出的原始算子进行参数静态化表达,得到筛选出的原始算子对应的特化算子,并编译该特化算子得到特化算子可执行文件。计算机设备对未筛选出原始算子(对应的算子不包括静态参数)进行编译,得到未筛选出原始算子对应的原始算子可执行文件。计算机设备根据该深度神经网络模型中各运算节点各自的运行顺序、筛选出的原始算子对应的特化算子可执行文件和未筛选出的原始算子对应的原始算子可执行文件,运行该深度神经网络模型。
在本实施例中,若校验到原始算子对应的算子参数中不包括静态参数,则直接确定该原始算子仅包括动态参数,此时,无需参数静态化表达,直接进行编译该原始算子,得到原始算子可执行文件,后续与特化算子可执行文件一起参与深度神经网络模型的运行,以确保深度神经网络模型的正常运行。
在一些实施例中,运行深度神经网络模型中的各运算节点对应的可执行文件,包括:运行深度神经网络模型中的各运算节点对应的可执行文件,可执行文件包括特化算子可执行文件和原始算子可执行文件。
需要说明的是,运算节点对应的原始算子可以是包含静态参数,也可以是不包含静态参数的,因此,在多个原始算子中存在包含静态参数的原始算子和不包含静态参数的原始算子的情况下,可执行文件包括特化算子可执行文件和原始算子可执行文件。
示例性地,对于各运算节点对应的原始算子,若原始算子对应的算子参数中包括静态参数,则将包括静态参数的原始算子视为第一原始算子,将第一原始算子对应的运算节点视为第一运算节点,根据对应的静态参数对第一原始算子进行参数静态化表达,得到对应的特化算子。编译特化算子,得到第一原始算子的特化算子可执行文件;若原始算子对应的算子参数中不包括静态参数,则将不包括静态参数的原始算子视为第二原始算子,将第二原始算子对应的运算节点视为第二运算节点,直接编译第二原始算子,得到第二原始算子的原始算子可执行文件;原始算子包括第一原始算子和第二原始算子,运算节点包括第一运算节点和第二运算节点。运行深度神经网络模型中的第一运算节点对应的特化算子可执行文件和运行第二运算节点对应的原始算子可执行文件。
在本实施例中,运行深度神经网络模型中的各运算节点对应的可执行文件,可执行文件包括特化算子可执行文件和原始算子可执行文件。这样,在运行深度神经网络模型之前,由于特化算子是通过对包含静态参数的原始算子进行算子表达层面的优化得到的,因此,通过对具备静态优化表达的特化算子进行编译,能够得到更优化的可执行文件,以减少特化算子运行的时间,确保了特化算子的运行效率,进而,减少了深度神经网络模型的整体运行时间,也就提高了深度神经网络模型运行效率。
在一些实施例中,从算子库中确定各运算节点分别对应的原始算子,包括:对于每个运算节点,获取运算节点对应的运算参数和节点属性;根据运算节点对应的运算参数和节点属性,从算子库中确定分别与各运算节点对应的原始算子。
其中,每个运算节点对应一个原始算子,原始算子的算子参数包括运算参数,运算参数可以是算子的输入规格参数,也可以是算子的属性参数,具体不作限定。
可选地,对于每个运算节点,计算机设备从计算流图中获取该运算节点对应的运算参数和节点属性,并根据运算节点对应的运算参数和节点属性,确定与该运算节点对应的原始算子的算子要求。计算机设备根据该算子要求,从算子库中的多个原始算子中,选择出目标算子类型中的目标版本算子,该选择出的算子为该运算节点匹配的原始算子。
需要说明的是,算子库是预先构建好的,在构建算子库时,为实现每个算子,需要根据硬件指令的规定而对算子参数进行分类处理。例如,单指令多数据流(SingleInstruction Multiple Data,SIMD)指令对数据对齐有较高的要求,例如AVX(AdvancedVectorExtensions,高级矢量扩展)指令集要求每次处理的数据按照32Bytes(字节)对齐,故而,在进行算子实现时需要大量控制语句判断是否对齐,对齐数据按照某一方案处理、非对齐数据按照另一方案处理。总体来说,每一个算子都是针对一类参数特征实现的较优方案,而非针对每一个参数具体值而实现的最优方案。
示例性地,对于运算节点i,计算机设备根据该运算节点i对应的运算参数和节点属性,确定该运算节点i对应的目标算子类型为卷积类型,即运算节点i对应的原始算子为卷积算子,且属于第M版本的卷积算子。该第M版本的卷积算子均是与运算节点i的运算参数和节点属性相匹配的,即卷积算子是满足节点属性的要求,运算节点i的运算参数是符合第M版本的卷积算子的算子参数的要求。
在本实施例中,对于每个运算节点,根据运算节点对应的运算参数和节点属性,从算子库中精准匹配出符合该运算参数和节点属性的原始算子,并从算子库中直接选择出该原始算子,提高了算子选择的准确性和有效性,也确保了后续静态参数的检测、特化算子的准确性,确保了深度神经网络模型运行的准确性。
在一些实施例中,根据运算节点对应的运算参数和节点属性,从算子库中确定分别与各运算节点对应的原始算子,包括:根据运算节点对应的节点属性,确定与运算节点匹配的算子类型;从算子库中筛选出属于算子类型的多个原始算子,算子类型的多个原始算子中的每个原始算子对应不同的算子参数;将运算节点对应的运算参数与多个原始算子中的每个原始算子对应的算子参数进行匹配,根据匹配结果从多个原始算子中确定与运算节点对应的原始算子。
其中,算子类型的多个原始算子分别为不同版本的算子,即每个算子类型下都有不同版本的原始算子,每个版本的原始算子对应的算子参数不同。例如,对于卷积类型的原始算子而言,存在M个版本的卷积算子。第1版本的卷积算子、第2版本的卷积算子、…、第M版本的卷积算子各自的算子参数均不相同。
可选地,计算机设备根据运算节点对应的节点属性,确定与运算节点匹配的算子类型。计算机设备从算子库中筛选出属于该算子类型的多个原始算子,并确定该筛选出的每个原始算子对应的算子参数所在的参数范围,计算机设备从多个该参数范围中,确定出该运算节点对应的运算参数所属的参数范围,将运算参数所属的参数范围所对应的原始算子,确定为与该运算节点对应的原始算子。
示例性地,对于运算节点i,计算机设备根据运算节点i对应的节点属性,确定目标算子类型,即与该运算节点i匹配的算子类型,如,该算子类别为卷积类型。因此,确定该运算节点对应的原始算子是卷积算子,进一步地,该运算节点i的运算参数为FM memorylayerout为NHWC,shape表达为(n,h,w,c),取值为(32,64,64,16),其中,n为一个批次内图像的数量,h为垂直高度方向的像素个数,w为水平宽度方向的像素个数,c为通道数。确定卷积类型的多个卷积算子对应的算子参数所属的参数范围,其中,第M版本卷积算子的参数范围为FM memory layerout为NHWC,shape表达为(n,h,w,c),取值范围在(1,64,64,16)至(32,1024,1024,64)之间,很显然,该运算节点i对应运算参数是在该参数范围之内的,即该运算节点i对应的原始算子为第M版本卷积算子。
在本实施例中,根据运算节点对应的节点属性,首先定位目标算子类型,即与运算节点匹配的算子类型,再从算子库中筛选出属于算子类型的多个原始算子。然后再将运算节点对应的运算参数与多个原始算子中的每个原始算子对应的算子参数进行匹配,根据匹配结果从多个原始算子中,能够有效且精准确定与运算节点对应的原始算子,确保了后续静态参数的检测和所生成的特化算子的准确性,确保了深度神经网络模型运行的准确性。
在一些实施例中,方法还包括:根据各运算节点分别对应的原始算子,在主处理器生成与各原始算子对应的模拟子任务下发指令,模拟子任务下发指令用于模拟运行深度神经网络模型;获取模拟子任务下发指令,根据模拟子任务下发指令提取每个原始算子对应的算子参数,检测算子参数中是否存在静态参数。
其中,模拟子任务下发指令是用于模拟运行深度神经网络模型各运算节点,以同步获取各原始算子的算子参数。需要说明的是,该模拟子任务下发指令不会下发到硬件平台,不会启动硬件平台,硬件平台也不会运行该深度神经网络模型。
可选地,根据各运算节点分别对应的原始算子,计算机设备通过主处理器生成与原始算子对应的模拟子任务下发指令,根据该模拟子任务下发指令提取每个原始算子对应的算子参数。若计算机设备检测到该算子参数中存在至少一个静态参数,则返回步骤S206继续执行,若计算机设备检测到该算子参数中不存在静态参数,则不对该原始算子进行参数静态化表达。
示例性地,如图4所示,为一个实施例中参数静态化表达的流程示意图。在计算机设备获取到关于用于实现目标业务的深度神经网络模型的各原始算子之后,计算机设备模拟子任务下发,即通过主处理器生成与各原始算子对应的模拟子任务下发指令。计算机设备根据模拟子任务下发指令,获取各原始算子对应的算子参数,算子参数包括输入规格参数和算子属性参数。
对于每个原始算子,根据该算子参数的参数值,校验算子参数中是否存在静态参数。若是,即校验到该算子参数中存在至少一个参数的参数值是常数、至少一个参数的参数值不随系统状态(如内存容量、任务调度、进程资源、线程资源等)而变化、至少一个参数的参数值不随时间变化、或至少一个参数的参数值不随网络重复运行次数变化,则计算机设备可以确定该至少一个参数为静态参数,并将该至少一个静态参数对该原始算子进行参数静态化表达,得到对应的特化算子。
若否,即校验到该算子参数中不存在参数的参数值是常数、不存在一个参数的参数值不随系统状态(如内存容量、任务调度、进程资源、线程资源等)而变化、不存在一个参数的参数值不随时间变化、也不存在一个的参数值不随网络重复运行次数变化,则确定该原始算子的算子参数中不存在静态参数,即该原始算子不进行参数静态化表达。计算机设备根据得到的特化算子和不进行参数静态化表达的原始算子,得到优化后的算子库。
需要说明的是,本申请中的原始算子是与该深度神经网络模型相关的算子,即不是其他深度神经网络模型的算子。
在本实施例中,根据各运算节点分别对应的原始算子,在主处理器生成与各原始算子对应的模拟子任务下发指令。基于此,根据模拟子任务下发指令,能够模拟子任务下发的过程,获取各原始算子对应的算子参数,从而,能够对算子参数中是否存在静态参数进行有效检测。这样,在检测到存在静态参数后,能够通过对包含静态参数的原始算子进行算子表达层面的优化得到的特化算子,从而,得到更优化的可执行文件,以减少特化算子运行的时间,确保了特化算子的运行效率,进而,减少了深度神经网络模型的整体运行时间,也就提高了深度神经网络模型运行效率。
在一些实施例中,根据静态参数对原始算子进行参数静态化表达,得到对应的特化算子之前,方法还包括:对于各运算节点对应的原始算子,若原始算子对应的算子参数中包括静态参数,则根据原始算子的算子类型与静态参数,生成特化算子名;若各运算节点对应的原始算子中,存在相应的特化算子名相同的多个原始算子,则对相应的特化算子名相同的多个原始算子进行去重处理。
可选地,对于每个原始算子,若该原始算子对应的算子参数中包括静态参数,则在进行参数静态化表达之前,计算机设备根据该原始算子的算子类型、静态参数和静态参数的参数值,生成与包括静态参数的原始算子对应的特化算子名。若计算机设备校验到至少两个相同的特化算子名,则从相应的特化算子名相同的多个原始算子中,保留一个该特化算子名的原始算子。
示例性地,计算机设备在获取了该原始算子的算子类型、静态参数和静态参数的参数值之后,拼接每个静态参数的名称和参数值,得到每个静态参数的中间名称,并依次拼接算子类型的名称、至少一个静态参数的中间名称,得到与包括静态参数的原始算子对应的特化算子名。
举例说明,例如,原始算子的算子类型为ConvFmResident,对应的算子参数为FMmemory layerout和shape,对应的参数值分别为NHWC和(32,64,64,16)。此时,特化算子名:ConvFmResident_FMLO_NHWC_Shape_32_64_64_16。
需要说明的是,特化算子由算子原始代码以及静态参数衍生而来,与算子代码、参数值息息相关,不同算子、不同参数将生成不同特化算子。在深度神经网络模型中,存在利用多个相同的静态参数多次调用同一个算子类型的算子的现象。此时,由于算子与静态参数的参数值不变,因此,为避免出现重复的特化算子,避免遗漏不同的特化算子,在进行特化算子生成之前,需要进行去重存异的处理。去重是指去重相同特化算子,只保留一个特化算子。例如,有3个相同的特化算子,将其中的两个特化算子去除,只保留一个特化算子。存异是指保存不同的特化算子。
如图5所示,为一个实施例中算子去重的流程示意图。现存在三个相同的算子类型的原始算子,即原始算子1,存在三个相同的静态参数(可以理解,静态参数的参数值均相同),即静态参数1,可以知晓,基于这三个相同的算子类型的原始算子、三个相同的静态参数、以及三个静态参数的参数值,进行了三次特化算子名的确定,应该得到三个特化算子名,但是由于第一次确定特化算子名、第二次确定特化算子名和第三次确定特化算子名均生成的是相同的特化算子名,即都是特化算子名1,因此,需要进行去重处理,基于此,后续只会保留一个特化算子,即特化算子名1对应的特化算子1。
如图6所示,为一个实施例中算子存异的流程示意图。现存在三个相同的原始算子,即原始算子1,存在三个不相同的静态参数(可以理解,静态参数的参数值均不相同),即静态参数1、静态参数2、静态参数3,可以知晓,基于这三个相同的算子类型的原始算子、三个不相同的静态参数、以及三个静态参数的参数值,分别进行了第一次确定特化算子名、第二次确定特化算子名和第三次确定特化算子名,得到了三个不同的特化算子名,分别是特化算子名1、特算子名2、特化算子名3,此时,需要将不同的特化算子名各自对应的特征欢子进行存异,此时,会将特化算子名1对应的特化算子1、特化算子名2对应的特化算子2、特化算子名3对应的特化算子3进行保存。
在本实施例中,对于各运算节点对应的原始算子,若原始算子对应的算子参数中包括静态参数,则根据原始算子的算子类型与静态参数,生成特化算子名。若各运算节点对应的原始算子中,存在相应的特化算子名相同的多个原始算子,则对相应的特化算子名相同的多个原始算子进行去重处理。这样,能够确保后续不会重复生成特化算子,避免了重复进行相同的特化算子编译过程,优化了特化算子可执行文件的确定流程,从而,减少了深度神经网络模型的整体运行时间,也就提高了深度神经网络模型运行效率。
在一些实施例中,根据静态参数对原始算子进行参数静态化表达,得到对应的特化算子,包括:对于去重后的得到的每个原始算子,根据静态参数对原始算子进行参数静态化表达,得到对应的特化算子。
可选地,对于去重后的得到的每个原始算子,计算机设备将该原始算子的算子参数中静态参数赋值为该静态参数的参数值,得到与去重后的得到的该原始算子对应的特化算子。
在本实施例中,对于去重后的得到的每个原始算子,根据静态参数对原始算子进行参数静态化表达,得到对应的特化算子。基于此,在筛选出不会生成重复的特化算子的原始算子后,直接对该原始算子进行参数静态化表达,得到有效且不重复的特化算子,避免了重复进行相同的特化算子编译过程,优化了特化算子可执行文件的确定流程,从而,减少了深度神经网络模型的整体运行时间,也就提高了深度神经网络模型运行效率。
在一些实施例中,编译特化算子,得到特化算子可执行文件,包括:将特化算子对应的静态参数的参数值传递到特化算子中与静态参数相关的函数中;根据参数值,消除特化算子中与静态参数相关的处理指令,得到特化算子可执行文件。
其中,与静态参数相关的函数可以是进行参数计算的函数,也可以是进行控制的函数,具体不作限定。相应地,进行参数计算的函数对应的处理指令包括标量计算指令,进行控制的函数对应的处理指令包括判断指令以及分支跳转指令,具体不作限定。
可选地,计算机设备在获取了特化算子对应的至少一个静态参数的参数值后,将特化算子对应的每个静态参数的参数值传递到对应的函数中,该函数是该特化算子中与该静态参数相关的函数。根据至少一个静态参数的参数值,通过编译器中预设优化方式,消除该特化算子中与该静态参数相关的处理指令,得到该特化算子可执行文件。
需要说明的是,将特化算子对应的静态参数的参数值传递到对应的函数中,这个方式是基准优化方式,与可以理解为常量传播的优化方式。常量传播优化是指程序中每个静态参数只有一次定义,但可以被使用多次。例如,一个静态参数为a,将a定义为一个常量值10,在a作为参数参与其他计算时,通过常量传播将10传播到使用到a的所有函数中。也即是,用10替代a。比如:a本来是算子中的一个变量,通过常量传播,a的常量值被下沉到了算子中,即可定义:。后续a参与其他运算,例如,a参与运行参数c,运算即:/>常量传播后,这个a被赋值成10,即表达式变成:/>。
除此之外,预设优化方式包括但不限于内联优化、常量折叠优化、表达式优化、分支消除。
内联优化是指将算子中的所有函数通过调用关系合并成一个函数,即将所有被调用的函数展开在调用者函数中的优化。
常量折叠优化是指函数是由至少一个静态参数构成时,在确定了每个静态参数的参数值后,直接用每个静态参数的参数值代入函数的计算,得到计算值。例如,存在两个静态参数分别是a和b,a等于10以及b等于5,相关的函数1为,则在进行了常量传播后,得到常量传播对应的优化函数1为/>;此时,再对常量传播对应的优化函数1进行常量折叠优化,得到常量折叠优化对应的优化函数为/>。若存在相关的函数2来计算参数d,函数2为:
如果上述函数2中a小于b,则,否则/>;那么,基于各静态参数的参数值,进行常量传播后,得到/>;此时,表达式优化是指对判断的表达式进行优化,很显然10是大于5的,因此,/>是假,则对常量传播对应优化的函数进行表达式优化后,得到表达是优化后的函数2为/>。
很显然,上述举例中涉及到标量加法(+)、标量比较(<),标量内存访存(=)等,在硬件芯片上执行时,这些都需要通过标量运算、标量控制指令完成。优化后,所有变量和表达式值在编译期已知,无需进行标量运算,不用生成标量指令。
又例如,在运行用于图像处理的深度神经网络模型的过程中,需要进行多次数据的搬运操作,为确保数据搬运的有效性,需要确保每次搬运的数据量不大于256kB(KiloBytes,千字节)数据到缓存中,但需要保持输入图像的规整性,HWC(一种数据排列)维度不能进行切分,则需要根据公式计算每次搬运的数据量,即数据搬运计算函数(即bachsize函数)如下:
上述数据搬运计算函数中,H为特征图的高、C为特征图通道数、W为特征图的宽、data type为数据类型,sizeof(data type)为数据类型字节数,floor为向下取整操作,batch size Bytes为批大小字节。基于上述数据搬运计算函数(即batch size函数)规定了在不小于256kB数据的基础上,每次能够搬运的数据。此时,若特化算子对应为卷积算子,对应的静态参数FM memory layerout赋值为NHWC;shape赋值为(32,64,64,16)。代入上述的数据搬运计算函数中可知:对于该特化算子,每次搬运数据量为:
很显然,可以计算出每次搬运数据量已满足32Bytes。那么,该特化算子原本用于计算的乘法、除法、向下取整指令都可以被消除,用于判断对齐的比较指令、用于选择数据处理方案的分支跳转指令也可消除。也即是,在对特化算子编译的过程中,对静态参数的参数值进行了极致优化,这使得特化算子可执行文件中大量标量指令被消除,提高了特化算子的运行效率,进而,提高了整个深度神经网络模型的运行效率。
又例如,若特化算子中存在相关的函数涉及到分支跳转语句时,例如,相关函数为:若,执行代码段1;否则,执行代码段2。
参照上述的举例,参数a赋值为10;参数b赋值为5,由于是不成立的,则需要执行代码段2,基于此,在基于各静态参数的参数值,对分支跳转语句进行常量传播后,得到常量传播的优化语句后,对该常量传播的优化函数进行分支跳转,得到分支跳转对应的语句:执行代码段2。因此,在编译期已知/>,则不会生成分支跳转语句,代码将直接执行代码段2,代码段1会被编译器删除。
由上述可知,通过将静态参数的参数值传播至算子相关的各函数,能够将静态参数相关的计算表达式与控制表达式转化成其结果值,消除了无用分支,即在最大程度上减少算子中的标量计算指令以及标量控制指令以及分支跳转指令等,从而,能够得到优化后的算子可执行文件,即得到更优化的特化算子可执行文件。
示例性地,计算机设备在获取了特化算子对应的至少一个静态参数的参数值后,计算机设备通过常量传播优化,将特化算子对应的每个静态参数的参数值传递到特化算子中与每个静态参数相关的函数中,得到至少一个常量传播优化后的函数。计算机设备根据常量传播优化后的函数,确定对应的预设优化方式,并根据至少一个静态参数的参数值和对应的预设优化方式,对常量传播优化后的函数进行优化,得到特化算子可执行文件。
例如,在用于实现文字识别的深度神经网络模型中,包括层归一化对应的运算节点,该运算节点对应的原始算子存在静态参数,在获取了对应的特化算子后,特化算子可执行文件中的指令数量减少9.17%,算子运行效率提升24%,很显然,特化算子可执行文件的运行能够提高对应运算节点的运行效率。
在本实施例中,通过将特化算子对应的静态参数的参数值传递到特化算子中与静态参数相关的函数中;根据参数值,消除特化算子中与静态参数相关的处理指令,得到特化算子可执行文件。这样,提高了特化算子的运行效率,进而,提高了整个深度神经网络模型的运行效率。
在一些实施例中,运行深度神经网络模型中的各运算节点对应的可执行文件,包括:若深度神经网络模型中的运算节点对应的算子参数中仅包括静态参数,则根据对应的特化算子可执行文件执行运算节点对应的子任务;若深度神经网络模型中的运算节点对应的算子参数中包括静态参数与动态参数,则根据对应的特化算子可执行文件与动态参数执行运算节点对应的子任务;若深度神经网络模型中的运算节点对应的算子参数中仅包括动态参数,则根据对应的原始算子可执行文件执行运算节点对应的子任务。
可选地,计算机设备在得到了各运算节点对应的可执行文件后,通过计算机设备的主处理器下发各运算节点对应的可执行文件至计算机设备的硬件平台。对于深度神经网络模型中的每个运算节点,在该硬件平台执行到该运算节点时,若该运算节点对应的算子参数中仅包括静态参数,则根据对应的特化算子可执行文件执行运算节点对应的子任务。若该运算节点对应的算子参数中包括静态参数与动态参数,则根据对应的特化算子可执行文件与动态参数执行运算节点对应的子任务;若该运算节点对应的算子参数中仅包括动态参数,则根据对应的原始算子可执行文件执行运算节点对应的子任务。
示例性地,计算机设备在得到了各运算节点对应的可执行文件后,计算机设备根据计算流图和硬件平台的属性信息,确定任务流参数。计算机设备根据任务流参数和该深度神经网络中的动态参数,确定执行参数。通过计算机设备的主处理器下发各运算节点对应的可执行文件和该执行参数至计算机设备的硬件平台。该硬件平台根据该任务流参数,确定当前运行的运算节点,若该当前运行的运算节点对应的算子参数中仅包括静态参数,则根据对应的特化算子可执行文件执行该当前运行的运算节点对应的子任务。若该当前运行的运算节点对应的算子参数中包括静态参数与动态参数,则根据对应的特化算子可执行文件与动态参数执行当前运行的运算节点对应的子任务。若该当前运行的运算节点对应的算子参数中仅包括动态参数,则根据对应的原始算子可执行文件执行当前运行的运算节点对应的子任务,直至运行完最后一个运算节点对应的子任务为止。
在本实施例中,若深度神经网络模型中的运算节点对应的算子参数中仅包括静态参数,则根据对应的特化算子可执行文件执行运算节点对应的子任务。若深度神经网络模型中的运算节点对应的算子参数中包括静态参数与动态参数,则根据对应的特化算子可执行文件与动态参数联合执行运算节点对应的子任务。基于此,若该运算节点对应的算子参数中存在静态参数,能够基于更优化的特化算子可执行文件,减少运算时间,提高该运算节点的运行效率,还减少了该运算节点对应的数据下发,提高了算子下发效率。若深度神经网络模型中的运算节点对应的算子参数中仅包括动态参数,则根据对应的原始算子可执行文件直接执行运算节点对应的子任务。基于此,由于存在特化算子,因此,在对每个运算节点进行运行时,首先校验该运算节点对应的算子参数中是否包括静态参数。一旦校验到存在静态参数,根据对应的特化算子可执行文件,能够相应减少该运算节点的运算时间,确保了特化算子的运行效率,从整体上,也减少了深度神经网络模型的整体运行时间。此外,相关技术中在下发各运算节点对应的可执行文件至硬件平台时,不仅会下发所有动态参数,还会下发所有静态参数。而本申请中由于静态参数已经通过参数静态化表达下沉至相应的原始算子内部,无需将静态参数再次下发,从而,节省了下发的数据量,节省了下发时间。
本申请还提供一种应用场景,该应用场景应用上述的深度神经网络模型的运行方法。具体地,该深度神经网络模型的运行方法在该应用场景的应用例如:在文字识别的场景中,在预先得到了训练好的、且用于实现文字识别业务的深度神经网络模型之后,需要将该深度神经网络模型部署于相关的设备中,通过该设备来运行深度神经网络模型,以实现文字识别。基于此,为了确保该深度神经网络模型的运行效率,可以采用本申请的方法提高该深度神经网络模型的运行效率。具体地,获取深度神经网络模型中的各运算节点;从算子库中确定各运算节点分别对应的原始算子;若原始算子对应的算子参数中包括静态参数,则根据静态参数对原始算子进行参数静态化表达,得到对应的特化算子,编译特化算子,得到特化算子可执行文件;运行深度神经网络模型中的各运算节点对应的可执行文件,可执行文件包括特化算子可执行文件。这样,通过对具备静态优化表达的特化算子进行编译,能够得到更优化的可执行文件,以减少特化算子运行的时间,确保了特化算子的运行效率,进而,减少了深度神经网络模型的整体运行时间,也就提高了深度神经网络模型运行效率。
当然并不局限于此,本申请提供的深度神经网络模型的运行方法还可以应用在其他应用场景中,例如,在图像处理的场景,为了利用用于实现图像处理业务的深度神经网络模型来进行图像处理,可以采用本申请实施提供的深度神经网络模型的运行方法,实现用于实现图像处理业务的深度神经网络模型的高效运行。
上述应用场景仅为示意性的说明,可以理解,本申请各实施例所提供的深度神经网络模型的运行方法的应用不局限上述场景,例如,音视频处理的场景、自动驾驶的场景、增强现实的场景等,具体不作限定。
在一个具体的实施例中,如图7所示,为一个实施例中模型运行的示意图。实施主体为计算机设备,计算机设备包括主处理器和硬件平台。深度神经网络模型的运行分为三个阶段,分别是优化阶段、任务下发阶段、执行阶段。可选地,在主处理器获取到用于实现目标业务的深度神经网络模型之后,主处理器首先进行计算流图获取的子阶段,得到各运算节点。然后,主处理器根据各运算节点,进行算子选择的子阶段,确定各运算节点分别对应的原始算子。若主处理器校验到原始算子对应的算子参数中存在静态参数,则主处理器基于该原始算子的静态参数,进行参数静态化表达的子阶段,得到对应的特化算子。主处理器基于特化算子,进行特化算子编译的子阶段,得到特化算子可执行文件。主处理器根据各运算节点对应的可执行文件(该可执行文件包括特化算子可执行文件和原始可执行文件),进行任务下发阶段,将各运算节点对应的可执行文件下发至硬件平台,硬件平台通过运行各运算节点对应的可执行文件执行该深度神经网络模型。
具体地实现过程如图8所示,为另一个实施例中深度神经网络模型的运行方法的流程示意图。具体如下:
第1步(获取深度神经网络模型):主处理器获取用于实现目标业务的深度神经网络模型。
第2步(确定计算流图):主处理器对深度神经网络模型进行图编译,确定深度神经网络模型的计算流图,计算流图包括深度神经网络模型中的各运算节点以及各运算节点的运算参数和节点属性。
第3步(选择原始算子):对于每个运算节点,主处理器获取运算节点对应的运算参数和节点属性。根据运算节点对应的节点属性,确定与运算节点匹配的算子类型。从算子库中筛选出属于算子类型的多个原始算子,算子类型的多个原始算子中的每个原始算子对应不同的算子参数。将运算节点对应的运算参数与多个原始算子中的每个原始算子对应的算子参数进行匹配,根据匹配结果从多个原始算子中确定与运算节点对应的原始算子。算子库中包括多个原始算子,这多个原始算子均是与该深度神经网络模型相关的算子,不是与其他深度神经网络模型相关的算子,当然,算子库还包括其他神经网络模型的算子。
第4步(确定特化算子):主处理器根据各运算节点分别对应的原始算子,在主处理器生成与各原始算子对应的模拟子任务下发指令,模拟子任务下发指令用于模拟运行深度神经网络模型。获取模拟子任务下发指令,根据模拟子任务下发指令提取每个原始算子对应的算子参数,检测算子参数中是否存在静态参数。对于各运算节点对应的原始算子,若原始算子对应的算子参数中包括静态参数,则根据原始算子的算子类型与静态参数,生成特化算子名。若各运算节点对应的原始算子中,存在相应的特化算子名相同的多个原始算子,则对相应的特化算子名相同的多个原始算子进行去重处理。对于去重后的得到的每个原始算子,确定该原始算子包括的静态参数的参数值。将原始算子的算子参数中的静态参数赋值为参数值,得到与原始算子对应的特化算子。
第5步(获取特化算子可执行文件):主处理器将特化算子对应的静态参数的参数值传递到特化算子中与静态参数相关的函数中。根据参数值,消除特化算子中与静态参数相关的处理指令,得到特化算子可执行文件。若原始算子对应的算子参数中不包括静态参数,则直接编译原始算子,得到原始算子可执行文件。
第6步(优化算子库):主处理器根据特化算子、不包含静态参数的原始算子和该原始算子的原始算子可执行文件,确定优化后的算子库。需要说明的是,优化后的算子库仅存储关于该深度神经网络模型的算子(即该特化算子和不包含静态参数的原始算子),而不会存储其他深度神经网络模型的算子。
第7步(下发任务):主处理器下发关于运行深度神经网络模型的各运算节点的执行文件至硬件平台,执行文件至少包括特化算子可执行文件,还可包括和原始算子可执行文件。
第8步(运行深度神经网络模型):若深度神经网络模型中的运算节点对应的算子参数中仅包括静态参数,则硬件平台根据对应的特化算子可执行文件执行运算节点对应的子任务。若深度神经网络模型中的运算节点对应的算子参数中包括静态参数与动态参数,则硬件平台根据对应的特化算子可执行文件与动态参数执行运算节点对应的子任务。若深度神经网络模型中的运算节点对应的算子参数中仅包括动态参数,则硬件平台根据对应的原始算子可执行文件执行运算节点对应的子任务。
在本实施例中,通过获取深度神经网络模型中的各运算节点;从算子库中确定各运算节点分别对应的原始算子。若原始算子对应的算子参数中包括静态参数,则根据静态参数对原始算子进行参数静态化表达,得到对应的特化算子,也即是,在运行深度神经网络模型之前,预先筛选出包含静态参数的原始算子,并根据静态参数对原始算子进行参数静态化表达,对该原始算子的表达进行了优化,得到了对应的特化算子。并且,提前编译特化算子,得到特化算子可执行文件,运行深度神经网络模型中的各运算节点对应的可执行文件,可执行文件至少包括特化算子可执行文件。也即是,在进行运行深度神经网络模型之前,由于特化算子是通过对包含静态参数的原始算子进行静态参数优化表达得到的,因此,通过对具备静态优化表达的特化算子进行编译,能够得到更优化的可执行文件,以减少特化算子运行的时间,确保了特化算子的运行效率,进而,减少了深度神经网络模型的整体运行时间,也就提高了深度神经网络模型运行效率。此外,由于预先进行了对特化算子进行编译,得到了数据量减少的特化算子可执行文件,基于此,能够减小了下发的数据量,还能提高数据下发效率。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的深度神经网络模型的运行方法的深度神经网络模型的运行装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个深度神经网络模型的运行装置实施例中的具体限定可以参见上文中对于深度神经网络模型的运行方法的限定,在此不再赘述。
在一个实施例中,如图9所示,提供了一种深度神经网络模型的运行装置900,包括:节点获取模块902、算子确定模块904、算子编译模块906和运行模块908,其中:
节点获取模块902,用于获取深度神经网络模型中的各运算节点;
算子确定模块904,用于从算子库中确定各运算节点分别对应的原始算子;
算子编译模块906,用于若原始算子对应的算子参数中包括静态参数,则根据静态参数对原始算子进行参数静态化表达,得到对应的特化算子,编译特化算子,得到特化算子可执行文件;
运行模块908,用于运行深度神经网络模型中的各运算节点对应的可执行文件,可执行文件包括特化算子可执行文件。
在一些实施例中,算子编译模块906,还用于若原始算子对应的算子参数中不包括静态参数,则直接编译原始算子,得到原始算子可执行文件;运行模块908,还用于运行深度神经网络模型中的各运算节点对应的可执行文件,可执行文件包括特化算子可执行文件和原始算子可执行文件。
在一些实施例中,节点获取模块902,用于获取深度神经网络模型;对深度神经网络模型进行图编译,得到深度神经网络模型的计算流图,计算流图包括深度神经网络模型中的各运算节点以及各运算节点的运算参数和节点属性。
在一些实施例中,算子确定模块904,用于对于每个运算节点,获取运算节点对应的运算参数和节点属性;根据运算节点对应的运算参数和节点属性,从算子库中确定分别与各运算节点对应的原始算子。
在一些实施例中,算子确定模块904,用于根据运算节点对应的节点属性,确定与运算节点匹配的算子类型;从算子库中筛选出属于算子类型的多个原始算子,算子类型的多个原始算子中的每个原始算子对应不同的算子参数;将运算节点对应的运算参数与多个原始算子中的每个原始算子对应的算子参数进行匹配,根据匹配结果从多个原始算子中确定与运算节点对应的原始算子。
在一些实施例中,装置还包括静态参数检测模块,静态参数检测模块,用于根据各运算节点分别对应的原始算子,在主处理器生成与各原始算子对应的模拟子任务下发指令,模拟子任务下发指令用于模拟运行深度神经网络模型;获取模拟子任务下发指令,根据模拟子任务下发指令提取每个原始算子对应的算子参数,检测算子参数中是否存在静态参数。
在一些实施例中,装置还包括算子去重模块,算子去重模块,用于对于各运算节点对应的原始算子,若原始算子对应的算子参数中包括静态参数,则根据原始算子的算子类型与静态参数,生成特化算子名;若各运算节点对应的原始算子中,存在相应的特化算子名相同的多个原始算子,则对相应的特化算子名相同的多个原始算子进行去重处理。算子编译模块,用于对于去重后的得到的每个原始算子,根据静态参数对原始算子进行参数静态化表达,得到对应的特化算子。
在一些实施例中,算子编译模块906,用于确定静态参数的参数值;将原始算子的算子参数中的静态参数赋值为参数值,得到与原始算子对应的特化算子。
在一些实施例中,算子编译模块906,用于将特化算子对应的静态参数的参数值传递到特化算子中与静态参数相关的函数中;根据参数值,消除特化算子中与静态参数相关的处理指令,得到特化算子可执行文件。
在一些实施例中,运行模块908,用于若深度神经网络模型中的运算节点对应的算子参数中仅包括静态参数,则根据对应的特化算子可执行文件执行运算节点对应的子任务;若深度神经网络模型中的运算节点对应的算子参数中包括静态参数与动态参数,则根据对应的特化算子可执行文件与动态参数执行运算节点对应的子任务;若深度神经网络模型中的运算节点对应的算子参数中仅包括动态参数,则根据对应的原始算子可执行文件执行运算节点对应的子任务。
上述深度神经网络模型的运行装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,也可以是终端,其内部结构图可以如图10所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种深度神经网络模型的运行方法。
本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random AccessMemory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (13)
1.一种深度神经网络模型的运行方法,其特征在于,所述方法包括:
获取深度神经网络模型中的各运算节点;
从算子库中确定各运算节点分别对应的原始算子;
若所述原始算子对应的算子参数中包括静态参数,则根据所述静态参数对所述原始算子进行参数静态化表达,得到对应的特化算子,编译所述特化算子,得到特化算子可执行文件;
运行所述深度神经网络模型中的各运算节点对应的可执行文件,所述可执行文件包括所述特化算子可执行文件。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述原始算子对应的算子参数中不包括静态参数,则直接编译所述原始算子,得到原始算子可执行文件;
所述运行所述深度神经网络模型中的各运算节点对应的可执行文件,包括:
运行所述深度神经网络模型中的各运算节点对应的可执行文件,所述可执行文件包括所述特化算子可执行文件和所述原始算子可执行文件。
3.根据权利要求1所述的方法,其特征在于,所述获取深度神经网络模型中的各运算节点,包括:
获取深度神经网络模型;
对所述深度神经网络模型进行图编译,得到所述深度神经网络模型的计算流图,所述计算流图包括所述深度神经网络模型中的各运算节点以及各运算节点的运算参数和节点属性。
4.根据权利要求1所述的方法,其特征在于,所述从算子库中确定各运算节点分别对应的原始算子,包括:
对于每个运算节点,获取所述运算节点对应的运算参数和节点属性;
根据所述运算节点对应的运算参数和节点属性,从算子库中确定分别与各所述运算节点对应的原始算子。
5.根据权利要求4所述的方法,其特征在于,所述根据所述运算节点对应的运算参数和节点属性,从算子库中确定分别与各所述运算节点对应的原始算子,包括:
根据所述运算节点对应的节点属性,确定与所述运算节点匹配的算子类型;
从所述算子库中筛选出属于所述算子类型的多个原始算子,所述算子类型的多个原始算子中的每个原始算子对应不同的算子参数;
将所述运算节点对应的运算参数与所述多个原始算子中的每个原始算子对应的算子参数进行匹配,根据匹配结果从所述多个原始算子中确定与所述运算节点对应的原始算子。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据各运算节点分别对应的原始算子,在主处理器生成与各所述原始算子对应的模拟子任务下发指令,所述模拟子任务下发指令用于模拟运行所述深度神经网络模型;
获取所述模拟子任务下发指令,根据所述模拟子任务下发指令提取每个原始算子对应的算子参数,检测所述算子参数中是否存在静态参数。
7.根据权利要求1所述的方法,其特征在于,所述根据所述静态参数对所述原始算子进行参数静态化表达,得到对应的特化算子之前,所述方法还包括:
对于各运算节点对应的原始算子,若所述原始算子对应的算子参数中包括静态参数,则根据所述原始算子的算子类型与所述静态参数,生成特化算子名;
若各运算节点对应的原始算子中,存在相应的特化算子名相同的多个原始算子,则对所述相应的特化算子名相同的多个原始算子进行去重处理;
所述根据所述静态参数对所述原始算子进行参数静态化表达,得到对应的特化算子,包括:
对于去重后的得到的每个原始算子,根据所述静态参数对所述原始算子进行参数静态化表达,得到对应的特化算子。
8.根据权利要求1所述的方法,其特征在于,所述根据所述静态参数对所述原始算子进行参数静态化表达,得到对应的特化算子,包括:
确定所述静态参数的参数值;
将所述原始算子的算子参数中的所述静态参数赋值为所述参数值,得到与所述原始算子对应的特化算子。
9.根据权利要求1所述的方法,其特征在于,所述编译所述特化算子,得到特化算子可执行文件,包括:
将所述特化算子对应的静态参数的参数值传递到所述特化算子中与所述静态参数相关的函数中;
根据所述参数值,消除所述特化算子中与所述静态参数相关的处理指令,得到所述特化算子可执行文件。
10.根据权利要求1所述的方法,其特征在于,所述运行所述深度神经网络模型中的各运算节点对应的可执行文件,包括:
若所述深度神经网络模型中的运算节点对应的算子参数中仅包括静态参数,则根据对应的特化算子可执行文件执行所述运算节点对应的子任务;
若所述深度神经网络模型中的运算节点对应的算子参数中包括静态参数与动态参数,则根据对应的特化算子可执行文件与所述动态参数执行所述运算节点对应的子任务;
若所述深度神经网络模型中的运算节点对应的算子参数中仅包括动态参数,则根据对应的原始算子可执行文件执行所述运算节点对应的子任务。
11.一种深度神经网络模型的运行装置,其特征在于,所述装置包括:
节点获取模块,用于获取深度神经网络模型中的各运算节点;
算子确定模块,用于从算子库中确定各运算节点分别对应的原始算子;
算子编译模块,用于若所述原始算子对应的算子参数中包括静态参数,则根据所述静态参数对所述原始算子进行参数静态化表达,得到对应的特化算子,编译所述特化算子,得到特化算子可执行文件;
运行模块,用于运行所述深度神经网络模型中的各运算节点对应的可执行文件,所述可执行文件包括所述特化算子可执行文件。
12.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至10中任一项所述的方法的步骤。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至10中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311030243.5A CN116755714B (zh) | 2023-08-16 | 2023-08-16 | 深度神经网络模型的运行方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311030243.5A CN116755714B (zh) | 2023-08-16 | 2023-08-16 | 深度神经网络模型的运行方法、装置、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116755714A true CN116755714A (zh) | 2023-09-15 |
CN116755714B CN116755714B (zh) | 2023-11-10 |
Family
ID=87961208
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311030243.5A Active CN116755714B (zh) | 2023-08-16 | 2023-08-16 | 深度神经网络模型的运行方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116755714B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200293295A1 (en) * | 2018-06-20 | 2020-09-17 | Huawei Technologies Co., Ltd. | Method and System of Intelligent Iterative Compiler Optimizations Based on Static and Dynamic Feedback |
CN113312175A (zh) * | 2021-04-27 | 2021-08-27 | 北京迈格威科技有限公司 | 一种算子确定、运行方法及装置 |
CN113553039A (zh) * | 2020-04-23 | 2021-10-26 | 杭州海康威视数字技术股份有限公司 | 算子的可执行代码的生成方法及装置 |
CN113867950A (zh) * | 2021-09-26 | 2021-12-31 | 浪潮电子信息产业股份有限公司 | 一种统一异构计算系统,一种ai加速平台 |
CN114385182A (zh) * | 2021-12-17 | 2022-04-22 | 飞腾信息技术有限公司 | 一种数据处理方法、装置、设备及计算机存储介质 |
US20220129289A1 (en) * | 2019-07-03 | 2022-04-28 | Anhui Cambricon Information Technology Co., Ltd. | Deep learning algorithm compiling method, device, and related product |
CN115809063A (zh) * | 2022-12-05 | 2023-03-17 | 星环信息科技(上海)股份有限公司 | 一种存储过程编译方法、系统、电子设备和存储介质 |
-
2023
- 2023-08-16 CN CN202311030243.5A patent/CN116755714B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200293295A1 (en) * | 2018-06-20 | 2020-09-17 | Huawei Technologies Co., Ltd. | Method and System of Intelligent Iterative Compiler Optimizations Based on Static and Dynamic Feedback |
US20220129289A1 (en) * | 2019-07-03 | 2022-04-28 | Anhui Cambricon Information Technology Co., Ltd. | Deep learning algorithm compiling method, device, and related product |
CN113553039A (zh) * | 2020-04-23 | 2021-10-26 | 杭州海康威视数字技术股份有限公司 | 算子的可执行代码的生成方法及装置 |
CN113312175A (zh) * | 2021-04-27 | 2021-08-27 | 北京迈格威科技有限公司 | 一种算子确定、运行方法及装置 |
CN113867950A (zh) * | 2021-09-26 | 2021-12-31 | 浪潮电子信息产业股份有限公司 | 一种统一异构计算系统,一种ai加速平台 |
CN114385182A (zh) * | 2021-12-17 | 2022-04-22 | 飞腾信息技术有限公司 | 一种数据处理方法、装置、设备及计算机存储介质 |
CN115809063A (zh) * | 2022-12-05 | 2023-03-17 | 星环信息科技(上海)股份有限公司 | 一种存储过程编译方法、系统、电子设备和存储介质 |
Non-Patent Citations (1)
Title |
---|
FREE1993: "神经网络编译器-常量折叠", pages 1 - 3, Retrieved from the Internet <URL:https://blog.csdn.net/free1993/article/details/111480268> * |
Also Published As
Publication number | Publication date |
---|---|
CN116755714B (zh) | 2023-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111242321B (zh) | 一种数据处理方法及相关产品 | |
US20220391678A1 (en) | Neural network model processing method and apparatus, computer device, and storage medium | |
EP4036724A1 (en) | Method for splitting neural network model by using multi-core processor, and related product | |
TW202026858A (zh) | 在深度神經網路中利用啟動稀疏性 | |
US20220318945A1 (en) | Optimizing compilation of shaders | |
CN112579063A (zh) | 一种用于深度学习编译器中探索优化空间的加速方法 | |
CN114598631B (zh) | 面向神经网络计算的分布式数据路由的建模方法和装置 | |
CN113703775A (zh) | 一种编译方法、装置、设备及存储介质 | |
CN112199086A (zh) | 自动编程控制系统、方法、装置、电子设备及存储介质 | |
US20210295158A1 (en) | End-to-end optimization | |
US11630986B2 (en) | Graph conversion method | |
CN117170685B (zh) | 一种数据处理方法、装置、设备及介质 | |
WO2023093689A1 (zh) | 一种计算图优化方法、装置及设备 | |
JP7085600B2 (ja) | 画像間の類似度を利用した類似領域強調方法およびシステム | |
CN108875914B (zh) | 对神经网络数据进行预处理和后处理的方法和装置 | |
CN114492765A (zh) | 一种模型优化方法、装置、设备及存储介质、程序产品 | |
CN114462582A (zh) | 基于卷积神经网络模型的数据处理方法及装置、设备 | |
CN113672232A (zh) | 程序编译方法和装置 | |
Szul et al. | Productivity frameworks in big data image processing computations-creating photographic mosaics with Hadoop and Scalding | |
Ledur et al. | A high-level dsl for geospatial visualizations with multi-core parallelism support | |
CN115129460A (zh) | 获取算子硬件时间的方法、装置、计算机设备和存储介质 | |
CN116755714B (zh) | 深度神经网络模型的运行方法、装置、设备和存储介质 | |
CN110955380B (zh) | 访存数据生成方法、存储介质、计算机设备和装置 | |
WO2023030507A1 (zh) | 编译优化方法、装置、计算机设备以及存储介质 | |
CN111860824A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40094421 Country of ref document: HK |