深度學習應用部署的幾種形式
- 2019 年 11 月 20 日
- 筆記
簡介
平時做實驗都是參考一個模型,自己改改,在新數據上獲得一個不錯的效果。如果比較有先進性,還可以寫篇論文。程式碼呢?就丟在github上好了,寫個比較好的README讓程式設計師同行可以復現結果。
但是,有沒有想過做成產品的形式?就是通過各種手段讓小白用戶也能使用我們的成果?
部署形式一:docker形式發布api服務
我始終認為實驗室的深度學習和生產環境中的深度學習是不一樣的。以tensorflow為例,它是先定義圖的結構,然後再送數據訓練。如果只是前向傳播,可以先載入pb模型,再送入數據。
但是考慮api服務的邏輯,伺服器暴露出一個api介面,一個client請求數據,這時候再載入pb模型然後給出結果?這樣每來一個請求都要載入一次pb模型顯然消耗過大。
幸好我們tensorflow已經有了部署工具,docker形式的tensorflow serve1.
這樣我們的部署邏輯就變成了訓練模型->保存為可部署的模型->用tensorflow serve部署。寫一個簡單的api介面就可以了。
如果需要demo,可以參考[2]。
部署形式二:docker化的全棧部署
api服務的主要對象依舊是專業人員,如網站的程式設計師,我們還可以再進一步,直接面向消費者。
其實要做的事情不多,只要在api服務的基礎上,用html+css+js做一個瀏覽器端的GUI應用即可。
部署形式三:docker化的全平台桌面應用
有時候並不希望應用發布到網上,或者說網路是不可信的,我們需要單機不聯網部署。但是我們依舊希望減小部署難度,最大化利用上述部署的成果,怎麼辦呢?
目前的方案是暴力地將所有服務通過docker安裝在目標主機上,這樣可以實現瀏覽器內使用。如果碰上又老又頑固的客戶,只會單只手指雙擊exe文件那種,就用pyqt做個比較像桌面應用的瀏覽器。
參考: