现在主流的推理框架包括:TensorRT,ONNXRuntime,OpenVINO,ncnn,MNN,tnn 等。
针对 NVIDIA 系列显卡具有其他框架都不具备的优势,如果运行在 NVIDIA 显卡上, TensorRT 一般是所有框架中推理最快的。一般的主流的训练框架如T ensorFlow 和 Pytorch 都能转换成 TensorRT 可运行的模型。当然了,TensorRT 的限制就是只能运行在 NVIDIA 显卡上,同时不开源 kernel。
是可以运行在多平台 (Windows,Linux,Mac,Android,iOS) 上的一款推理框架,它接受 ONNX 格式的模型输入,支持 GPU 和 CPU 的推理。唯一不足就是 ONNX 节点粒度较细,推理速度有时候比其他推理框架如 TensorRT 较低。
是 Intel 家出的针对 Intel 出品的 CPU 和 GPU 友好的一款推理框架,同时它也是对接不同训练框架如 TensorFlow,Pytorch,Caffe 等。不足之处可能是只支持 Intel 家的硬件产品。
不同于以上三款推理框架,NCNN/MNN这两款框架都是针对手机端的部署。ncnn 是腾讯开源的,MNN 是阿里开源。ncnn的 优势是开源较早,有非常稳定的社区,开源影响力也较高。MNN 开源略晚,但也是目前比较有影响力的手机端推理框架。tnn是腾讯基于ncnn 上开发的推理框架,而且支持服务端推理。
ncnn代码结构相对直观,而且从实际使用经验上看更易于魔改
https://github.com/Tencent/ncnngithub.com/Tencent/ncnn
MNN代码逻辑相对于NCNN更加复杂,尤其是没接触过NC4HW4数据格式的用户,一开始上来看代码很可能是一脸懵逼,这个格式也导致了代码看起来没有NCHW格式直观易懂,但是对于优化更加友好
https://github.com/alibaba/MNNgithub.com/alibaba/MNN
TNN是腾讯2020年6月开源的基于ncnn基础上的新一代跨平台深度学习推理框架,是首个同时支持移动端、桌面端、服务端的全平台开源版本。TNN新版本在通用性、易用性、性能方面进一步获得提升。参考:腾讯推理框架TNN简介
华为最新开源的全场景深度学习框架MindSpore,其中包含了用于端侧的推理框架MindSpore Lite,支持大部分业界主流的模型,在硬件上除了支持ARM CPU、Mali GPU这些端侧通用硬件以外,对于华为NPU做了更好的支持,性能上有较大的优势。此外,MindSpore Lite针对IoT场景的超轻量化部署技术,对于单片机这些超低功耗的硬件也可运行
MindSpore/mindspore华为最新开源的全场景深度学习框架MindSpore,其中包含了用于端侧的推理框架MindSpore Lite,支持大部分业界主流的模型,在硬件上除了支持ARM CPU、Mali GPU这些端侧通用硬件以外,对于华为NPU做了更好的支持,性能上有较大的优势。此外,MindSpore Lite针对IoT场景的超轻量化部署技术,对于单片机这些超低功耗的硬件也可运行
MindSpore/mindsporegitee.com/mindspore/mindspore正在上传…重新上传取消
NVIDIA的TensorRT和Intel的OpenVINO是硬件厂商针对自己特定硬件的推理框架,如果你只想在这些特定硬件上运行,不考虑跨平台,可以选择。mnn、ncnn都是支持多种硬件的端侧推理框架,性能上MNN略占优势。
针对具体的需求进行选择:
(1)首先考虑训练模型能否转换到具体的推理后端。
(2)其次考虑需要运行在何种平台上,如果是手机端,就是 ncnn 或者 MNN 这种,否则可以考虑 TensorRT,ONNXRuntime,OpenVINO。
(3)再次就是考虑稳定性和运行效率,一般推理越快越稳,就越是受欢迎。最后考虑易用性,用户越友好,文档越全面就越好。