ONNX是什么


Open Neural Network Exchange (ONNX) 是一个开放式的机器学习模型文件格式。ONNX文件不仅仅存储了神经网络模型的权重,同时也存储了模型的结构信息以及网络中每一层的输入输出和一些其它的辅助信息,具有通用性和可移植性两大优点。通用性即onnx既适用于传统机器学习模型,也适用于深度学习模型。可移植性体现在目前几大流行的机器学习和深度学习框架(Caffe2,PyTorch,Microsoft Cognitive Toolkit,Apache MXNet,TensorRT)都提供了onnx的支持,可以方便用于将模型从一个框架迁移到另一个框架,训练和加载推理在不同的框架上完成,不同框架训练的模型在统一的平台上加载推理,以及跨语言的模型调用。跨语言模型调用可以通过onnxruntime来完成,即可用java等其他语言加载pytorch训练的模型。





ONNX Runtime 是一个支持ONNX格式的推理引擎,用与加载模型文件,加速模型推理预测以及提供多平台,多语言支持。



基于ONNX Runtime加载模型


以一个pytorch训练的深度学习模型为例,pytorch支持onnx格式的模型导出,只需要一行代码:



加载模型需要先引入onnxruntime,通过下面几行即可预测:



bert模型的优化也可以一行命令行完成:



模型推理速度

实验的核心是ONNX Runtime进行模型推理的速度和pytorch原生加载预测的速度是否一致,结果是否有变化,以及CPU和GPU调用的速度差距,以千次调用响应平均时间来计算。



总结


从结果来看,ONNX Runtime对CPU的提速还是很明显的。但GPU上仍然是pytorch原生的加载效率最高。且onnx格式保存模型并没有使正确率衰减。



关注每周金融科技新闻

掌握最新前沿资讯

熟悉风控背后原理

服务银行数字化转型


关注公众号: RiskControlling

我们一同成长