CN112529175B - 神经网络的编译方法、系统、计算机存储介质及编译设备 - Google Patents
神经网络的编译方法、系统、计算机存储介质及编译设备 Download PDFInfo
- Publication number
- CN112529175B CN112529175B CN202011224090.4A CN202011224090A CN112529175B CN 112529175 B CN112529175 B CN 112529175B CN 202011224090 A CN202011224090 A CN 202011224090A CN 112529175 B CN112529175 B CN 112529175B
- Authority
- CN
- China
- Prior art keywords
- file
- compiling
- operator
- network
- neural network
- 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.)
- Active
Links
Images
Classifications
-
- 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/08—Learning methods
-
- 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/045—Combinations of networks
Abstract
本发明提供一种神经网络的编译方法、系统、计算机存储介质及编译设备,所述神经网络的编译方法包括:将网络文件翻译为中间表达文件;从性能分析、单节点以及多节点协同角度对所述中间表达文件进行优化;将优化后的中间表达文件生成基于硬件接口的网络模版文件;将所述网络模版文件编译为可执行推理应用。本发明旨在设计并实现一个能够自动根据软硬件信息调节参数、生成代码的编译工具链框架、中间表示以及相应优化算法,使之在目标芯片上计算时,在不改变网络输出结果的同时,在较短的优化时间内获得更高的计算速率、更小的计算时延。且方便用户自行调试、调参。
Description
技术领域
本发明属于神经网络技术领域,涉及一种编译方法,特别是涉及一种神经网络的编译方 法、系统、计算机存储介质及编译设备。
背景技术
如今神经网络的发展极大的推动了机器学习和人工智能及其相关产业的发展,例如人脸 识别、语音识别、在线翻译、自动驾驶等等技术。然而由于神经网络拥有庞大的网络结构和 计算量,延迟大是影响其大规模投入工业生产的主要障碍。因此,如何减小运算时延、提高 神经网络的计算速度,是发展神经网络的一个重要问题。
现有的大多数神经网络编译、优化工具在编译时,采用接收用户提供的网络文件,直接 生成可执行的推理会话的方式,供Python,C++等语言调用。在进行优化时,主要根据预先 制定的针对不同目标硬件以及不同算子的规则,进行前端(算子级优化,包括算子融合,公 共子表达式替换等)与后端(硬件相关优化,如循环展开,向量化等)优化。
现有工具封装度较高,开放给用户的接口有限,造成调试、调参的不便。且优化过程、 详细算法对用户不可见,无法支持用户做进一步优化。其次,现有优化算法灵活性较差,基 于规则的方法导致在前端优化中丢失较大优化空间,且后端针对不同硬件优化可迁移性较差, 需要较多人类专家的介入。
因此,如何提供一种神经网络的编译方法、系统、计算机存储介质及编译设备,以解决 现有技术封装度较高,开放给用户的接口有限,造成调试、调参的不便、优化过程、详细算 法对用户不可见,无法支持用户做进一步优化,优化算法灵活性较差,基于规则的方法导致 在前端优化中丢失较大优化空间,且后端针对不同硬件优化可迁移性较差,需要较多人类专 家的介入等缺陷,实已成为本领域技术人员亟待解决的技术问题。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种神经网络的编译方法、系统、 计算机存储介质及编译设备,用于解决现有技术封装度较高,开放给用户的接口有限,造成 调试、调参的不便、优化过程、详细算法对用户不可见,无法支持用户做进一步优化,优化 算法灵活性较差,基于规则的方法导致在前端优化中丢失较大优化空间,且后端针对不同硬 件优化可迁移性较差,需要较多人类专家的介入的问题。
为实现上述目的及其他相关目的,本发明一方面提供一种神经网络的编译方法,包括:将 网络文件翻译为中间表达文件;从性能分析、单节点以及多节点协同角度对所述中间表达文 件进行优化;将优化后的中间表达文件生成基于硬件接口的网络模版文件;将所述网络模版 文件编译为可执行推理应用。
于本发明的一实施例中,所述网络文件包括结构和参数;所述中间表达文件包括抽象层、 抽象层的描述及主要域;所述抽象层包括模型、算子集、融合块、基本层及操作算子;所述 模型的描述包括描述完整模型执行流;所述算子集的描述包括指定算子集版本;所述融合块 的描述包括多个基本层融合而成的块;所述基本层的描述包括代表网络中一个算子的基本层; 所述操作算子的描述包括算子的详细描述;所述模型的主要域包括一组融合快,其中间表示 版本;所述算子集的主要域包括版本及包含的算子列表;所述融合块的主要域包括一组层, 及层的输入及输出;所述基本层的主要域包括算子、输入、输出、并行度;所述算子的主要 域包括算子类型及算子属性。
于本发明的一实施例中,从性能分析角度对所述中间表达文件进行优化的步骤包括:采 用基于性能测试的方式刻画性能,生成系列参数各异的测量性能,并获取影响算子性能的影 响参数,利用所述影响参数构建数学模型以刻画性能。
于本发明的一实施例中,从单节点角度对所述中间表达文件进行优化的步骤包括:对模 型并行度以及算子融合进行刻画,为算子挑选最优模型并行度,并刻画融合块大小、冗余计 算量以及性能的规律。
于本发明的一实施例中,从多节点协同角度对所述中间表达文件进行优化的步骤包括: 读取下一基本层;判断下一基本层是否能与当前的融合块进行融合;若能够,继续判断下一 基本层是否为神经网络的全连接层或卷积层;若是,则统计该基本层的计算量,并加入当前 的总计算量,并将该基本层加入到当前的融合块中,转入下一步骤;若否,则直接将该基本 层加入到当前的融合块中,转入下一步骤;若不能够,则开启新的融合块;判断当前的融合 块中总计算量是否超过计算量阈值,若是,则转入开启新的融合块的步骤;若否,则转入读 取下一基本层的步骤。
于本发明的一实施例中,将优化后的中间表达文件生成网络模版文件的步骤还包括利用 所述抽象层,将冗余操作隐藏,同时暴露优化节点。
于本发明的一实施例中,通过G++编译器将所述网络模版文件编译为可执行推理应用。
本发明另一方面提供一种神经网络的编译系统,包括:翻译模块,用于将网络文件翻译 为中间表达文件;优化模块,用于从性能分析、单节点以及多节点协同角度对所述中间表达 文件进行优化;文件生成模块,用于将优化后的中间表达文件生成基于硬件接口的网络模版 文件;编译模块,用于将所述网络模版文件编译为可执行推理应用。
本发明又一方面提供一种计算机存储介质,其上存储有计算机程序,该计算机程序被处 理器执行时实现所述神经网络的编译方法。
本发明最后一方面提供一种编译设备,包括:处理器及存储器;所述存储器用于存储计 算机程序,所述处理器用于执行所述存储器存储的计算机程序,以使所述编译设备执行所述 神经网络的编译方法。
如上所述,本发明所述的神经网络的编译方法、系统、计算机存储介质及编译设备,具 有以下有益效果:
本发明所述神经网络的编译方法、系统、计算机存储介质及编译设备旨在设计并实现一 个能够自动根据软硬件信息调节参数、生成代码的编译工具链框架、中间表示以及相应优化 算法,使之在目标芯片上计算时,在不改变网络输出结果的同时,在较短的优化时间内获得 更高的计算速率、更小的计算时延。且方便用户自行调试、调参。
附图说明
图1显示为本发明的神经网络的编译方法于一实施例中的流程示意图。
图2显示为本发明的从多节点协同角度对所述中间表达文件进行优化的优化流程示意 图。
图3显示为本发明的神经网络的编译方法于一实施例中的原理结构示意图。
元件标号说明
3 神经网络的编译系统
31 翻译模块
32 优化模块
33 文件生成模块
34 编译模块
321 性能分析单元
322 单节点优化单元
323 协同优化单元
S11~S14 步骤
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露 的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加 以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精 神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征 可以相互组合。
需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图 式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实 际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复 杂。
实施例一
本发明提供一种神经网络的编译方法,包括:
将网络文件翻译为中间表达文件;
从性能分析、单节点以及多节点协同角度对所述中间表达文件进行优化;
将优化后的中间表达文件生成基于硬件接口的网络模版文件;
将所述网络模版文件编译为可执行推理应用。
以下将结合图示对本实施例所提供的神经网络的编译方法进行详细描述。本实施例所述 神经网络的编译方法为用户提供端到端的推理服务,由已有的、打包好的网络文件生成基于 目标硬件接口的模板文件,进而生成可执行的推理应用。而优化过程能够优化生成代码的执 行效率。
请参阅图1,显示为神经网络的编译方法于一实施例中的流程示意图。如图1所示,所 述神经网络的编译方法具体包括以下步骤:
S11,将网络文件翻译为中间表达文件。
具体步骤包括使用Python.ONNX库中的API将onnx格式的神经网络文件读取为结构化 的数据,该结构化数据中包含网络结构(计算图)、算子详细信息(计算图的节点)等信息, 同时使用TVM提取onnx文件中包含的算子所需的权重信息,并存储为文本文件供之后的运 行使用。
具体地,将包括结构和参数的网络文件翻译为包含部分硬件信息的中间表达文件。
在本实施例中,所述中间表达文件包括抽象层、抽象层的描述及主要域;
所述抽象层包括模型、算子集、融合块、基本层及操作算子;
所述模型的描述包括描述完整模型执行流;所述算子集的描述包括指定算子集版本;所 述融合块的描述包括多个基本层融合而成的块;所述基本层的描述包括代表网络中一个算子 的基本层;所述操作算子的描述包括算子的详细描述;
所述模型的主要域包括一组融合快,其中间表示版本;
所述算子集的主要域包括版本及包含的算子列表;
所述融合块的主要域包括一组层,及层的输入及输出;
所述基本层的主要域包括算子、输入、输出、并行度;
所述算子的主要域包括算子类型及算子属性。
中间表达文件的具体内容如表1所示:
表1:中间表达文件的具体内容
抽象层 | 描述 | 主要域 |
Model模型 | 描述完整模型执行流 | 一组融合快,中间表示版本 |
Op Set算子集 | 指定算子集版本 | 版本,包含的算子列表 |
F-Block融合块 | 多个基本层融合而成的块 | 一组层,输入,输出 |
Layer基本层 | 代表网络中一个算子的层 | 算子、输入、输出、并行度 |
Operator算子 | 算子的详细描述 | 算子类型、属性 |
S12,从性能分析、单节点以及多节点协同角度对所述中间表达文件进行优化。
具体地,从性能分析角度对所述中间表达文件进行优化的步骤包括:
采用基于性能测试的方式刻画性能,生成系列参数各异的测量性能,并获取影响算子性 能的影响参数,利用所述影响参数构建数学模型以刻画性能。在本实施例中,由于在开发过 程中发现实际网络中的算子性能与理论模型相差较大,所以从性能分析角度对所述中间表达 文件进行优化。
在本实施例中,可通过PCA算法计算影响算子性能的影响参数。
以Cambricon MLU-100为例,在进行卷积操作时,算子计算量以及通道数为影响性能的 主要参数。
从单节点角度对所述中间表达文件进行优化的步骤包括:
根据从性能分析角度对所述中间表达文件进行优化的优化结果,以及目标硬件所支持的 接口对优化节点进行逐一优化或性能变化规律的刻画。
以Cambricon MLU-100为例,对模型并行度以及算子融合进行刻画,为算子挑选最优模 型并行度,并刻画融合块大小、冗余计算量以及性能的规律。
从多节点协同角度对所述中间表达文件进行优化,优化原理如下:
由于优化节点众多且每个节点选择众多,导致总体优化空间极大,无法采用朴素搜索的 方式,故需要利用启发信息进行搜索。在利用启发信息进行搜索时,需要评估某种参数选择 的优劣。然而,在观测到已有的针对硬件的性能模型与算子实际运行性能差距较大,现有性 能模型无法对算子的运行准确地刻画。故采用基于性能测试的方式,生成一组参数各异的算 子测量其实际运行性能。并使用主成分分析方法提取对算子性能影响最为显著的参数,利用 这些参数进行建模。以MLU-100为例,通过主成分分析发现算子的计算量对性能影响最为显 著。故在之后的单节点、协同优化过程中,将以计算量构建性能模型作为优化的指导。
MLU-100提供的接口主要支持模型并行度以及融合模式的优化,故单节点优化部分主要 针对这两个优化节点进行优化以及性能变化规律的刻画。
a.模型并行度方面,该芯片为多核架构,能够为每个算子分配若干个核心供其计算。然 而为一个算子分配过多的核心会导致每个核心计算量较小,无法使核心性能达到饱和,且核 间通信开销增大。故以计算量对算子性能影响最为显著为指导,基于性能测试构建了最有模 型并行度与计算量之间的关系,并根据它确定基本层的模型并行度。
b.算子融合方面,将若干算子融合为一个融合算子能够以流水线化的运行增加其并行 度。然而由于卷积计算的光环效应,融合块越大、并行度越高,被引入的冗余计算越多,故 需要控制融合块的大小以及并行度。根据对于具有不同计算量大小的融合块的研究发现,当 融合块计算量与并行度比值接近每个核心的饱和计算量时,该融合块能较好地平衡并行化带 来的性能提升以及冗余计算带来的开销。
在多节点协同优化步骤中,需要为模型挑选合适的融合模式,并为每个融合块设置合适 的并行度。由于每个融合块只能设置统一的并行度,而不同层的最优模型并行度各不相同, 为了使融合块尽可能满足其中所有层的最优模型并行度,本步骤采用先确定每个层模型并行 度,再聚集模型并行度相近的层加以融合的方式。而在融合时,控制每个融合块的大小,使 得其总计算量与并行度的比值接近但小于单核心饱和计算量。
请参阅图2,显示为从多节点协同角度对所述中间表达文件进行优化的优化流程示意图。 如图2所示,所述从多节点协同角度对所述中间表达文件进行优化的具体步骤包括:
读取下一基本层;
判断下一基本层是否能与当前的融合块进行融合;若能够,继续判断下一基本层是否为 神经网络的全连接层或卷积层;若是,则统计该基本层的计算量,并加入当前的总计算量, 并将该基本层加入到当前的融合块中,转入下一步骤;若否,则直接将该基本层加入到当前 的融合块中,转入下一步骤;若不能够,则开启新的融合块;
判断当前的融合块中总计算量是否超过计算量阈值,若是,则转入开启新的融合块的步 骤;若否,则转入读取下一基本层的步骤。
S13,将优化后的中间表达文件生成基于硬件接口的网络模版文件,
具体步骤包括为遍历中间表达文件并逐层处理,由于中间表达文件的每个单元包含了每 个算子(层)的信息,故在遍历时将会按照算子信息生成符合硬件接口语法的文本文件,即 网络模板文件。所述网络模版文件为软件开发工具包的网络模板文件。
于本实施例中,所述S13还包括利用所述抽象层,将冗余操作隐藏(例如,初始化、内 存分配等操作),同时暴露优化节点。
例如,所述S13可列出Cambricon MLU-100提供的接口以及中间层所支持的优化节点。
在本实施例中,通过网络模版文件用户能够方便地对网络结构、超参数等进行调整,并 且能够支持运行时调整部分超参数。
S14,将所述网络模版文件编译为可执行推理应用。
于本实施例中,通过G++编译器将所述网络模版文件编译为可执行推理应用。
本实施例还提供一种计算机存储介质(亦称计算机可读存储介质),其上存储有计算机 程序,该计算机程序被处理器执行时实现所述神经网络的编译方法。
本领域普通技术人员可以理解计算机可读存储介质:实现上述各方法实施例的全部或部 分步骤可以通过计算机程序相关的硬件来完成。前述的计算机程序可以存储于一计算机可读 存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括: ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
本实施例所述神经网络的编译方法旨在设计并实现一个能够自动根据软硬件信息调节参 数、生成代码的编译工具链框架、中间表示以及相应优化算法,使之在目标芯片上计算时, 在不改变网络输出结果的同时,在较短的优化时间内获得更高的计算速率、更小的计算时延。 且方便用户自行调试、调参。
实施例二
本实施例提供一种神经网络的编译系统,包括:
翻译模块,用于将网络文件翻译为中间表达文件;
优化模块,用于从性能分析、单节点以及多节点协同角度对所述中间表达文件进行优化;
文件生成模块,用于将优化后的中间表达文件生成基于硬件接口的网络模版文件;
编译模块,用于将所述网络模版文件编译为可执行推理应用。
以下将结合图示对本实施例所提供的神经网络的编译系统进行详细描述。请参与图3, 显示为神经网络的编译系统于一实施例中的原理结构示意图。如图3所示,所述神经网络的 编译系统3包括翻译模块31、优化模块32、文件生成模块33及编译模块34。
所述翻译模块31用于将网络文件翻译为中间表达文件。
具体地,所述翻译模块31将包括结构和参数的网络文件翻译为包含部分硬件信息的中间 表达文件。
更具体地,所述翻译模块31使用Python.ONNX库中的API将onnx格式的神经网络文件 读取为结构化的数据,该结构化数据中包含网络结构(计算图)、算子详细信息(计算图的 节点)等信息,同时使用TVM提取onnx文件中包含的算子所需的权重信息,并存储为文本文件供之后的运行使用。
在本实施例中,所述中间表达文件包括抽象层、抽象层的描述及主要域;
所述抽象层包括模型、算子集、融合块、基本层及操作算子;
所述模型的描述包括描述完整模型执行流;所述算子集的描述包括指定算子集版本;所 述融合块的描述包括多个基本层融合而成的块;所述基本层的描述包括代表网络中一个算子 的基本层;所述操作算子的描述包括算子的详细描述;
所述模型的主要域包括一组融合快,其中间表示版本;
所述算子集的主要域包括版本及包含的算子列表;
所述融合块的主要域包括一组层,及层的输入及输出;
所述基本层的主要域包括算子、输入、输出、并行度;
所述算子的主要域包括算子类型及算子属性。
所述优化模块32用于从性能分析、单节点以及多节点协同角度对所述中间表达文件进行 优化。继续参阅图3,所述优化模块32包括性能分析单元321、单节点优化单元322及协同 优化单元323。
所述性能分析单元321用于从性能分析角度对所述中间表达文件进行优化。
具体地,所述性能分析单元321采用基于性能测试的方式刻画性能,生成系列参数各异 的测量性能,并获取影响算子性能的影响参数,利用所述影响参数构建数学模型以刻画性能。 在本实施例中,由于在开发过程中发现实际网络中的算子性能与理论模型相差较大,所以从 性能分析角度对所述中间表达文件进行优化。
在本实施例中,可通过PCA算法计算影响算子性能的影响参数。
所述单节点优化单元322用于从单节点角度对所述中间表达文件进行优化。
具体地,所述单节点优化单元322根据从性能分析角度对所述中间表达文件进行优化的 优化结果,以及目标硬件所支持的接口对优化节点进行逐一优化或性能变化规律的刻画。
所述协同优化单元323用于从多节点协同角度对所述中间表达文件进行优化。
具体地,所述协同优化单元323读取下一基本层;判断下一基本层是否能与当前的融合 块进行融合;若能够,继续判断下一基本层是否为神经网络的全连接层或卷积层;若是,则 统计该基本层的计算量,并加入当前的总计算量,并将该基本层加入到当前的融合块中,转 入判断当前的融合块中总计算量是否超过计算量阈值;若否,则直接将该基本层加入到当前 的融合块中,转入判断当前的融合块中总计算量是否超过计算量阈值;若不能够,则开启新 的融合块;若超过计算量阈值,则转入开启新的融合块;若未超过计算量阈值,则转入读取 下一基本层。
所述文件生成模块33用于将优化后的中间表达文件生成基于硬件接口的网络模版文件。 所述网络模版文件为软件开发工具包的网络模板文件。
具体所述文件生成模块33为遍历中间表达文件并逐层处理,由于中间表达文件的每个单 元包含了每个算子(层)的信息,故在遍历时将会按照算子信息生成符合硬件接口语法的文 本文件,即网络模板文件。所述网络模版文件为软件开发工具包的网络模板文件。
于本实施例中,所述文件生成模块33还用于利用所述抽象层,将冗余操作隐藏(例如, 初始化、内存分配等操作),同时暴露优化节点。
在本实施例中,通过网络模版文件用户能够方便地对网络结构、超参数等进行调整,并 且能够支持运行时调整部分超参数。
所述编译模块34用于将所述网络模版文件编译为可执行推理应用。
于本实施例中,所述编译模块34通过G++编译器将所述网络模版文件编译为可执行推理 应用。
需要说明的是,应理解以上系统的各个模块的划分仅仅是一种逻辑功能的划分,实际实 现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软 件通过处理元件调用的形式实现,也可以全部以硬件的形式实现,还可以部分模块通过处理 元件调用软件的形式实现,部分模块通过硬件的形式实现。例如:x模块可以为单独设立的 处理元件,也可以集成在上述系统的某一个芯片中实现。此外,x模块也可以以程序代码的 形式存储于上述系统的存储器中,由上述系统的某一个处理元件调用并执行以上x模块的功 能。其它模块的实现与之类似。这些模块全部或部分可以集成在一起,也可以独立实现。这 里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的 各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完 成。以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个 特定集成电路(Application Specific Integrated Circuit,简称ASIC),一个或多个微处理器 (Digital Singnal Processor,简称DSP),一个或者多个现场可编程门阵列(Field Programmable Gate Array,简称FPGA)等。当以上某个模块通过处理元件调度程序代码的形式实现时,该 处理元件可以是通用处理器,如中央处理器(Central Processing Unit,简称CPU)或其它可 以调用程序代码的处理器。这些模块可以集成在一起,以片上系统(System-on-a-chip,简称 SOC)的形式实现。
实施例三
本实施例提供一种编译设备,包括:处理器、存储器、收发器、通信接口或/和系统总线; 存储器和通信接口通过系统总线与处理器和收发器连接并完成相互间的通信,存储器用于存 储计算机程序,通信接口用于和其他设备进行通信,处理器和收发器用于运行计算机程序, 使编译设备执行如上神经网络的编译方法的各个步骤。
上述提到的系统总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称 PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。 该系统总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表 示,但并不表示仅有一根总线或一种类型的总线。通信接口用于实现数据库访问装置与其他 设备(如客户端、读写库和只读库)之间的通信。存储器可能包含随机存取存储器(Random Access Memory,简称RAM),也可能还包括非易失性存储器(non-volatile memory),例如至 少一个磁盘存储器。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、 网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、 现场可编程门阵列(Field Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、 分立门或者晶体管逻辑器件、分立硬件组件。
本发明所述的神经网络的编译方法的保护范围不限于本实施例列举的步骤执行顺序,凡 是根据本发明的原理所做的现有技术的步骤增减、步骤替换所实现的方案都包括在本发明的 保护范围内。
本发明还提供一种神经网络的编译系统,所述神经网络的编译系统可以实现本发明所述 的神经网络的编译方法,但本发明所述的神经网络的编译方法的实现装置包括但不限于本实 施例列举的神经网络的编译系统的结构,凡是根据本发明的原理所做的现有技术的结构变形 和替换,都包括在本发明的保护范围内。
综上所述,本发明所述神经网络的编译方法、系统、计算机存储介质及编译设备旨在设 计并实现一个能够自动根据软硬件信息调节参数、生成代码的编译工具链框架、中间表示以 及相应优化算法,使之在目标芯片上计算时,在不改变网络输出结果的同时,在较短的优化 时间内获得更高的计算速率、更小的计算时延。且方便用户自行调试、调参。本发明有效克 服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技 术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡 所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等 效修饰或改变,仍应由本发明的权利要求所涵盖。
Claims (9)
1.一种神经网络的编译方法,其特征在于,包括:
将网络文件翻译为包含部分硬件信息的中间表达文件;所述网络文件包括结构和参数;所述中间表达文件包括抽象层、抽象层的描述及主要域;
从性能分析、单节点以及多节点协同角度对所述中间表达文件进行优化;该优化步骤包括采用基于性能测试的方式刻画性能,生成系列参数各异的测量性能,并获取影响算子性能的影响参数,利用所述影响参数构建数学模型以刻画性能;
将优化后的中间表达文件生成基于硬件接口的网络模版文件;
将所述网络模版文件编译为可执行推理应用。
2.根据权利要求1所述的神经网络的编译方法,其特征在于,
所述抽象层包括模型、算子集、融合块、基本层及操作算子;
所述模型的描述包括描述完整模型执行流;所述算子集的描述包括指定算子集版本;所述融合块的描述包括多个基本层融合而成的块;所述基本层的描述包括代表网络中一个算子的基本层;所述操作算子的描述包括算子的详细描述;
所述模型的主要域包括一组融合快,其中间表示版本;
所述算子集的主要域包括版本及包含的算子列表;
所述融合块的主要域包括一组层,及层的输入及输出;
所述基本层的主要域包括算子、输入、输出、并行度;
所述算子的主要域包括算子类型及算子属性。
3.根据权利要求2所述的神经网络的编译方法,其特征在于,从单节点角度对所述中间表达文件进行优化的步骤包括:
对模型并行度以及算子融合进行刻画,为算子挑选最优模型并行度,并刻画融合块大小、冗余计算量以及性能的规律。
4.根据权利要求2所述的神经网络的编译方法,其特征在于,从多节点协同角度对所述中间表达文件进行优化的步骤包括:
读取下一基本层;
判断下一基本层是否能与当前的融合块进行融合;若能够,继续判断下一基本层是否为神经网络的全连接层或卷积层;若是,则统计该基本层的计算量,并加入当前的总计算量,并将该基本层加入到当前的融合块中,转入下一步骤;若否,则直接将该基本层加入到当前的融合块中,转入下一步骤;若不能够,则开启新的融合块;
判断当前的融合块中总计算量是否超过计算量阈值,若是,则转入开启新的融合块的步骤;若否,则转入读取下一基本层的步骤。
5.根据权利要求2所述的神经网络的编译方法,其特征在于,将优化后的中间表达文件生成网络模版文件的步骤还包括利用所述抽象层,将冗余操作隐藏,同时暴露优化节点。
6.根据权利要求2所述的神经网络的编译方法,其特征在于,通过G++编译器将所述网络模版文件编译为可执行推理应用。
7.一种神经网络的编译系统,其特征在于,包括:
翻译模块,用于将网络文件翻译为包含部分硬件信息的中间表达文件;所述网络文件包括结构和参数;所述中间表达文件包括抽象层、抽象层的描述及主要域;
优化模块,用于从性能分析、单节点以及多节点协同角度对所述中间表达文件进行优化;所述优化模块采用基于性能测试的方式刻画性能,生成系列参数各异的测量性能,并获取影响算子性能的影响参数,利用所述影响参数构建数学模型以刻画性能;
文件生成模块,用于将优化后的中间表达文件生成基于硬件接口的网络模版文件;
编译模块,用于将所述网络模版文件编译为可执行推理应用。
8.一种计算机存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至6中任一项所述神经网络的编译方法。
9.一种编译设备,其特征在于,包括:处理器及存储器;
所述存储器用于存储计算机程序,所述处理器用于执行所述存储器存储的计算机程序,以使所述编译设备执行如权利要求1至6中任一项所述神经网络的编译方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011224090.4A CN112529175B (zh) | 2020-11-05 | 2020-11-05 | 神经网络的编译方法、系统、计算机存储介质及编译设备 |
PCT/CN2021/095209 WO2022095413A1 (zh) | 2020-11-05 | 2021-05-21 | 神经网络的编译方法、系统、计算机存储介质及编译设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011224090.4A CN112529175B (zh) | 2020-11-05 | 2020-11-05 | 神经网络的编译方法、系统、计算机存储介质及编译设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112529175A CN112529175A (zh) | 2021-03-19 |
CN112529175B true CN112529175B (zh) | 2022-03-18 |
Family
ID=74980667
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011224090.4A Active CN112529175B (zh) | 2020-11-05 | 2020-11-05 | 神经网络的编译方法、系统、计算机存储介质及编译设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112529175B (zh) |
WO (1) | WO2022095413A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112328227B (zh) | 2020-11-03 | 2022-02-25 | 清华大学 | 编译方法、装置、计算设备和介质 |
CN112529175B (zh) * | 2020-11-05 | 2022-03-18 | 上海交通大学 | 神经网络的编译方法、系统、计算机存储介质及编译设备 |
US11775317B2 (en) * | 2021-04-30 | 2023-10-03 | International Business Machines Corporation | Locate neural network performance hot spots |
CN115809688B (zh) * | 2022-08-24 | 2023-10-24 | 北京百度网讯科技有限公司 | 一种模型调试方法、装置、电子设备及存储介质 |
CN115904394B (zh) * | 2023-03-02 | 2023-07-04 | 之江实验室 | 一种面向众核架构的神经网络增量编译方法和装置 |
CN116149797B (zh) * | 2023-04-04 | 2023-07-07 | 上海燧原科技有限公司 | 面向异构场景的ai统一计算方法、装置、设备及介质 |
CN117077161B (zh) * | 2023-07-31 | 2024-05-03 | 上海交通大学 | 基于动态规划求解的隐私保护深度模型构建方法与系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9684544B1 (en) * | 2016-02-05 | 2017-06-20 | Sas Institute Inc. | Distributed data set storage and analysis reproducibility |
CN107239315A (zh) * | 2017-04-11 | 2017-10-10 | 北京深鉴智能科技有限公司 | 面向神经网络异构计算平台的编程模型 |
CN110377288A (zh) * | 2018-04-13 | 2019-10-25 | 赛灵思公司 | 神经网络压缩编译器及其编译压缩方法 |
CN110764744A (zh) * | 2018-07-25 | 2020-02-07 | 赛灵思公司 | 用于神经网络计算的中间表示生成方法和装置 |
CN110766147A (zh) * | 2018-07-25 | 2020-02-07 | 赛灵思公司 | 神经网络编译器架构及编译方法 |
CN111443917A (zh) * | 2020-03-26 | 2020-07-24 | 上海寒武纪信息科技有限公司 | 神经网络运行优化方法、装置及相关产品 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10157045B2 (en) * | 2016-11-17 | 2018-12-18 | The Mathworks, Inc. | Systems and methods for automatically generating code for deep learning systems |
CN110321999B (zh) * | 2018-03-30 | 2021-10-01 | 赛灵思电子科技(北京)有限公司 | 神经网络计算图优化方法 |
GB2586198A (en) * | 2019-03-08 | 2021-02-17 | Tescap Ltd | A monitoring and recording system |
US10872275B2 (en) * | 2019-03-22 | 2020-12-22 | Nokia Technologies Oy | Semantic segmentation based on a hierarchy of neural networks |
US10789402B1 (en) * | 2019-05-01 | 2020-09-29 | Xilinx, Inc. | Compiler and hardware abstraction layer architecture for a neural network accelerator |
CN110717584A (zh) * | 2019-09-30 | 2020-01-21 | 上海寒武纪信息科技有限公司 | 神经网络编译方法、编译器、计算机设备及可读存储介质 |
CN111753973A (zh) * | 2020-06-22 | 2020-10-09 | 深圳鲲云信息科技有限公司 | 一种神经网络芯片的优化方法、系统、设备和存储介质 |
CN111860816A (zh) * | 2020-07-08 | 2020-10-30 | Oppo广东移动通信有限公司 | 神经网络模型的编译方法、装置、设备及存储介质 |
CN111880807A (zh) * | 2020-07-31 | 2020-11-03 | Oppo广东移动通信有限公司 | 深度学习编译方法、装置、设备及存储介质 |
CN112529175B (zh) * | 2020-11-05 | 2022-03-18 | 上海交通大学 | 神经网络的编译方法、系统、计算机存储介质及编译设备 |
-
2020
- 2020-11-05 CN CN202011224090.4A patent/CN112529175B/zh active Active
-
2021
- 2021-05-21 WO PCT/CN2021/095209 patent/WO2022095413A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9684544B1 (en) * | 2016-02-05 | 2017-06-20 | Sas Institute Inc. | Distributed data set storage and analysis reproducibility |
CN107239315A (zh) * | 2017-04-11 | 2017-10-10 | 北京深鉴智能科技有限公司 | 面向神经网络异构计算平台的编程模型 |
CN110377288A (zh) * | 2018-04-13 | 2019-10-25 | 赛灵思公司 | 神经网络压缩编译器及其编译压缩方法 |
CN110764744A (zh) * | 2018-07-25 | 2020-02-07 | 赛灵思公司 | 用于神经网络计算的中间表示生成方法和装置 |
CN110766147A (zh) * | 2018-07-25 | 2020-02-07 | 赛灵思公司 | 神经网络编译器架构及编译方法 |
CN111443917A (zh) * | 2020-03-26 | 2020-07-24 | 上海寒武纪信息科技有限公司 | 神经网络运行优化方法、装置及相关产品 |
Non-Patent Citations (2)
Title |
---|
A survey of neural network accelerator with software development environments;Jin Song 等;《Journal of Semiconductors》;20200229(第02期);1-9 * |
学习模型指导的编译器优化顺序选择方法;刘慧 等;《 计算机研究与发展》;20190930(第09期);2012-2026 * |
Also Published As
Publication number | Publication date |
---|---|
CN112529175A (zh) | 2021-03-19 |
WO2022095413A1 (zh) | 2022-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112529175B (zh) | 神经网络的编译方法、系统、计算机存储介质及编译设备 | |
Zheng et al. | Flextensor: An automatic schedule exploration and optimization framework for tensor computation on heterogeneous system | |
CN105706092B (zh) | 四值模拟的方法和系统 | |
CN106155635A (zh) | 一种数据处理方法和装置 | |
Bomanson et al. | Answer set programming modulo acyclicity | |
JP6237278B2 (ja) | コンパイルプログラム、コンパイル方法およびコンパイル装置 | |
US11269760B2 (en) | Systems and methods for automated testing using artificial intelligence techniques | |
US9384017B2 (en) | System and method to provide grouping of warnings generated during static analysis | |
WO2022087788A1 (zh) | 一种神经网络编译优化方法和相关装置 | |
Yan et al. | Compiling ladder diagram into instruction list to comply with IEC 61131-3 | |
US11016745B2 (en) | Systems and methods for generating distributed software packages using non-distributed source code | |
Ritter et al. | Optimization strategies for integration pattern compositions | |
Fan et al. | Graph algorithms: parallelization and scalability | |
US20160063164A1 (en) | Method for determining by optimization a multi-core architecture | |
US20240119110A1 (en) | Method, apparatus, electronic device and computer-readablestorage medium for computational flow graph schedulingscheme generation | |
CN116011468A (zh) | 深度学习模型的推理方法、机器翻译方法及装置 | |
Rubin | Parameterised verification of autonomous mobile-agents in static but unknown environments | |
Wang et al. | Auto-map: A DQN framework for exploring distributed execution plans for DNN workloads | |
Chen et al. | Experiments and optimizations for TVM on RISC-V architectures with p extension | |
Papavasileiou et al. | Ariadne: Online provenance for big graph analytics | |
Vajk et al. | Runtime model validation with parallel object constraint language | |
Ali et al. | Parallelizing user-defined functions in the ETL workflow using orchestration style sheets | |
Kurfess et al. | Parallelism in logic | |
CN114968325A (zh) | 代码注释的生成方法及装置、处理器和电子设备 | |
Rohrmann et al. | Gilbert: Declarative sparse linear algebra on massively parallel dataflow systems |
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 |