当前位置: 首页 > 专利查询>之江实验室专利>正文

基于统一后端引擎的深度学习框架与硬件设备适配方法组成比例

技术编号:31593040 阅读:9 留言:0更新日期:2021-12-25 11:40
本发明专利技术公开了一种基于统一后端引擎的深度学习框架与硬件设备适配方法,包括如下步骤:S1:深度学习框架添加统一后端引擎;S2:硬件设备添加统一后端引擎;S3:转换计算图,将深度学习框架编译生成的计算图转换为统一后端引擎的中间表示;S4:编译中间表示,统一后端引擎在硬件设备上编译中间表示生成可执行对象;S5:运行可执行对象,深度学习框架在硬件设备上运行可执行对象;S6:统一后端引擎的内存管理。本发明专利技术打通了深度学习框架与硬件设备,将深度学习框架源码与芯片底层软件全面对接,尽可能最大限度地释放芯片的硬件能力,为端侧AI提供强劲算力。提供强劲算力。提供强劲算力。

【技术实现步骤摘要】
基于统一后端引擎的深度学习框架与硬件设备适配方法


[0001]本专利技术涉及人工智能和国产化AI芯片
,特别涉及一种基于统一后端引擎的深度学习框架与硬件设备适配方法。

技术介绍

[0002]我国国产化AI芯片相对于国际主流品牌仍有一定的差距。主要是国产芯片计算性能比较薄弱,适配性较差。随着国家对集成电路领域的大力支持,国内华为、百度、旷视科技等都已经开源了国产AI框架,寒武纪、天数智芯、燧原科技等都自研了多款国产AI芯片。但针对国产的适配,仍处于初步阶段,不利于国产自主可控设备的推广建设。主流深度学习框架搭建国产AI芯片,提升国产整机计算能力,面向不同智能化应用场景提供模型算法,推动国产基础平台的应用推广和发展,成为本领域亟待解决的重大课题。而实现上述目的,本领域面临一个现实性的技术难题:如何解决商用AI卡与国产深度学习框架不兼容问题。

技术实现思路

