目前社区曾经有多个挪动端深度学习推理框架,如:NCNN、MNN… 这些推理引擎都给社区的用户带来了在挪动端上部署深度学习十分多的便当,然而他们也都有一个共性问题:随着一直地迭代以及性能优化,运行时库会逐步的增大,特地是在不同算子 fuse 的时候,会导致十分多的长尾算子,这就会增大咱们 App 或者 SDK 的体积。
为了解决这个问题,由 MegEngine 团队开源的 MegCC 翻新应用模型预编译的计划,生成模型推理必要的代码,去除掉了和模型推理无关的代码,因而极大水平上缩小了推理引擎的体积。次要办法是:
将传统框架运行时的必要步骤:计算图优化、Kernel 抉择、内存调配都移到编译时,从而最大水平上缩小了 Runtime 时的二进制体积大小,并依据模型信息做进一步的性能优化。
该计划有以下长处:
- 随着框架的迭代将不会使得推理引擎的体积增大
- 很多的算子交融能够在编译时依据模型信息生成对应的 code
- 模型编译时能够取得整个计算图的信息,这样能够进一步进行极致的性能优化
- 能够排汇社区在代码生成方面的教训用于为 MegCC 生成 code
不同于传统推理框架,MegCC 是一个真真实实的深度学习模型编译器,具备极其轻量的 Runtime 二进制体积,高性能,不便移植,极低内存应用以及快启动等外围特点。用户可在 MLIR 上进行计算图优化,内存布局,最初通过事后写好的 code 模版进行代码生成。目前,MegCC 已反对 Arm64,Armv7,x86,risc-v 以及单片机平台。
GitHub 开源地址:https://github.com/MegEngine/MegCCgithub.com/MegEngine/MegCC
应用办法及成果
应用 MegCC 实现模型部署只须要实现以下 3 步:
- 模型编译 :编译 MegEngine 模型,生成运行这个模型对应的 Kernel 以及优化之后的模型。
- Runtime 编译 :这个阶段会将 Runtime 和上一步中生成的 Kernel 一起编译成一个动态库。
- 集成到利用中 :调用上一步编译的动态库的接口进行推理。
以 YOLOX 模型为例,运行成果如下图:
从图中可见,MegCC 生成的推理程序在保障推理性能良好(模型测速后果为 670ms)的状况下,其大小能够达到 95KB。
具体操作文档:MegCC/how-to-use-chinese.md at main · MegEngine/MegCC
手把手操作教程:挑战 100KB 可执行程序高性能推理 YOLOX 模型
将来打算
目前 MegCC 仅反对 MegEngine 模型作为输出,其余模型格局能够思考转换到 ONNX,而后通过 mgeconvert 进行模型格局转换。
预计在将来 2 个月内,MegCC 将反对更多的模型格局编译。同时实现以下进阶性能:
- 反对 ONNX 模型作为输出
- 做更多的 Kernel fusion
- 反对更多的后端设施
大家在应用 MegCC 过程中有任何问题,欢送随时提 issue 通知咱们,也欢送提 PR 帮忙 MegCC 变得更好。
精彩预报
在 2022 年 11 月 19 日,DataFunSummit2022:AI 根底软件架构峰会“深度学习框架论坛”,旷视科技 MegEngine 端侧推理负责人陈其友将带来《MegCC 用模型编译的形式实现超轻量端上高性能推理》主题演讲,从目前端上推理的现状剖析,到翻新应用模型预编译计划的 MegCC 详解,带你领略新一代 AI 模型编译器 MegCC 的魅力。
演讲提纲:
- 概述目前端上推理的现状,次要是推理引擎体积方面的状况
- 介绍 MegCC 的编译器计划
- 分享「超轻量、高性能、扩展性强」等个性的实现思路
- 总结 MegCC 的现状、劣势以及将来的打算
理解更多流动详情及报名形式,请移步:
重磅!AI 根底软件架构峰会来袭,算法能力的新跃迁!
精彩不容错过,与您相约线上直播~
附
GitHub:MegEngine 旷视天元(欢送 star~
Gitee:MegEngine/MegEngine
MegEngine 官网:MegEngine- 深度学习,简略开发
欢送退出 MegEngine 技术交换 QQ 群:1029741705