推理引擎汇总
Warning
This documentation is in progress
引言¶
- 关于模型的推理框架有很多,包括 PC / 移动端等等。
- 我在这里做一个简单汇总。但更侧重于寻找一个在 GPU 上,可以支持动态输入且在 GPU 上更快,轻量的推理引擎。
目前已知推理引擎¶
- CPU 端:ONNXruntime, OpenVINO, libtorch, Caffe, PaddleInference
- GPU 端:TensorRT, OpenPPL, AITemplate
- 移动端:NCNN,MNN, Paddle-Lite
- 通吃:TVM, OpenPPL
ONNX Runtime(微软)¶
- 目前仓库中已经在使用的推理引擎,CPU 端最好用的轻量推理引擎。支持动态输入。
- 目前在 GPU 端,动态输入的情况下,速度比 CPU 上还要慢一些,暂时尚未解决。
- ONNX Runtime + TensorRT 结合 → 尝试但未跑通
OpenVINO(英特尔)¶
- CPU 端推理速度更快,支持动态输入。但是占用内存较大,拿空间换了时间。
- 当自己资源不吃紧时,但要求更快地推理速度时,可以考虑用这个。
- GPU 端仅支持自家显卡,暂时用不到。
MNN(阿里)¶
- GPU 端没有找到容易的使用方式,需要自行编译,门槛太高。理想情况是像
onnxruntime-gpu这种,可以快速安装使用。 - 说是支持动态输入,但是尚未找到有效验证方法。
TensorRT(英伟达)¶
- GPU 端快速推理,占坑
- 据说存在内存泄漏的 bug,暂时没有尝试。
NCNN(腾讯)¶
- 移动端比较好用的
- 存在一个问题:已有模型转换为 NCNN 格式,会遇到某些算子不支持情况
Paddle Inference(百度)¶
- 定位是服务端推理框架
- 依赖 Paddle 框架,有些重,但是不失为 GPU 上推理模型的一个选择。
- 目前已经采用,对应
rapidocr_paddle库,用以弥补 GPU 推理的短板。
Paddle Lite¶
- Paddle Lite 是一组工具,可帮助开发者在移动设备、嵌入式设备和 loT 设备上运行模型,以便实现设备端机器学习。
- 定位是移动端和边缘端推理引擎
Paddle.js¶
网页前端推理引擎
FastDeploy(百度)¶
FastDeploy 是一款全场景、易用灵活、极致高效的 AI 推理部署工具, 支持云边端部署。提供超过 🔥160+ Text,Vision, Speech 和跨模态模型📦开箱即用的部署体验,并实现🔚端到端的推理性能优化。包括 物体检测、字符识别(OCR)、人脸、人像扣图、多目标跟踪系统、NLP, Stable Diffusion 文图生成、TTS 等几十种任务场景,满足开发者多场景、多硬件、多平台的产业部署需求。
总结来说就是,将各个场景下的推理引擎做了集成,更加方便易用,大而全。
PaddleX¶
PaddleX 集成飞桨智能视觉领域图像分类、目标检测、语义分割、实例分割任务能力,将深度学习开发全流程从数据准备、模型训练与优化到多端部署端到端打通,并提供统一任务 API 接口及图形化开发界面 Demo。开发者无需分别安装不同套件,以低代码的形式即可快速完成飞桨全流程开发。
总结来说,PaddleX 就是一个整合已有模型的低代码平台。严格意义来说,不算一个推理引擎。