运行时超轻量,高效,移植简单的深度学习模型
运行时超轻量,高效,移植简单的深度学习模型MegCC是一个面向推理的深度学习模型编译器,具有如下特点:极其轻量的运行时库:只编译mobilenetv1模型进行推理情况下,strip符号后,整个运行时二进制大小只有81KB。高性能:Arm上的每一个Kernel都是经过人工精心调优的,同样的模型,性能比MegEngine好。方便移植:运行时所有Code都是纯C代码,可以方便在Arm,X86,裸板中进行移植。低内存使用,快启动:模型编译期间会进行内存规划,尽可能的复用内存,并进行静态绑定,减少运行时开销。MegCC主要由两部分组成:编译器:负责将模型进行编译,优化,最终生成新模型和对应的Kernelsruntime运行时:运行时需要和生成的Kernels结合在一起进行编译,编译完成之后可以加载编译器生成的模型,并计算输出结果MegCC模型编译器是基于MLIR框架构建起来的,使用MLIR的IR进行图优化,内存规划以及Kernel生成,目前MegCC生成的Kernel大多数都是基于人工优化之后写好的模板生成的。MegCC支持多种场景的模型编译,不仅仅包含静态shape编译,而且还支持动态shape的编译,多个模型同时编译,以及同一个模型多种shape同时编译,另外为了获得极致的最小运行时库,还提供必要的纯C形式的CV算子生成。模型编译完成之后,MegCC会生成两个产物,分别是:优化之后的新模型:这个模型里面包含整个计算图的信息,以及每一个Operator运行时的内存规划信息,输入输出信息,计算Kernel的信息运行这些模型对应的Kernel:上面模型运行时候需要的所有高性能Kernel的集合。MegCCruntime会在运行时会加载生成的模型,并调用生成的高性能Kernel进行计算,并输出计算结果,目前测试一个可以高效运行mobilenetv1的可执行文件大小仅仅只需要81KB。MegCC现在支持的平台处理器平台有Arm64/ArmV7/X86/risc-v/单片机,所有支持的Operator列表见:.