[0003]本专利技术的目的在于提供一种基于统一后端引擎的深度学习框架与硬件设备适配方法,以克服现有技术中的不足。
[0004]为实现上述目的,本专利技术提供如下技术方案:本专利技术公开了一种基于统一后端引擎的深度学习框架与硬件设备适配方法,包括如下步骤:S1:深度学习框架添加统一后端引擎;S2:硬件设备添加统一后端引擎;S3:转换计算图,将深度学习框架编译生成的计算图转换为统一后端引擎的中间表示;S4:编译中间表示,统一后端引擎在硬件设备上编译中间表示生成可执行对象;S5:运行可执行对象,深度学习框架在硬件设备上运行可执行对象;S6:统一后端引擎的内存管理。
[0005]所述步骤S1包括如下子步骤:S11:深度学习框架注册硬件设备,向深度学习框架源码里添加一个硬件设备对应的设备字段,为统一后端引擎针对的硬件创建一个设备类型的枚举类,在设备类型中增加硬件对应的设备字段;S12:深度学习框架注册统一后端引擎,向深度学习框架添加一个统一后端引擎字段;S13:深度学习框架添加统一后端引擎的编译器;S14:深度学习框架注册统一后端引擎的编译器,将新添加的编译器注册到统一后端引擎中;S15:深度学习框架添加统一后端引擎的计算图可执行对象,为统一后端引擎增加
一个对应的计算图可执行对象,并实现运行接口。
[0006]所述步骤S2包括如下子步骤:S21:硬件设备添加统一后端引擎的编译器,硬件设备添加统一后端引擎,在硬件设备对应的基础软件库中添加统一后端引擎的编译器;S22:硬件设备注册统一后端引擎的编译器;S23:硬件设备添加统一后端引擎的可执行对象。
[0007]所述步骤S3包括如下子步骤:S31:创建统一后端引擎的图加载器,深度学习框架添加一个统一后端引擎的图加载器,所述图加载器继承自框架的计算图算子,并实现前向传播接口,在图计算进入运行期阶段,框架利用运行器开始运行计算图中每个算子的核函数时,选择统一后端引擎编译和运行的路线;S32:注册统一后端引擎的图加载器,利用所述图加载器接收框架编译生成的计算图,具有如下子步骤:S321:创建一个全局静态字典,其中key 值是一个枚举类型的元素,枚举出所有可选的图加载器变量, value 值是具体的图加载器的实现;S322:向枚举类型的 key 值列表里添加统一后端引擎的图加载器枚举成员;S323:使用统一后端引擎,框架前端将一个统一后端引擎图加载器的 key 值传到注册表中,框架自身的图执行器选择利用对应的统一后端引擎的图加载器 value 值来启动图计算过程;S33:将计算图转换为统一后端引擎的中间表示,具有如下子步骤:S331:图计算进入运行期时,框架的图执行器通过统一后端引擎的图加载器将框架计算图加载到后端引擎中,并执行前向传播接口;S332:在前向传播接口中创建一个计算图转换接口,所述计算图转换接口负责将框架计算图转换为统一后端引擎的中间表示;S333:所述计算图转换接口首先按照框架计算图的拓扑顺序遍历所有节点,其次,为每个节点中的算子创建其对应的统一后端引擎的中间表示,最后,执行每个算子核函数的计算图转换,生成统一后端引擎的中间表示。
[0008]所述步骤S4包括如下子步骤:S41:框架计算图转换为统一后端引擎的中间表示,框架端统一后端引擎的编译器的编译接口中添加编译中间表示函数,所述中间表示函数输入中间表示;S42:框架端统一后端引擎的编译器通过中间表示函数接口将中间表示传入硬件设备端的统一后端引擎的编译器的运行后端的接口中;S43:统一后端引擎的编译器在运行后端的接口中将中间表示编译生成可执行对象。
[0009]所述步骤S5中深度学习框架在硬件设备上运行可执行对象的过程如下:硬件设备端统一后端引擎的执行器接收统一后端引擎的编译器生成的可执行对象,运行该可执行对象,输出图计算的结果。
[0010]所述步骤S6中分配内存的具体步骤如下:S61:在框架端创建一个为统一后端引擎分配内存的内存分配器,并新增一个填充
内存的接口,所述内存分配器负责在框架端构造好后端引擎需要的内存,并传给统一后端引擎;S62:内存分配器在框架端的内存是按照后端引擎需要的内存顺序进行申请,当硬件设备全部运行完之后,内存分配器的填充内存的接口把统一后端引擎这部分内存按照原样的内存顺序拷贝到框架端,使得框架为统一后端引擎申请的内存顺序与统一后端引擎内存顺序实现一一映射。
[0011]为了使深度学习框架生成的计算图能够在统一后端引擎通过自身的设备字段对象注册的指定硬件设备上编译运行,统一后端引擎必须通过深度学习框架获取用户在框架前端指定的硬件,其方法为:构建一个框架前端用户指定的硬件类型对象与统一后端引擎的设备ID的字段对象一一映射的字典。
[0012]所述步骤S13中统一后端引擎的编译器采用了LLVM传统编译器的路线,统一后端引擎的编译器继承自 LLVM 编译器类,并实现对应的编译接口,所述统一后端引擎的编译器的输入是框架自身的计算图,按拓扑顺序遍历子图中的每个节点,依次将计算图节点编译成具体的可执行对象,输出为统一后端引擎的可执行对象。
[0013]为方便处理不同类型的算子,统一后端引擎的编译器的编译过程构造了统一后端引擎的算子上下文信息类型和统一后端引擎的算子的核函数类型两个数据结构类型,具体包括如下两个过程:编译单个算子:统一后端引擎的算子的核函数类型是继承于框架自身的算子的核函数类型,根据算子类型完成单个算子的编译过程,统一后端引擎的算子的核函数编译后输出函数代码、中间缓存,以及函数代码输入和输出对应的参数,将统一后端引擎的算子的核函数注册到统一后端引擎对应的算子核函数工厂中,采用工厂注册模式,可使后端引擎划分子图时可以判断该引擎是否支持某个类型的算子;存储元信息和编译结果:统一后端引擎的算子上下文信息类型临时存储编译需要的元信息和编译结果,为统一后端引擎的算子的核函数提供必要的接口,统一后端引擎的算子上下文信息类型接受两个输入,当前计算图节点和当前所有已经创建过的参数,将经过统一后端引擎的算子的核函数编译后输出的函数代码、中间缓存,以及函数代码输入和输出对应的参数填充到该上下文信本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于统一后端引擎的深度学习框架与硬件设备适配方法,其特征在于:包括如下步骤:S1:深度学习框架添加统一后端引擎;S2:硬件设备添加统一后端引擎;S3:转换计算图,将深度学习框架编译生成的计算图转换为统一后端引擎的中间表示;S4:编译中间表示,统一后端引擎在硬件设备上编译中间表示生成可执行对象;S5:运行可执行对象,深度学习框架在硬件设备上运行可执行对象;S6:统一后端引擎的内存管理。2.如权利要求1所述的基于统一后端引擎的深度学习框架与硬件设备适配方法,其特征在于:所述步骤S1包括如下子步骤:S11:深度学习框架注册硬件设备,向深度学习框架源码里添加一个硬件设备对应的设备字段,为统一后端引擎针对的硬件创建一个设备类型的枚举类,在设备类型中增加硬件对应的设备字段;S12:深度学习框架注册统一后端引擎,向深度学习框架添加一个统一后端引擎字段;S13:深度学习框架添加统一后端引擎的编译器;S14:深度学习框架注册统一后端引擎的编译器,将新添加的编译器注册到统一后端引擎中;S15:深度学习框架添加统一后端引擎的计算图可执行对象,为统一后端引擎 增加一个对应的计算图可执行对象,并实现运行接口。3.如权利要求1所述的基于统一后端引擎的深度学习框架与硬件设备适配方法,其特征在于:所述步骤S2包括如下子步骤:S21:硬件设备添加统一后端引擎的编译器,硬件设备添加统一后端引擎,在硬件设备对应的基础软件库中添加统一后端引擎的编译器;S22:硬件设备注册统一后端引擎的编译器;S23:硬件设备添加统一后端引擎的可执行对象。4.如权利要求2所述的基于统一后端引擎的深度学习框架与硬件设备适配方法,其特征在于:所述步骤S3包括如下子步骤:S31:创建统一后端引擎的图加载器,深度学习框架添加一个统一后端引擎的图加载器,所述图加载器继承自框架的计算图算子,并实现前向传播接口,在图计算进入运行期阶段,框架利用运行器开始运行计算图中每个算子的核函数时,选择统一后端引擎编译和运行的路线;S32:注册统一后端引擎的图加载器,利用所述图加载器接收框架编译生成的计算图,具有如下子步骤:S321:创建一个全局静态字典,其中key 值是一个枚举类型的元素,列举出所有可选的图加载器变量, value 值是具体的图加载器的实现; S322:向枚举类型的 key 值列表里添加统一后端引擎的图加载器枚举成员;S323:使用统一后端引擎,框架前端将一个统一后端引擎图加载器的 key 值传到注册表中,框架自身的图执行器选择利用对应的统一后端引擎的图加载器 value 值来启动图计算过程;
S33:将计算图转换为统一后端引擎的中间表示,具有如下子步骤:S331:图计算进入运行期时,框架的图执行器通过统一后端引擎的图加载器将框架计算图加载到后端引擎中,并执行前向传播接口;S332:在前向传播接口中创建一个计算图转换接口,所述计算图转换接口负责将框架计算图转换为统一后端引擎的中间表示;S333:所述计算图转换接口首先按照框架计算图的拓扑顺序遍历所有节点,其次,为每个节点中的算子创建其对应的统一后端引擎的中间表示,最后,执行每个算子的核函数的计算图转换,生成统一后端引擎的中间表示。5.如权利要求1所述的基于统一后端引擎的深度学习框架与硬件设备适配方法,其特征在于:所述步骤S4包括如下子步骤:...

【专利技术属性】
技术研发人员:王宏升杨非华炜鲍虎军
申请(专利权)人:之江实验室
类型:发明
国别省市:

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

1