pytorch模型部署在生产环境

pytorch框架不像TF那样有tensorflow service 来进行工业环境的部署,相对工业部署比较复杂,但是自己习惯了使用pytorch,最近需要研究一下,pytorch工业环境的部署,这种该如何操作呢?

很多新手都会面临我这样的问题,我的模型训练好了,测试效果也可以,但是该如何应用呢,比如在分类模型中,训练好的算法模型该如何应用在实际场景中呢,如何利用工业相机采集图片,然后利用模型进行分类呢?这个问题新手一定会遇到的。

不能读进来一张图片就读入一次模型,这样大多数的时间就浪费在模型的读取上,速度相对较慢,明显不够科学。当然也可以写个循环,等待图片的读入,但是这样程序持续在运行,大量的计算资源就被浪费了,显然很不科学。

我最近就遇到了这个问题,好久也没有找到比较方便的解决方案,后来在pytorch论坛(pytorch forums,google就可以搜到)找到了基本的解决思想,问题回答的网页地址:https://discuss.pytorch.org/t/pytorch-models-for-production/18115

在这里一位朋友给出了一个思路:

It depends on the platform to which you’re aiming to deploy and some other constraints, for example if your use case can be fulfilled via REST or similar service and you don’t mind the python overhead you could potentially use PyTorch as it is on a server to handle web requests. However if you’re aiming for edge deployment or you want to squeeze as much raw performance as possible, your best bet right now is to use ONNX29. You can export5 your PyTorch model in ONNX format and then use another framework (like caffe2, MXNet, CNTK, etc.) to actually run the model, these other frameworks do support edge and/or have specialized deployment extensions (e.g. theMXNet model server19which can also serve ONNX models directly).

大致的思想就是两种解决方案,一种利用服务器,就是利用REST来配置服务器,处理网页的请求,自己编写API来进行处理网页请求。(看到有人通过flask进行处理,可以参考);

第二种利用c++模型开发,就是将pytorch的模型,利用ONNX转换为onnx格式,然后转换为caffe2来利用c++接口进行处理,加快速度。而且caffe2支持嵌入式设备的操作。

但是还没学会怎么进行操作,最近会研究一下如何部署pytorch模型,持续更新

如果大家有很好的成功经验,希望能够分享一下

找到这个github页,关于模型的部署

https://github.com/ahkarami/Deep-Learning-in-Productiongithub.com

    原文作者:小哲lxz
    原文地址: https://zhuanlan.zhihu.com/p/66483806
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