使用tensoflow serving来部署模型推理节点
使用tensoflow serving來部署模型推理節點
這里使用的時docker來進行模型的部署,主要是docker更輕便和方便。
1.訓練一個分類模型
分類模型一般很簡單,這里我已經訓練好一個(測試97.6準確率)的分類模型,因為是本地跑的,所以準確率先對低一點,畢竟受到設備的限制(顯存才4G)。
2.模型導出格式
模型的導出必須要全格式,而非tensorflow的checkpoint(一些權重文件),應該是tensorflow提供的pb模型格式。
3.docker部署tensoflow serving
3.1下載tensorflow/serving鏡像
docker pull tensorflow/serving:latest-devel這里選擇的是latest-devel版本的,下載前請設置好docker的下載源,我使用的是阿里云的docker倉庫的源,所以下載很快。
3.2查看鏡像
docker images3.3啟動容器
下載好后就要根據鏡像啟動容器啦,這里的-it表示交互(啟動后將會直接進入到容器里面),-p為端口的映射。
docker run -it -p 8051:8051 tensorflow/serving:latest-devel3.4上傳模型到docker容器中
docker cp 本地路徑 容器ID:路徑3.5部署模型
部署模型十分簡單,tensorflow serving部署模型運行熱更新(也就是說不用停掉服務,也可以更新模型),這里使用http端口的部署模式,tensorflow serving部署還提供其他幾種部署模式。(如果當成后臺計算節點來說http不是最好的)。
tensorflow_model_server \--rest_api_port=8501 \--model_name=VGG16 \--model_base_path="/home/.../.../saved" # 文件夾絕對地址根據自身情況填寫,無需加入版本號rest_api_port為端口號,model_name自定義(后面會用到),model_base_path你保存模型的路徑。
3.6調用http接口
服務器 URI: http://服務器地址:端口號/v1/models/模型名:predict
解釋一下,v1是版本號(v2,v3等等)
predict是模型調用的方法,一般的模型都是predict,除非你在模型里面自定義了方法,否則一般使用predict
import json import numpy as np import requests #將圖片封裝到json里面,然后post到推斷節點中 data= json.dumps({"instances":image} ) headers = {"content-type": "application/json"} json_response = requests.post('http://xxx.xxx.xxx.xxx:8051/v1/models/VGG16:predict',data=data, headers=headers) result = json.loads(json_response.text)其中result長這樣
{'predictions': [[0.00384901767, 0.995562077, 0.000588864845]]}其三個值分別對應分類類別的score。
總結
以上是生活随笔為你收集整理的使用tensoflow serving来部署模型推理节点的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 如何恢复Mac的Recovery分区苹果
- 下一篇: jQuery的AJAX
