跳转至

推理引擎汇总

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

ONNXRuntime(微软)

  • 目前仓库中已经在使用的推理引擎,CPU端最好用的轻量推理引擎。支持动态输入。
  • 目前在GPU端,动态输入的情况下,速度比CPU上还要慢一些,暂时尚未解决。
  • ONNXRuntime + 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就是一个整合已有模型的低代码平台。严格意义来说,不算一个推理引擎。

评论