犀牛鸟 2026 研究笔记 estelledc.github.io

移动端/边缘 AI 推理引擎 开源项目全景对比

调研时间:2026-06-22 目的:横向对比移动端/边缘 AI 推理引擎的设计取舍,为犀牛鸟参与做知识储备

6 个项目一览

# 项目 Stars 主语言 核心设计思路 仓库
1 ncnn ~22K C++ 零依赖极致轻量推理,Vulkan GPU 计算着色器 Tencent/ncnn
2 ONNX Runtime ~21K C++ 跨平台 ML 推理加速器,ONNX 标准生态 microsoft/onnxruntime
3 MNN ~9.5K C++ 阿里移动推理 + 端侧训练 + LLM 推理一体化 alibaba/MNN
4 Paddle-Lite ~7K C++ 百度端侧推理,10+ 异构后端,国产 NPU 覆盖最广 PaddlePaddle/Paddle-Lite
5 MACE ~5K C++ 小米移动 AI 计算引擎,Hexagon DSP/HVX 优化,功耗管理 XiaoMi/mace
6 TNN ~4.5K C++ 腾讯优图 ncnn 继任者,多后端统一抽象(OpenCL/Metal/NPU) Tencent/TNN

设计思路对比

架构路线(核心差异)

每个项目对”模型怎么在手机上跑快”这个问题给出了不同答案:

零依赖极简模式(ncnn):不依赖任何第三方库——没有 protobuf、没有 Eigen、没有 BLAS,所有算子手写优化。编译产物可以小到几百 KB。类比:自己从零搭帐篷,不买任何预制件,每根杆子都量身定做,最后帐篷又轻又合身,但搭建过程全靠手艺。

ONNX 标准枢纽模式(ONNX Runtime):以 ONNX 格式为中心,定义标准算子集,通过 Execution Provider 对接各硬件后端。类比:国际标准集装箱——不管什么货物(模型),只要装进标准箱(ONNX),全世界的港口(硬件)都能装卸。

全栈端侧模式(MNN):不只做推理,还做端侧训练和 LLM 推理。一个框架覆盖”训练-量化-部署-推理”全链路。类比:瑞士军刀——剪刀、刀片、开瓶器都有,不是每个功能都是最强,但一把就够用。

异构后端大满贯模式(Paddle-Lite):支持 10+ 硬件后端——华为昇腾/麒麟 NPU、瑞芯微 NPU、MTK APU、Intel OpenVINO 等。国产芯片覆盖最广。类比:万能充电器,不管什么接口的设备都能充,特别是国产设备。

DSP 深度优化模式(MACE):针对高通 Hexagon DSP/HVX 指令集做深度优化,强调功耗管理和热控制。类比:为特定赛道定制的赛车——在那条赛道上跑得最快最省油,但换条赛道就没那么突出。

多后端统一抽象模式(TNN):在 ncnn 基础上重新设计,统一 OpenCL/Metal/NPU 等后端的抽象层,用 Blob(数据)+ Layer(算子)的简洁抽象覆盖多平台。类比:ncnn 的”升级翻新版”——保留了轻量基因,加上了多平台统一管理的能力。

后端支持对比

项目 ARM CPU x86 CPU Vulkan GPU OpenCL GPU Metal GPU NPU/DSP CUDA
ncnn ✓ NEON ✓ SSE/AVX ✓(核心) - - - -
ONNX Runtime - - ✓ CoreML ✓ NNAPI/QNN
MNN ✓ NEON ✓ SSE/AVX ✓ CoreML/NNAPI
Paddle-Lite ✓ NEON - ✓ 10+ NPU -
MACE ✓ NEON - - - ✓ Hexagon DSP -
TNN ✓ NEON - ✓ NNAPI/NPU

ncnn 的 Vulkan 后端是移动推理框架中独一份的——通过 Vulkan Compute Shader 实现 GPU 加速,跨 Android/Windows/Linux/macOS 全平台,不依赖厂商私有 API。

模型格式对比

项目 原生格式 可转换来源 转换工具
ncnn .param + .bin Caffe/ONNX/TF/MXNet/PyTorch(经 ONNX) ncnn 自带转换器
ONNX Runtime .onnx(标准格式) PyTorch/TF/Keras/PaddlePaddle 等原生导出 各框架原生支持
MNN .mnn ONNX/TF/Caffe/TorchScript MNNConvert
Paddle-Lite .nb(优化后) PaddlePaddle/ONNX/Caffe opt 工具
MACE .pb + .data TF/ONNX/Caffe mace_tools
TNN .tnnproto + .tnnmodel ONNX/TF/Caffe/PyTorch convert2tnn

ONNX Runtime 的优势是直接使用 ONNX 标准格式,其他框架都需要自己的转换步骤。

特色能力对比

项目 端侧训练 LLM 推理 INT8 量化 FP16 推理 动态 Shape 模型加密
ncnn - 社区支持
ONNX Runtime - ✓(GenAI) -
MNN ✓(内建) -
Paddle-Lite - - -
MACE - - 受限
TNN - - -

MNN 在端侧训练和 LLM 推理两个方向走得最远——可以在手机上做模型微调和大语言模型推理,其他框架主要聚焦传统推理场景。

代码量级对比

ONNX Runtime:    ~8,000+ files(覆盖云/边/端全平台,代码最庞大)
Paddle-Lite:     ~3,000+ files(10+ 后端各自实现,代码量大)
MNN:             ~2,000+ files(推理+训练+LLM,功能全面)
ncnn:              ~500 files(极简设计,核心算子手写)
TNN:               ~800 files(ncnn 改进版,多后端抽象层)
MACE:              ~600 files(聚焦移动端,较精简)

ncnn 代码量最小,约 500 个核心源文件,所有算子手写实现无第三方依赖,通读成本最低。

学习价值排序

从”理解移动端推理引擎设计”的角度:

  1. ncnn — 代码最精简,零依赖设计意味着所有算子实现完全暴露,ARM NEON / Vulkan Compute Shader 的手写优化是教科书级别;移动推理框架中社区最大(22K star),文档和 Wiki 最完善
  2. ONNX Runtime — 行业标准,理解 ONNX 算子规范和 Execution Provider 插件机制对全局视野有帮助
  3. MNN — 端侧训练 + LLM 推理的全栈设计有前瞻性,值得研究其”推理引擎如何扩展为全能框架”
  4. TNN — 作为 ncnn 的”官方继任者”,对比两者架构演进可以理解设计取舍
  5. Paddle-Lite — 国产 NPU 后端适配的工程经验,对理解异构计算有帮助
  6. MACE — Hexagon DSP 优化和功耗管理是独特视角,但项目维护活跃度下降

推荐阅读路线

  1. 先通读 ncnn 的核心推理管线(~500 文件,3-5 天)——理解 Mat 数据结构、Layer 算子抽象、Net 推理调度,重点看 ARM NEON 和 Vulkan 后端实现
  2. 对比 ONNX Runtime 的 Execution Provider 机制(理解”标准化 vs 定制化”的取舍)
  3. 对比 MNN 的全栈设计(理解”推理引擎扩展到训练和 LLM”需要哪些抽象)
  4. 如果时间允许,对比 TNNncnn 的架构演进(理解”重构 vs 重写”的工程决策)

这个阅读顺序会让你从”理解一个极简实现” → “理解标准化与生态” → “理解功能扩展边界” → “理解架构演进”递进。