System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本公开涉及计算机领域,尤其涉及深度学习等人工智能领域,特别的涉及一种深度学习框架的代码处理方法及其装置。
技术介绍
1、使用深度学习框架进行深度学习模型的训练、推理的过程可以分为动态图和静态图两种,深度学习框架的动转静功能旨在从动态图中导出静态图模型。相关技术中,pytorch(为一个开源的python机器学习库,基于torch,用于自然语言处理等应用程序)的dynamo模块采用模拟python字节码的形式,以将深度学习框架的动态图转换为静态图。
2、但是,目前尚缺乏用于抽取python字节码中循环内组网信息的有效手段。
技术实现思路
1、本公开提供了一种深度学习框架的代码处理方法及其装置。
2、根据本公开的第一方面,提供了一种深度学习框架的代码处理方法,包括:
3、在模拟执行动态类型语言python字节码过程中模拟执行for循环逻辑;其中,所述python字节码为所述深度学习框架所使用的python语言的字节码;
4、确定与所述for循环逻辑关联的待处理迭代器的所属类型;
5、基于与所述待处理迭代器的所属类型对应的静态化方式,对所述for循环逻辑代码进行静态化处理。
6、根据本公开的第二方面,提供了一种深度学习框架的代码处理装置,包括:
7、模拟模块,用于在模拟执行python字节码过程中模拟执行for循环逻辑;其中,所述python字节码为所述深度学习框架所使用的python语言的字节码;
>8、确定模块,用于确定与所述for循环逻辑关联的待处理迭代器的所属类型;
9、处理模块,用于基于与所述待处理迭代器的所属类型对应的静态化方式,对所述for循环逻辑代码进行静态化处理。
10、根据本公开的第三方面,提供了一种电子设备,包括:
11、至少一个处理器;以及
12、与所述至少一个处理器通信连接的存储器;其中,
13、所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行前述第一方面所述的方法。
14、根据本公开的第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行前述第一方面所述的方法。
15、根据本公开的第五方面,提供了一种计算机程序产品,包括计算机程序,其中,所述计算机程序在被处理器执行时实现前述第一方面所述的方法。
16、根据本公开的技术方案,可以基于待处理迭代器的所属类型,将for循环逻辑的模拟分为多种情况,分别采用不同的静态化方式进行处理,从而尽可能的将深度学习框架的python代码从动态图转换为静态图,大幅提高了组网信息抽取的能力(分析循环内部的组网信息),可以覆盖转换更多的代码(即更多的静态化for循环内部代码),增强了python字节码模拟的稳定性(不会因for而进行不必要的打断),从而可以避免迭代器之间的关系链长而导致模拟阶段性能低下的问题,提高模拟阶段的性能。
17、应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
本文档来自技高网...【技术保护点】
1.一种深度学习框架的代码处理方法,包括:
2.如权利要求1所述的方法,其中,所述确定与所述FOR循环逻辑关联的待处理迭代器的所属类型,包括:
3.如权利要求1或2所述的方法,其中,所述基于与所述待处理迭代器的所属类型对应的静态化方式,对所述FOR循环逻辑代码进行静态化处理,包括:
4.如权利要求3所述的方法,其中,所述采用第一静态化方式,对所述FOR循环逻辑代码进行静态化处理,包括:
5.如权利要求4所述的方法,其中,所述从所述Python字节码中抽取出所述FOR循环逻辑对应的字节码,以生成第一函数,包括:
6.如权利要求5所述的方法,还包括:
7.如权利要求3所述的方法,其中,所述采用第二静态化方式,对所述FOR循环逻辑代码进行静态化处理,包括:
8.如权利要求7所述的方法,还包括:
9.如权利要求4所述的方法,还包括:
10.一种深度学习框架的代码处理装置,包括:
11.如权利要求10所述的装置,其中,所述确定模块具体用于:
12.如权利要求1
13.如权利要求12所述的装置,其中,所述处理模块具体用于:
14.如权利要求13所述的装置,其中,所述处理模块具体用于:
15.如权利要求14所述的装置,所述处理模块还用于:
16.如权利要求12所述的装置,其中,所述处理模块具体用于:
17.如权利要求16所述的装置,所述处理模块还用于:在所述第一循环体字节码入口处添加占位符以保持栈平衡。
18.如权利要求13所述的装置,所述处理模块还用于:在所述第一函数模拟出错时,采用所述第二静态化方式重新对所述FOR循环逻辑代码进行静态化处理。
19.一种电子设备,包括:
20.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行权利要求1-9中任一项所述的方法。
21.一种计算机程序产品,包括计算机程序,其中,所述计算机程序在被处理器执行时实现权利要求1-9中任一项所述方法的步骤。
...【技术特征摘要】
1.一种深度学习框架的代码处理方法,包括:
2.如权利要求1所述的方法,其中,所述确定与所述for循环逻辑关联的待处理迭代器的所属类型,包括:
3.如权利要求1或2所述的方法,其中,所述基于与所述待处理迭代器的所属类型对应的静态化方式,对所述for循环逻辑代码进行静态化处理,包括:
4.如权利要求3所述的方法,其中,所述采用第一静态化方式,对所述for循环逻辑代码进行静态化处理,包括:
5.如权利要求4所述的方法,其中,所述从所述python字节码中抽取出所述for循环逻辑对应的字节码,以生成第一函数,包括:
6.如权利要求5所述的方法,还包括:
7.如权利要求3所述的方法,其中,所述采用第二静态化方式,对所述for循环逻辑代码进行静态化处理,包括:
8.如权利要求7所述的方法,还包括:
9.如权利要求4所述的方法,还包括:
10.一种深度学习框架的代码处理装置,包括:
11.如权利要求10所述的装置,其中,所述确定模块具体用于:...
【专利技术属性】
技术研发人员:吴展飞,熊昆,王震,徐晓健,张留杰,刘红雨,蓝翔,
申请(专利权)人:北京百度网讯科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。