一、什么是ONNX?
Open Neural Network Exchange:开放神经网络交换。
是微软和Facebook提出用来表示深度学习模型的开放格式,定义了一组和环境,平台均无关的标准格式。
无论你使用何种训练框架训练模型(比如TensorFlow/Pytorch/OneFlow/Paddle),在训练完毕后你都可以将这些框架的模型统一转换为ONNX这种统一的格式进行存储。
ONNX文件不仅仅存储了神经网络模型的权重,同时也存储了模型的结构信息以及网络中每一层的输入输出和一些其它的辅助信息。
在获得ONNX模型之后,模型部署人员自然就可以将这个模型部署到兼容ONNX的运行环境中去。
将Pytorch或者TensorFlow模型转化为ONNX模型(ONNX模型一般用于中间部署阶段),然后再拿转化后的ONNX模型进而转化为我们使用不同框架部署需要的类型。
典型的几个线路:
- Pytorch -> ONNX -> TensorRT
- Pytorch -> ONNX -> TVM
- TF – onnx – ncnn
等等,ONNX相当于一个翻译的作用,这也是为什么ONNX叫做Open Neural Network Exchange。