超轻量!AI模型编译器MegCC开源,让推理引擎体积变小小小小小……

2022 年 11 月 10 日 PaperWeekly

目前社区中存在着不少个移动端深度学习推理框架(比如NCNN、MNN),它们为社区用户在移动端部署深度学习提供了相当多的便利,但是这些推理框架有一个共性问题:随着不断迭代以及性能优化,运行时库会逐渐增大,尤其是不同算子 fuse 时,会导致大量长尾算子,使 App 或 SDK 体积变得尾大不掉。


为了解决这个问题,由 MegEngine 团队开源的 MegCC 创新性地使用模型预编译方案,生成模型推理必要的代码,将与模型推理无关的代码去除,从而极大程度减小了推理引擎的体积。其主要方法是将传统框架运行时的必要步骤如计算图优化、Kernel 选择、内存分配等全部移到编译过程中,最大程度减少了 Runtime 时的二进制体积大小,并根据模型信息进行进一步的性能优化。

GitHub 开源地址:https://github.com/MegEngine/MegCC

方案特点


  • 伴随框架的迭代将不再增大推理引擎体积
  • 算子融合可以在编译时根据模型信息生成对应的代码
  • 模型编译时可以获得整个计算图的信息,以便继续进行极致的性能优化
  • 可以吸收社区在代码生成方面的经验用于为 MegCC 生成代码

不同于传统推理框架,MegCC 是一个真实的深度学习模型编译器,具备 极轻量的 Runtime 二进制体积、高性能、方便移植、极低内存使用以及快启动 等核心特点。用户可在 MLIR上进行计算图优化,内存规划,最后通过预先写好的代码模版进行代码生成。 目前,MegCC 已支持 Arm64、Armv7、x86、risc-v 以及单片机平台。
MegCC 架构

使用方法及效果

使用 MegCC 完成模型部署只需要完成以下 3 步:
  1. 模型编译:编译 MegEngine 模型,生成运行这个模型对应的 Kernel 以及优化之后的模型。
  2. Runtime 编译:这个阶段会将 Runtime 和上一步中生成的 Kernel 一起编译成一个静态库。
  3. 集成到应用中:调用上一步编译的静态库的接口进行推理。


详细操作指南见:https://github.com/MegEngine/MegCC/blob/main/doc/how-to-use-chinese.md

以 YOLOX 模型为例,运行效果如下图:


从图中可见,MegCC 生成的推理程序在保证推理性能良好(模型测速结果为 670ms)的情况下,其大小可以达到 95KB。

未来计划

目前 MegCC 仅支持 MegEngine 模型作为输入,其他模型格式可以考虑转换到 ONNX,然后通过 mgeconvert 进行模型格式转换。

预计在未来 2 个月内,MegCC 将支持更多的模型格式编译。同时实现以下进阶功能:

  • 支持 ONNX 模型作为输入
  • 更多的 Kernel fusion
  • 支持更多的后端设备

大家在使用 MegCC 过程中有任何问题,欢迎随时提 issue 告诉我们,也欢迎提 PR 帮助 MegCC 变得更好。

精彩预告

旷视 MegEngine 端侧推理负责人陈其友将于2022 年 11 月 19 日参加 DataFunSummit2022 期间举办的 AI 基础软件架构峰会“深度学习框架论坛”,并带来《MegCC 用模型编译的方式实现超轻量端上高性能推理》主题演讲,从目前端上推理的现状分析,到创新使用模型预编译方案的 MegCC 详解,带你领略新一代 AI 模型编译器 MegCC 的魅力。

演讲提纲:

1. 概述目前端上推理的现状,主要是推理引擎体积方面的情况

2. 介绍 MegCC 的编译器方案

3. 分享「超轻量、高性能、扩展性强」等特性的实现思路

4. 总结 MegCC 的现状、优势以及未来的计划

精彩不容错过,与您相约线上直播~


点击文末阅读原文,立即报名



登录查看更多
1

相关内容

基于图神经网络的空间加速器可移植映射
专知会员服务
5+阅读 · 2022年7月2日
【Manning新书】MLOps工程规模化,344页pdf
专知会员服务
78+阅读 · 2022年5月4日
EMNLP 2021 | 预训练跨语言模型中的大词表构建及使用
专知会员服务
20+阅读 · 2022年1月5日
【NeurIPS2020-华为】DynaBERT:具有自适应宽度和深度的动态BERT
TensorFlowLite:端侧机器学习框架
专知会员服务
30+阅读 · 2020年8月27日
PyTorch 源码解读之即时编译篇
极市平台
0+阅读 · 2022年5月4日
3倍加速CPU上的BERT模型部署
ApacheMXNet
11+阅读 · 2020年7月13日
TurboTransformers开源技术文档
微信AI
0+阅读 · 2020年4月24日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
1+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2008年12月31日
国家自然科学基金
0+阅读 · 2008年12月31日
Arxiv
1+阅读 · 2023年1月12日
Arxiv
26+阅读 · 2022年1月13日
Arxiv
12+阅读 · 2021年11月1日
Arxiv
28+阅读 · 2021年9月18日
Arxiv
11+阅读 · 2018年1月11日
VIP会员
相关基金
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
1+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2008年12月31日
国家自然科学基金
0+阅读 · 2008年12月31日
Top
微信扫码咨询专知VIP会员