pytorch框架不像TF那樣有tensorflow service 來進行工業環境的部署,相對工業部署比較複雜,但是自己習慣了使用pytorch,最近需要研究一下,pytorch工業環境的部署,這種該如何操作呢?

很多新手都會面臨我這樣的問題,我的模型訓練好了,測試效果也可以,但是該如何應用呢,比如在分類模型中,訓練好的演算法模型該如何應用在實際場景中呢,如何利用工業相機採集圖片,然後利用模型進行分類呢?這個問題新手一定會遇到的。

不能讀進來一張圖片就讀入一次模型,這樣大多數的時間就浪費在模型的讀取上,速度相對較慢,明顯不夠科學。當然也可以寫個循環,等待圖片的讀入,但是這樣程序持續在運行,大量的計算資源就被浪費了,顯然很不科學。

我最近就遇到了這個問題,好久也沒有找到比較方便的解決方案,後來在pytorch論壇(pytorch forums,google就可以搜到)找到了基本的解決思想,問題回答的網頁地址:discuss.pytorch.org/t/p

在這裡一位朋友給出了一個思路:

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模型,持續更新

如果大家有很好的成功經驗,希望能夠分享一下

推薦閱讀:

相關文章