当前位置: 首页 > 专利查询>赛灵思公司专利>正文

神经网络压缩编译器及其编译压缩方法技术

技术编号:22387035 阅读:89 留言:0更新日期:2019-10-29 06:25
一种神经网络压缩编译器及其编译压缩方法。该神经网络压缩编译器可以包括:编译前端,用于对输入的神经网络算法进行分析,所述算法包括神经网络算法的拓扑结构和神经网络算法的参数;优化器,用于对所述算法和/或所述分析生成的中间表示进行优化;以及指令压缩生成器,用于生成计算平台执行神经网络计算所需的、经压缩的二进制指令码。其中,指令压缩生成器可以直接生成二进制指令码并进行压缩,也可生成压缩的汇编代码并将其转换成压缩的二进制码,例如DPU压缩指令码。由此,通过针对神经网络创造性地提出的压缩编译方法,可有效解决神经网络算法编译时间长、存储空间占用过大的问题。

【技术实现步骤摘要】
神经网络压缩编译器及其编译压缩方法
本专利技术涉及深度学习领域,尤其涉及一种用于神经网络算法的压缩编译器及其相关编译压缩方法。
技术介绍
人工智能近年得到迅速发展,在图像分类、检测、视频和语音处理等领域取得良好的应用效果,并且依然具备极大的发展前景。神经网络是人工智能应用的核心,深度学习神经网络算法是其中最常见的一种神经网络模型。为了将训练之后的深度神经网络进行部署,需要将神经网络算法编译成计算平台所能执行的二进制指令码。对于使用如C++或Java等的高级语言开发的应用程序,诸如GCC、LLVM的常规编译器在数秒内即可快速完成编译和优化,生成面向各种CPU平台的可执行代码,占用的存储空间通常在数K至数M字节。然而对于计算量密集和参数量巨大的深度神经网络算法,现有编译处理需要消耗数分钟甚至更长的时间,并且编译生成的指令代码可达数十至数百M字节。这对于神经网络的高效便捷部署带来困难。随着移动端人工智能计算的流行和普及,在资源受限的嵌入式端平台上述问题将变得更加严重。因此,需要一种针对神经网络的优化编译方案。
技术实现思路
为了解决上述至少一个问题,本专利技术提出了一种压缩编译方案,通过对编译生成的代码进行压缩,大幅降低编译后代码所需占用的存储空间,并可显著降低编译时间,从而为深度学习应用向嵌入式移动设备的推广铺平了道路。根据本专利技术的一个方面,提出了一种用于神经网络的压缩编译方法,包括:获取神经网络算法,所述神经网络算法包括神经网络算法的拓扑结构和神经网络算法的参数;基于所述神经网络算法生成用于计算平台执行神经网络计算的、经压缩的二进制指令码。由此,通过编译压缩,降低代码占用空间。在一个实施例中,基于所述神经网络算法生成用于计算平台执行神经网络计算的、经压缩的二进制指令码可以包括:基于所述神经网络算法生成用于计算平台执行神经网络计算的二进制指令码;以及根据预定的无损数据压缩算法,压缩所述二进制指令码。相应地,根据预定的无损数据压缩算法,压缩所述二进制指令码可以包括如下至少一项:针对生成的全部二进制指令码进行整体压缩;以及针对二进制指令码进行与所述神经网络算法分层相对应的逐层压缩。由此,通过直接将源代码编译成二进制指令码再进行压缩,能够减少编译操作所需人工介入。另外,逐层压缩能够进一步降低压缩对编译时间的影响。在另一个实施例中,基于所述神经网络算法生成用于计算平台执行神经网络计算的、经压缩的二进制指令码可以包括:基于所述神经网络算法生成汇编代码;根据预定的无损数据压缩算法,压缩所述汇编代码以生成所述经压缩的汇编代码;以及将经压缩的汇编代码转换成所述经压缩的二进制指令码。相应地,根据预定的无损数据压缩算法,压缩所述汇编代码可以包括如下至少一项:针对生成的全部汇编代码进行整体压缩;以及针对汇编代码进行与所述神经网络算法分层相对应的逐层压缩。由此,通过直接将源代码编译成汇编码进行压缩,再将压缩的汇编码转换成压缩的二进制码,能够极大地解决由于参数量巨大而导致的二进制码转换的耗时问题,同时由于汇编代码的可读性这还有利于对编译器生成代码准确性进行分析和定位。另外,逐层压缩能够进一步降低压缩对编译时间的影响。所述预定的无损数据压缩算法可以包括如下的至少一种:Huffman编码算法、Lempel-Ziv编码算法、Arithmetic编码算法、Shannon-Fano编码算法、RLE编码算法和Dictionary编码算法。所述经压缩的二进制指令码包括如下之一:仅对应的所述神经网络参数或其部分被压缩的二进制指令码;对应的所述神经网络参数和所述神经网络算法指令都被压缩的二进制指令码。神经网络可以是稀疏化神经网络,并且在所述经压缩的二进制指令码中所述神经网络参数所包含的大量的零值参数能够被压缩掉。神经网络参数可以使用整型数值表示(例如,8比特),以通过增大数据重复概率提升所述神经网络参数的压缩率。根据本专利技术的另一个方面,提供了一种神经网络压缩编译器,包括:编译前端,用于对输入的神经网络算法进行分析,所述源代码包括神经网络算法的拓扑结构和神经网络算法的参数;优化器,用于对所述神经网络算法和/或所述分析生成的中间表示进行优化;以及指令压缩生成器,用于生成计算平台执行神经网络计算所需的、经压缩的二进制指令码。在一个实施例中,指令压缩生成器可以包括:代码生成器,用于基于优化后的神经网络算法和/或中间表示生成计算平台执行神经网络计算所需的二进制指令码;以及代码压缩器,用于根据预定的无损数据压缩算法,压缩所述二进制指令码以生成所述经压缩的二进制指令码。在一个实施例中,指令压缩生成器可以包括:代码生成器,用于基于优化优化后的神经网络算法和/或中间表示生成汇编代码;代码压缩器,用于根据预定的无损数据压缩算法,压缩所述汇编代码以生成所述经压缩的汇编代码;以及压缩汇编器,用于将经压缩的汇编代码转换成经压缩的二进制指令码。代码压缩器使用的预定的无损数据压缩算法可以包括如下的至少一种:Huffman编码算法、Lempel-Ziv编码算法、Arithmetic编码算法、Shannon-Fano编码算法、RLE编码算法和Dictionary编码算法。针对所述代码生成器生成的代码,代码压缩器可以进行整体压缩或与所述神经网络算法分层相对应的逐层压缩。神经网络可以是稀疏化神经网络,并且所述代码压缩器能够压缩所述神经网络参数所包含的大量的零值参数。神经网络参数可以使用整型数值表示,以通过增大数据重复概率提升所述代码压缩器对所述神经网络参数的压缩率。根据本专利技术的一个方面,提出了一种神经网络的代码执行方法,包括:获取如上述方法和/或经由上述压缩编译器编译压缩的二进制指令码;以及解压缩所述二进制指令码用于在计算平台上的执行。根据本专利技术的另一个方面,提出了一种神经网络代码解压器,用于对如上述神经网络压缩编译器所编译压缩的二进制指令码进行解压。神经网络代码解压器可以在运行时引擎中实现。经解压的二进制指令码可以在至少部分由GPU、FPGA或ASIC实现的计算平台上运行。根据本专利技术的一个方面,提出了一种计算设备,包括:处理器;以及存储器,其上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如上任一项所述的方法。根据本专利技术的另一个方面,提出了一种非暂时性机器可读存储介质,其上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如上任一项所述的方法。本专利技术面向神经网络创造性地提出的压缩编译方案,可有效解决神经网络算法编译时间长、存储空间占用过大的问题。通过重复利用神经网络参数的稀疏性和整型表示,能将流行的深度神经网络编译时间从数分钟缩短为数秒、将编译生成的DPU二进制指令码所需的存储空间减少数倍甚至数十倍,可有效提高深度学习应用程序编译开发的效率,同时也有效解决了深度神经网络对系统存储空间占用过大的问题,对于深度学习应用向嵌入式移动端设备的推广意义深远。附图说明通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。图1示出了现有神经网络编译器的编译示意图。图2示出了根据本专利技术一个实施例的神经网络压缩编译器的编译示意图。图3A和本文档来自技高网...

