tensor serving在docker上的部署

官方文檔:https://www.tensorflow.org/tfx/serving/docker
亞馬遜的中文文檔:https://docs.aws.amazon.com/zh_cn/dlami/latest/devguide/tutorial-tfserving.html
部署的時(shí)候花了不少的時(shí)間,主要原因是沒有仔細(xì)的看官方的文檔,以及docker命令的不熟悉的原因。

1. 拉取tensor serving的docker 鏡像:

docker pull tensorflow/serving

2.使用docker run啟動(dòng)容器:

docker run -p 8501:8501 --mount type=bind,source=/path/to/my_model,target=/models/my_model -e MODEL_NAME=my_model -t tensorflow/serving

這里需要解釋一下:
-p表示端口映射,將宿主機(jī)和容器的端口映射起來,宿主機(jī):容器。
--mount 表示掛載。
source表示的路徑是已經(jīng)訓(xùn)練好的模型在宿主機(jī)上的絕對路徑,那么具體是哪個(gè)位置呢?

C:\Users\LT\Desktop\emotion-classifier\model

只需要到達(dá)這個(gè)路徑

模型的實(shí)際路徑

因?yàn)閠ensor serving會(huì)自動(dòng)加載source后面的文件,雖然依照官網(wǎng)給的demo可以依葫蘆畫瓢才出來,不過這個(gè)也是沒有講解詳細(xì)的地方了。
target表示的是在創(chuàng)建的tensor serving的容器里面模型(model)的保存位置,也決定著后面訪問的路徑
運(yùn)行完上面代碼會(huì)這樣:
image.png

這時(shí)候,大多數(shù)人會(huì)和我之前一樣,認(rèn)為已經(jīng)跑起來了,因?yàn)榘椿剀嚊]有反應(yīng),就認(rèn)為是在等待接收響應(yīng),即http請求。其實(shí)不是的,我們需要ctrl + c退出去。

3.進(jìn)入tensor serving所生成的容器(稱為A)

sudo docker exec -it CONTAINER_ID /bin/bash

CONTAINER_ID使用sudo docker ps -sa進(jìn)行查看
使用docker attach并不能進(jìn)入。

4.在A中運(yùn)行特定命令

tensorflow_model_server --port=8500 --rest_api_port=8501 --model_name=my_model --model_base_path=/models/my_model

這一步至關(guān)重要,但是由于第二步的結(jié)果顯示會(huì)影響我們到達(dá)這一步。并且如果直接跳過前面的內(nèi)容,看專門的小結(jié),也會(huì)錯(cuò)過。
--port表示gRPC形式的數(shù)據(jù)訪問,--rest_api_port表示以restful形式訪問接口,如果不使用gRPC,可以只寫--rest_api_port.
--model_name是第二步的model name
model_base_path是第二部的target路徑。
運(yùn)行后是這樣的輸出:


終端輸出

5.至于測試

可以直接使用request來給下面的鏈接發(fā)送數(shù)據(jù):

http://localhost:youself-port/v1/models/your-model-name:predict

按照第三步的終端輸出的話,我的連接就是:

http://localhost:60002/v1/models/sentiment:predict

以上,有用的話,記得點(diǎn)一下喜歡。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容