CN117892836A - 支持多后端计算硬件的深度学习机器指令生成方法及装置 - Google Patents
支持多后端计算硬件的深度学习机器指令生成方法及装置 Download PDFInfo
- Publication number
- CN117892836A CN117892836A CN202311725023.4A CN202311725023A CN117892836A CN 117892836 A CN117892836 A CN 117892836A CN 202311725023 A CN202311725023 A CN 202311725023A CN 117892836 A CN117892836 A CN 117892836A
- Authority
- CN
- China
- Prior art keywords
- graph
- hardware
- deep learning
- operator
- sub
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 31
- 238000013135 deep learning Methods 0.000 title claims abstract description 28
- 238000004364 calculation method Methods 0.000 claims abstract description 23
- 238000012545 processing Methods 0.000 claims description 17
- 230000008569 process Effects 0.000 claims description 11
- 238000003860 storage Methods 0.000 claims description 8
- 230000003068 static effect Effects 0.000 claims description 4
- 230000006870 function Effects 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000004075 alteration Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013136 deep learning model Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- 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)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种支持多后端计算硬件的深度学习机器指令生成方法及装置,所述方法包括以下步骤:获取深度学习模型程序,将所述深度学习模型程序转换为一系列计算图;将各所述计算图与目标硬件支持信息相对比,判断计算图中是否存在目标硬件不支持的算子,若是,则对当前计算图进行分割,获得二级子图,若否,则当前计算图直接作为二级子图,各二级子图上标记有对应的子图类型;基于各二级子图上的标记的子图类型,生成相应的算子代码;连接各算子代码生成完整的机器指令集合。与现有技术相比,本发明具有兼容多种硬件场景等优点。
Description
技术领域
本发明涉及深度学习框架处理技术领域,尤其是涉及一种支持多后端计算硬件的深度学习机器指令生成方法及装置。
背景技术
当今主流的深度学习框架如PyTorch、TensorFlow等在编译层面主要分为两个阶段:图捕获和算子生成。具体地,通过将用户编写的深度学习程序转换并捕获为计算图,图中节点为基本的深度学习算子,这些算子如乘法、卷积等承担了具体的计算功能。进一步地在此基础上将计算图进行一些优化和变换,然后将算子的具体执行部分嵌入到计算图中,便可以在硬件上运行深度学习模型了。通常算子的具体执行部分由硬件厂商提供实现或支持,这些硬件厂商如NVIDIA、燧原等会提供一套实现好的算子库供用户直接调用,也同时会提供一套硬件相关的编译器,可以将用户自己编写的算子实现代码编译成可以由硬件执行的程序。然而不同的硬件厂商所提供的算子库中所包含的算子不尽相同,有些厂商的编译器甚至可能无法成功编译出用户编写的算子程序,通常可以把这些硬件厂商所支持的算子集合成为硬件支持能力,包括算子库支持和硬件编译器支持两部分。
由于NVIDIA所提供的硬件支持能力最为完善,可以覆盖当今的所有算子,当前工业界所有主流的深度学习框架均以NVIDIA作为默认的后端,基本上并没有考虑硬件支持能力有所不足的情况,默认所捕获到的计算图中的算子可以被硬件所支持。而实际上,这一假设并不是符合所有的现实情况,较多的中小厂商所生成的深度学习计算硬件所配套的支持并不完善,经常出现某些算子无法支持的情况,很多时候需要自己针对这些主流的深度学习框架进行适配和更改,工作上较为繁琐。有鉴于此,需要提出一套整体性的设计和解决方案,可以较好地处应对此种情况。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种兼容多种硬件场景的支持多后端计算硬件的深度学习机器指令生成方法及装置。
本发明的目的可以通过以下技术方案来实现:
一种支持多后端计算硬件的深度学习机器指令生成方法,包括以下步骤:
获取深度学习模型程序,将所述深度学习模型程序转换为一系列计算图;
将各所述计算图与目标硬件支持信息相对比,判断计算图中是否存在目标硬件不支持的算子,若是,则对当前计算图进行分割,获得二级子图,若否,则当前计算图直接作为二级子图,各二级子图上标记有对应的子图类型;
基于各二级子图上的标记的子图类型,生成相应的算子代码;
连接各算子代码生成完整的机器指令集合。
进一步地,将所述深度学习模型程序以动态、静态或混合动静态的形式转换为所述计算图。
进一步地,所述目标硬件支持信息包括用于描述目标硬件不支持算子的列表。
进一步地,所述二级子图的生成过程包括以下步骤:
遍历当前计算图中的各节点,将节点所使用的算子与所述目标硬件支持信息进行匹配,判断当前所处节点的算子是否为目标硬件不支持的算子,将连续的、由相同硬件支持的节点分割至同一张二级子图中。
进一步地,所述生成相应的算子代码的过程包括:
基于各二级子图上的标记的子图类型生成相应的处理路径;
基于所述处理路径分发各二级子图,调用对应的后端硬件或CPU算子库生成所述算子代码。
本发明还提供一种计算机可读存储介质,包括供电子设备的一个或多个处理器执行的一个或多个程序,所述一个或多个程序包括用于执行如上所述支持多后端计算硬件的深度学习机器指令生成方法的指令。
本发明还提供一种支持多后端计算硬件的深度学习机器指令生成装置,包括:
图分割器,用于获取由深度学习模型程序转换的一系列计算图,将各所述计算图与目标硬件支持信息相对比,判断计算图中是否存在目标硬件不支持的算子,若是,则对当前计算图进行分割,获得二级子图,若否,则当前计算图直接作为二级子图,各二级子图上标记有对应的子图类型;
代码生成调度器,用于基于各二级子图上的标记的子图类型,生成相应的算子代码,连接各算子代码生成完整的机器指令集合。
进一步地,所述目标硬件支持信息包括用于描述目标硬件不支持算子的列表。
进一步地,所述二级子图的生成过程包括以下步骤:
遍历当前计算图中的各节点,将节点所使用的算子与所述目标硬件支持信息进行匹配,判断当前所处节点的算子是否为目标硬件不支持的算子,将连续的、由相同硬件支持的节点分割至同一张二级子图中。
进一步地,所述生成相应的算子代码的过程包括:
基于各二级子图上的标记的子图类型生成相应的处理路径;
基于所述处理路径分发各二级子图,调用对应的后端硬件或CPU算子库生成所述算子代码。
与现有技术相比,本发明具有以下有益效果:
本发明通过对深度学习框架编译流程的图捕获机制进行优化和改良,考虑后端硬件支持能力不一的现实情况,根据后端硬件能力不同对计算图进行二次分割,并分发调度到不同硬件上进行执行,使其可以在多种后端硬件的支持下具有更好的兼容性和执行效率,适用于多种应用场景。
附图说明
图1为本发明的整体技术方案示意图;
图2为本发明从高层次的计算图到分割后的二级子图的转换示意图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。本实施例以本发明技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
当前深度学习框架编译流程中,首先需要通过对用户所编写的模型程序进行分析,并以动态或静态的形式转换成计算图,这些计算图以算子为基本单元,然后再通过直接调用算子库或者依赖于硬件厂商提供的硬件编译器来生成算子的执行程序。在此流程中存在着部分算子不被相关的硬件厂商所支持的情况,便需要针对这些不被支持的算子进行额外的处理。本发明即是为了解决上述技术问题。
本实施例中,提供一种支持多后端计算硬件的深度学习机器指令生成方法,如图1所示,包括以下步骤:
S1、获取深度学习模型程序,将所述深度学习模型程序转换为一系列计算图。
在具体实施方式中,可以将深度学习模型程序以动态、静态或混合动静态的形式转换为所述计算图。更具体地,可以采用JIT方式、AOT方式等进行翻译优化转换。计算图中节点为基本的深度学习算子,这些算子如乘法、卷积等承担了具体的计算功能。
S2、将各所述计算图与目标硬件支持信息相对比,判断计算图中是否存在目标硬件不支持的算子,若是,则对当前计算图进行分割,获得二级子图,若否,则当前计算图直接作为二级子图,各二级子图上标记有对应的子图类型。该子图类型表征了该子图是否能被后端硬件支持或需要由支持更多算子的算子库执行。
在具体实施方式中,目标硬件支持信息包括用于描述目标硬件不支持算子的列表。该列表可以视为一个黑名单。当图分割器进行查询比照的时候,它会用当前节点算子的算子名称来匹配此列表中的算子名称,一旦命中,则说明此算子不被支持。这样便可以简要清晰地描述了一种后端硬件的限制。本实施例中,目标硬件可以为多种硬件,实现多种硬件的共同工作。
在具体实施方式中,二级子图的生成是:通过遍历当前计算图中的各节点,将节点所使用的算子与所述目标硬件支持信息进行匹配,判断当前所处节点的算子是否为目标硬件不支持的算子,将连续的、由相同硬件支持的节点分割至同一张二级子图中。
本实施例中,默认CPU版本的算子库可以支持所有算子,按CPU和目标硬件的硬件支持能力进行计算图的分割,实现任务完成度和处理效率的平衡。具体地,通过对获得的计算图进行节点遍历,检查每个节点所使用的算子,并与目标硬件支持能力的信息作对照。一旦发现当前所处的节点算子不被支持,则在此处对计算图进行分割。首先检查其之前的子图是否与其属于同一支持硬件,如果相同,便将此节点收集到之前相邻的子图,该子图标记有可支持的后端硬件,如若不同,此不被支持的节点单独划为一张二级子图,标记为即将分发到CPU上执行,同样的,连续的、不能被后端硬件支持的节点也划入同一张二级子图中,然后继续向后处理剩余的节点。重复此过程,直到完成所有节点遍历。
参考图2所示为从高层次的计算图到分割后的二级子图的转换结果。图中A、B、C、D、E、F代表了不同的算子,其中B和C算子不被后端硬件所支持,标记为CPU处理的子图类型。
S3、基于各二级子图上的标记的子图类型,生成相应的算子代码。
每个二级子图包含若干个算子,每个算子可以由其可支持硬件带有的算子库提供实现或者整个二级子图由相应的硬件编译器将这些算子一批次生成对应的机器指令。
在具体实施方式中,根据不同子图所标记的不同子图类型,分别将它们分发到不同的处理路径上去。例如将硬件不支持的子图直接处理为调用CPU版算子库的机器代码片段,后端支持的子图处理为调用后端硬件版的算子库的代码片段或直接调用硬件编译器动态生成算子代码并调用。这些不同的代码片段便在机器代码的层面上分别对应了不同的二级子图。
S4、连接各算子代码生成完整的机器指令集合。
在具体实施方式中,连接步骤S3生成的代码片段,将这些不同二级子图对应的机器代码的执行流串联到一起,最终便生成了完整的计算图对应的机器指令集合。
上述方法如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
在另一实施例中,提供一种支持多后端计算硬件的深度学习机器指令生成装置,包括图分割器和代码生成调度器,其中,与硬件能力相关的图分割器用于获取由深度学习模型程序转换的一系列计算图,深度学习模型程序由与硬件能力无关的图捕获器进行子图转换,将各所述计算图与目标硬件支持信息相对比,判断计算图中是否存在目标硬件不支持的算子,若是,则对当前计算图进行分割,获得二级子图,若否,则当前计算图直接作为二级子图,各二级子图上标记有对应的子图类型;代码生成调度器用于基于各二级子图上的标记的子图类型,生成相应的算子代码,连接各算子代码生成完整的机器指令集合。上述装置的整体实施方程包括:通过图分割器将接收到的原来的计算图分割成二级子图,每个二级子图包含若干个算子,每个算子可以由其可支持硬件带有的算子库提供实现或者整个二级子图由相应的硬件编译器将这些算子一批次生成对应的机器指令;通过代码生成调度器基于每个二级子图上的标记信息将各二级子图分发到对应硬件上进行相应处理。
在基于深度学习框架编译流程的基础上,上述装置将硬件能力相关的图分割器、硬件支持信息数据以及代码生成调度器有机地嵌入其中,实现对深度学习模型程序的更高效、可靠的处理。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本发明实施例中的方案可以采用各种计算机语言实现,例如,面向对象的程序设计语言Java和直译式脚本语言JavaScript等。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种支持多后端计算硬件的深度学习机器指令生成方法,其特征在于,包括以下步骤:
获取深度学习模型程序,将所述深度学习模型程序转换为一系列计算图;
将各所述计算图与目标硬件支持信息相对比,判断计算图中是否存在目标硬件不支持的算子,若是,则对当前计算图进行分割,获得二级子图,若否,则当前计算图直接作为二级子图,各二级子图上标记有对应的子图类型;
基于各二级子图上的标记的子图类型,生成相应的算子代码;
连接各算子代码生成完整的机器指令集合。
2.根据权利要求1所述的支持多后端计算硬件的深度学习机器指令生成方法,其特征在于,将所述深度学习模型程序以动态、静态或混合动静态的形式转换为所述计算图。
3.根据权利要求1所述的支持多后端计算硬件的深度学习机器指令生成方法,其特征在于,所述目标硬件支持信息包括用于描述目标硬件不支持算子的列表。
4.根据权利要求1所述的支持多后端计算硬件的深度学习机器指令生成方法,其特征在于,所述二级子图的生成过程包括以下步骤:
遍历当前计算图中的各节点,将节点所使用的算子与所述目标硬件支持信息进行匹配,判断当前所处节点的算子是否为目标硬件不支持的算子,将连续的、由相同硬件支持的节点分割至同一张二级子图中。
5.根据权利要求1所述的支持多后端计算硬件的深度学习机器指令生成方法,其特征在于,所述生成相应的算子代码的过程包括:
基于各二级子图上的标记的子图类型生成相应的处理路径;
基于所述处理路径分发各二级子图,调用对应的后端硬件或CPU算子库生成所述算子代码。
6.一种计算机可读存储介质,其特征在于,包括供电子设备的一个或多个处理器执行的一个或多个程序,所述一个或多个程序包括用于执行如权利要求1-5任一所述支持多后端计算硬件的深度学习机器指令生成方法的指令。
7.一种支持多后端计算硬件的深度学习机器指令生成装置,其特征在于,包括:
图分割器,用于获取由深度学习模型程序转换的一系列计算图,将各所述计算图与目标硬件支持信息相对比,判断计算图中是否存在目标硬件不支持的算子,若是,则对当前计算图进行分割,获得二级子图,若否,则当前计算图直接作为二级子图,各二级子图上标记有对应的子图类型;
代码生成调度器,用于基于各二级子图上的标记的子图类型,生成相应的算子代码,连接各算子代码生成完整的机器指令集合。
8.根据权利要求7所述的支持多后端计算硬件的深度学习机器指令生成装置,其特征在于,所述目标硬件支持信息包括用于描述目标硬件不支持算子的列表。
9.根据权利要求7所述的支持多后端计算硬件的深度学习机器指令生成装置,其特征在于,所述二级子图的生成过程包括以下步骤:
遍历当前计算图中的各节点,将节点所使用的算子与所述目标硬件支持信息进行匹配,判断当前所处节点的算子是否为目标硬件不支持的算子,将连续的、由相同硬件支持的节点分割至同一张二级子图中。
10.根据权利要求7所述的支持多后端计算硬件的深度学习机器指令生成装置,其特征在于,所述生成相应的算子代码的过程包括:
基于各二级子图上的标记的子图类型生成相应的处理路径;
基于所述处理路径分发各二级子图,调用对应的后端硬件或CPU算子库生成所述算子代码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311725023.4A CN117892836A (zh) | 2023-12-15 | 2023-12-15 | 支持多后端计算硬件的深度学习机器指令生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311725023.4A CN117892836A (zh) | 2023-12-15 | 2023-12-15 | 支持多后端计算硬件的深度学习机器指令生成方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117892836A true CN117892836A (zh) | 2024-04-16 |
Family
ID=90645953
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311725023.4A Pending CN117892836A (zh) | 2023-12-15 | 2023-12-15 | 支持多后端计算硬件的深度学习机器指令生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117892836A (zh) |
-
2023
- 2023-12-15 CN CN202311725023.4A patent/CN117892836A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11442713B2 (en) | Methods and apparatus to improve optimizing loops with predictable recurring memory reads | |
US10268454B2 (en) | Methods and apparatus to eliminate partial-redundant vector loads | |
US7784039B2 (en) | Compiler, compilation method, and compilation program | |
CN108369591B (zh) | 用于缓存和参数化ir的系统和方法 | |
CN113641701B (zh) | 一种数据查询方法、系统、异构加速平台及存储介质 | |
CN110968321B (zh) | 张量计算代码优化方法、装置、设备及介质 | |
US20130139137A1 (en) | Systems and Methods for Customizing Optimization/Transformation/ Processing Strategies | |
CN111104120A (zh) | 神经网络编译方法、系统及相应异构计算平台 | |
Nobre et al. | Use of previously acquired positioning of optimizations for phase ordering exploration | |
US11733981B2 (en) | Methods, systems, articles of manufacture and apparatus to automatically optimize software programs | |
CN113220326A (zh) | 智能合约升级方法及区块链系统 | |
CN106681781A (zh) | 实时计算业务的实现方法和系统 | |
CN117892836A (zh) | 支持多后端计算硬件的深度学习机器指令生成方法及装置 | |
CN116360790A (zh) | 一种基于虚拟机的代码编译方法、装置及执行方法、装置 | |
JP3790707B2 (ja) | プログラム変換方法、これを用いたコンピュータ装置及びプログラム | |
US11573777B2 (en) | Method and apparatus for enabling autonomous acceleration of dataflow AI applications | |
CN107817972B (zh) | 缓存代码处理方法、装置、存储介质及电子设备 | |
CN113220327B (zh) | 智能合约升级方法及区块链系统 | |
CN114385180A (zh) | 一种数据处理方法、装置、设备及计算机存储介质 | |
JP2008250838A (ja) | ソフトウェア生成装置、方法、およびプログラム | |
CN113031952A (zh) | 深度学习模型的执行代码的确定方法、装置及存储介质 | |
CN110543425A (zh) | 一种嵌入式设备的编译与调试方法 | |
CN118331585A (zh) | 一种用于智能芯片识别的编译器后端编译方法、系统、设备及存储介质 | |
CN117055897A (zh) | 代码编译方法、测试方法、装置、电子设备和介质 | |
CN117591122A (zh) | 一种针对申威平台.net运行时的结构体提升优化编译方法、装置、存储介质及设备 |
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 |