Onnx以及Onnx runtime

一、ONNX简介

它是微软和Facebook提出的一种表示深度学习模型的开放格式,定义了一套独立于环境和平台的标准格式。

二、ONNX作用

无论你使用什么样的训练框架来训练模型(比如TensorFlow/Pytorch/OneFlow/Paddle),你都可以在训练后将这些框架的模型统一转为ONNX存储。 ONNX文件不仅存储了神经网络模型的权重,还存储了模型的结构信息、网络中各层的输入输出等一些信息。 实际中将转换后的ONNX模型,转换成我们需要使用不同框架部署的类型,通俗来说ONNX相当于一个翻译。

三、常见使用场景
• Pytorch -> ONNX -> TensorRT
• Pytorch -> ONNX -> TVM
• TF – onnx – ncnn

四、Onnx runtime简介

ONNXRuntime是微软推出的一款推理框架,用户可以非常便利的用其运行一个onnx模型。ONNXRuntime支持多种运行后端包括CPU,GPU,TensorRT,DML等。可以说ONNXRuntime是对ONNX模型最原生的支持。

虽然大家用ONNX时更多的是作为一个中间表示,从pytorch转到onnx后直接喂到TensorRT或MNN等各种后端框架了= =,但这并不能否认ONNXRuntime是一款非常优秀的推理框架(微软出品,必属精品)。而且由于其自身只包含推理功能(1.2版本,最新的ONNXRuntime甚至已经可以训练,可见微软在其上面的野心还是有的),对比主流框架源码看起来没有那么复杂难懂,通过阅读其源码可以非常清晰的理解深度学习框架的一些核心功能原理(op注册,内存管理,运行逻辑等)。接下来的一系列文章尝试对ONNXRuntime的源码进行阅读学习,对理解深度学习框架的工作原理还是很有帮助的。

参考博文:

  1. https://zhuanlan.zhihu.com/p/346544539
  2. https://blog.csdn.net/m0_46579823/article/details/127889230

猜你喜欢

转载自blog.csdn.net/zhuguiqin1/article/details/130508696