【技术保护点】
1.一种用于神经网络的编译压缩方法,包括:获取神经网络算法,所述神经网络算法包括神经网络算法的拓扑结构和神经网络算法的参数;基于所述神经网络算法生成用于计算平台执行神经网络计算的、经压缩的二进制指令码。

【技术特征摘要】
1.一种用于神经网络的编译压缩方法,包括:获取神经网络算法,所述神经网络算法包括神经网络算法的拓扑结构和神经网络算法的参数;基于所述神经网络算法生成用于计算平台执行神经网络计算的、经压缩的二进制指令码。2.如权利要求1所述的方法,其中,基于所述神经网络算法生成用于计算平台执行神经网络计算的、经压缩的二进制指令码包括:基于所述神经网络算法生成用于计算平台执行神经网络计算的二进制指令码;以及根据预定的无损数据压缩算法,压缩所述二进制指令码。3.如权利要求2所述的方法,其中,根据预定的无损数据压缩算法,压缩所述二进制指令码包括如下至少一项:针对生成的全部二进制指令码进行整体压缩;以及针对二进制指令码进行与所述神经网络算法分层相对应的逐层压缩。4.如权利要求1所述的方法,其中,基于所述神经网络算法生成用于计算平台执行神经网络计算的、经压缩的二进制指令码包括:基于所述神经网络算法生成汇编代码;根据预定的无损数据压缩算法,压缩所述汇编代码以生成所述经压缩的汇编代码;以及将经压缩的汇编代码转换成所述经压缩的二进制指令码。5.如权利要求4所述的方法,其中,根据预定的无损数据压缩算法,压缩所述汇编代码包括如下至少一项:针对生成的全部汇编代码进行整体压缩;以及针对汇编代码进行与所述神经网络算法分层相对应的逐层压缩。6.如权利要求2-5中任一项所述的方法,其中,所述预定的无损数据压缩算法包括如下的至少一种:Huffman编码算法、Lempel-Ziv编码算法、Arithmetic编码算法、Shannon-Fano编码算法、RLE编码算法、和Dictionary编码算法。7.如权利要求1所述的方法,其中,并且所述经压缩的二进制指令码包括如下之一:仅对应的所述神经网络算法的参数或其部分被压缩的二进制指令码;对应的所述神经网络算法的参数和所述神经网络算法相对应的指令都被压缩的二进制指令码。8.如权利要求1所述的方法,其中,所述神经网络是稀疏化神经网络,并且在所述经压缩的二进制指令码中所述神经网络参数所包含的大量的零值参数被压缩。9.如权利要求1所述的方法,其中,所述神经网络参数使用整型数值表示,以通过增大数据重复概率提升所述神经网络参数的压缩率。10.一种神经网络压缩编译器,包括:编译前端,用于对输入的神经网络算法进行分析,所述神经网络算法包括神经网络算法的拓扑结构和神经网络算法的参数;优化器,用于对所述神经网络算法和/或所述分析生成的中间表示进行优化;指令压缩生成器,用于生成计算平台执行神经网络计算所需的、经压缩的二进制指令码。11.如权利要求10所述的压...

【专利技术属性】
技术研发人员:孙晓明单羿
申请(专利权)人:赛灵思公司
类型:发明
国别省市:美国,US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1