目前社区中存在着不少个移动端深度学习推理框架(比如NCNN、MNN),它们为社区用户在移动端部署深度学习提供了相当多的便利,但是这些推理框架有一个共性问题:随着不断迭代以及性能优化,运行时库会逐渐增大,尤其是不同算子 fuse 时,会导致大量长尾算子,使 App 或 SDK 体积变得尾大不掉。
为了解决这个问题,由 MegEngine 团队开源的 MegCC 创新性地使用模型预编译方案,生成模型推理必要的代码,将与模型推理无关的代码去除,从而极大程度减小了推理引擎的体积。其主要方法是将传统框架运行时的必要步骤如计算图优化、Kernel 选择、内存分配等全部移到编译过程中,最大程度减少了 Runtime 时的二进制体积大小,并根据模型信息进行进一步的性能优化。
GitHub 开源地址:https://github.com/MegEngine/MegCC
方案特点
伴随框架的迭代将不再增大推理引擎体积
算子融合可以在编译时根据模型信息生成对应的代码
模型编译时可以获得整个计算图的信息,以便继续进行极致的性能优化
可以吸收社区在代码生成方面的经验用于为 MegCC 生成代码