[发明专利]基于C代码生成的神经网络模型推理和训练方法有效
申请号: | 201910799245.8 | 申请日: | 2019-08-28 |
公开(公告)号: | CN112445465B | 公开(公告)日: | 2022-09-13 |
发明(设计)人: | 肖谦;周文浩;钱宏;沈莉;管茂林;武文浩;朱琪;吴伟 | 申请(专利权)人: | 无锡江南计算技术研究所 |
主分类号: | G06F8/30 | 分类号: | G06F8/30;G06F8/41;G06N3/10;G06N3/08;G06N5/04 |
代理公司: | 苏州创元专利商标事务所有限公司 32103 | 代理人: | 王健 |
地址: | 214083 江苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 代码 生成 神经网络 模型 推理 训练 方法 | ||
1.一种基于C代码生成的神经网络模型推理和训练方法,其特征在于:包括以下步骤:
S1、以通过各种AI编程框架开发的模型作为输入,AI框架编译器识别各种模型格式并转化为统一的计算图,然后,AI框架编译器通过lower和优化流程,将输入的模型转化为底层IR;
S2、将S1中生成的计算图输入C代码生成模块,输出总控函数,此总控函数为训练、推理计算过程的主函数,负责调用各个底层IR生成的对应子函数,并准备各IR的参数;
S3、C代码生成模块针对不同的底层IR,生成对应的C代码,具体如下:
S31、对于对应于基础算子库的底层IR,生成基础算子的函数接口声明,由总控函数负责调用,对于AI框架编译器自定义的底层IR,C代码生成模块根据该IR的含义,输出对应的C代码;
S32、将基础算子库转化为C语言实现的C-基础算子库,并根据目标硬件平台完成初步优化;
S4、将生成的总控函数、各IR对应的C代码以及C-基础算子库,输入到支持C语言和相应硬件平台的基础编译器,通过基础编译器的优化过程转化为运行程序,并在对应硬件平台上执行推理过程、训练过程。
2.根据权利要求1所述的基于C代码生成的神经网络模型推理和训练方法,其特征在于:在S3中,所述对应于基础算子库的底层IR为卷积操作IR。
3.根据权利要求1所述的基于C代码生成的神经网络模型推理和训练方法,其特征在于:在S3中,所述AI框架编译器自定义的底层IR为规则循环kernel IR、细粒度基础运算IR。
4.根据权利要求3所述的基于C代码生成的神经网络模型推理和训练方法,其特征在于:当所述AI框架编译器自定义的底层IR为规则循环kernel IR时,通过循环优化技术对kernel进行优化。
5.根据权利要求1所述的基于C代码生成的神经网络模型推理和训练方法,其特征在于:所述C代码生成模块通过动态空间管理接口完成整个计算过程的统一内存申请和管理,计算过程中的各变量都使用动态申请的统一内存的一部分,以C指针的方式来表示。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于无锡江南计算技术研究所,未经无锡江南计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910799245.8/1.html,转载请声明来源钻瓜专利网。