[发明专利]神经网络编译器架构及编译方法有效
申请号: | 201810829009.1 | 申请日: | 2018-07-25 |
公开(公告)号: | CN110766147B | 公开(公告)日: | 2022-10-11 |
发明(设计)人: | 隋凌志;刘鑫;王雨顺 | 申请(专利权)人: | 赛灵思公司 |
主分类号: | G06N3/063 | 分类号: | G06N3/063;G06N3/04;G06F8/41 |
代理公司: | 北京展翼知识产权代理事务所(特殊普通合伙) 11452 | 代理人: | 张阳 |
地址: | 美国加利福尼亚*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 神经网络 编译器 架构 编译 方法 | ||
1.一种神经网络编译器,包括:
计算图构建模块,用于基于输入的不同类型的模型文件构建通用的第一中间表示,其中所述第一中间表示具有图形式;
计算图优化模块,用于针对所述第一中间表示进行图优化,以获得具有图形式的第二中间表示;
指令生成模块,用于对所述第二中间表示进行调度优化,以获取细粒度的第三中间表示,以及基于硬件平台将所述第三中间表示编译为在所述硬件平台上执行的指令码,
其中,所述第一中间表示被生成为:节点表示为特征图,边表示为计算操作的计算图,
其中,所述节点的属性包括如下至少一项:所述特征图的维度信息和长宽通道信息。
2.如权利要求1所述的编译器,其中,所述计算图构建模块包括:
模型文件解析模块,包括各自对应于一种类型的模型文件的解析子模块,每个解析子模块用于解析对应类型的模型文件;以及
计算图生成模块,基于对应解析子模块的解析结果生成所述第一中间表示。
3.如权利要求1所述的编译器,其中,所述边表示的计算操作包括如下至少一项:
卷积、池化、维度变换、点加(eltwise)、反卷积、重排、非线性、批量归一化(BatchNorm)、定标(scale);
所述边的属性包括所述计算操作的参数,并且包括如下至少一项:
卷积核尺寸、扩充边缘(pad)、步长(stride)、分组、扩张(dilation)。
4.如权利要求1所述的编译器,其中,计算图优化模块包括如下至少一个优化模块:
剪枝模块,用于去除不需要的或对计算结果无影响的操作;
融合模块,用于进行计算操作融合,以减少所述指令码在执行时所述硬件平台与所述外部存储器数据交互次数;以及
分解模块,用于进行计算操作分解,以将分解的计算操作与前后的计算操作相融合或实现对分解的计算操作的处理。
5.如权利要求1所述的编译器,其中,所述第二中间表示是节点表示特征图,边表示多种计算操作合并的超图。
6.如权利要求5所述的编译器,其中,所述第二中间表示由基于scheme语言设计的领域专用语言(DSL,Domain-SpecificLanguage)表示。
7.如权利要求5所述的编译器,其中,所述计算图优化模块进一步用于设置能够进行层融合的子图模板,获取针对所述第一中间表示的计算图的至少一种子图匹配方案,并基于子图匹配方案将所述计算图重构成经融合的第二中间表示。
8.如权利要求7所述的编译器,其中,所述子图模板是基于所述硬件平台获得的。
9.如权利要求5所述的编译器,其中,针对多种计算操作合并方式,为所述第一中间表示的各个计算操作合并方式对应的输入和输出节点之间添加对应于该计算操作合并方案执行代价的边,并且基于节点间的最短路径问题求取最优计算操作合并方案。
10.如权利要求1所述的编译器,其中,所述指令生成模块基于所述硬件平台进行调度优化,以确定如下至少一项:
针对特征图和/或权重的分块执行方案;以及
执行指令间的指令依赖关系。
11.如权利要求10所述的编译器,其中,所述第三中间表示由将每个计算操作编写为多重循环的语言表示。
12.如权利要求10所述的编译器,其中,所述指令生成模块将所述分块执行方案和/或所述指令依赖关系经由所述第三中间表示映射到所述指令码。
13.如权利要求1所述的编译器,还包括:
神经网络前传模块,用于为所述硬件平台执行指令码的结果提供进行比对的标准答案。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于赛灵思公司,未经赛灵思公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810829009.1/1.html,转载请声明来源钻瓜专利网。