上篇主要介绍Pytorch转ONNX,由于业务需求暂时不在离线手机/车机端嵌入式,因此暂时对ONNX2NCNN不继续深入。既然ONNX model支持c,c++,java调用,那么serving的高效部署还是可行的。
这里选择了python简单调用的Flask部署ONNX模型。要注意的是本文的涉及的Flask仅供调试以保证模型转化和调用可行性,需要生产环境调用参考Deploying a Flask server in production
既然是python调用,那么Torch模型不用转换也可以尝试Flask部署。只是在实际应用中我们不需要任何“训练”,简而言之,只需要inference过程。那么显然直接用pytorch模型的意义不大,并且会导致效率低下。因此,一般来说需要转torchscript或者ONNX,或者其他inference 引擎支持的格式。
这里选用了ONNX, 本文默认模型已经成功打包成.onnx格式。Torch2ONNX转换可以参考上文 Pytorch 模型部署I—Torch2ONNX, 或者以下官方文档:
参考链接:
Pytorch 官方文档系列:torch.onnx,Pytorch2onnx and using onnxruntime
ONNX 模型压缩和可视化:onnx-simplifier,可视化 Netron
Flask调用pytorch模型官方文档: Deplying Pytorch in Python via flask
完整代码: Flask基于onnx模型调用