使用Nginx+uwsgi+Flask+TensorFlow Serving實現深度學習模型部署。
環境
- Ubuntu16.04
- python3.x
- tensorflow1.14
Nginx+uwsgi+Flask
-
安裝
pip install uwsgi
pip install flask
apt-get install nginx -
配置服務
參考:https://www.jianshu.com/p/76b28c7e71cc
TensorFlow Serving
-
介紹
TensorFlow Serving是GOOGLE開源的一個服務系統,適用於部署機器學習模型,靈活、性能高、可用於生產環境。 TensorFlow Serving可以輕鬆部署新算法和實驗,同時保持相同的服務器架構和API,它具有以下特性:支持模型版本控制和回滾
支持併發,實現高吞吐量
開箱即用,並且可定製化
支持多模型服務
支持批處理
支持熱更新
支持分佈式模型 -
docker安裝TensorFlow Serving
docker pull tensorflow/serving -
測試
參考:https://www.jianshu.com/p/d11a5c3dc757 -
模型格式轉換
參考:https://www.jianshu.com/p/d11a5c3dc757 -
多模型部署
參考:https://www.jianshu.com/p/d11a5c3dc757 -
模型調用
參考:https://www.jianshu.com/p/d11a5c3dc757
web服務
TensorFlow模型的計算圖,一般輸入的類型都是張量,你需要提前把你的圖像、文本或者其它數據先進行預處理,轉換成張量才能輸入到模型當中。而一般來說,這個數據預處理過程不會寫進計算圖裏面,因此當你想使用TensorFlow Serving的時候,需要在客戶端上寫一大堆數據預處理代碼,然後把張量通過gRPC發送到serving,最後接收結果。現實情況是你不可能要求每一個用戶都要寫一大堆預處理和後處理代碼,用戶只需使用簡單POST一個請求,然後接收最終結果即可。因此,這些預處理和後處理代碼必須由一個“中間人”來處理,這個“中間人”就是Web服務。關於此部分可以以後再詳細介紹。