tensorflow serving部署模型
1.安裝grpc
pip install grpcio
安裝tensorflow-serving 依賴關係
sudo yum install -y
build-essential
curl
libcurl3-dev
git
libfreetype6-dev
libpng12-dev
libzmq3-dev
pkg-config
python-dev
python-numpy
python-pip
software-properties-common
swig
zip
zlib1g-dev
安裝TensorFlow Serving Python API PIP package
pip install tensorflow-serving-api
準備tensorflow-servingde docker環境
docker pull tensorflow/serving
2.根據tensorflow-serving的要求生成相應結構的模型
代碼:
生成模型:
注意,這裏將模型保存在了"demo_model/版本號"文件夾中,而不是直接保存在了"demo_model"文件夾中,這是因爲TensorFlow Serving要求在模型目錄下加一層版本目錄,來進行版本維護、熱更新等。
3.啓動tensorflow-serving docker容器
有兩種方式:Restful方式和gRPC方式。區別:
Restful方式
端口:8501
部署流程:
①根據生成文件目錄,將模型替換爲自己的模型,運行啓動命令
②服務啓動
③Rest api調用,模型預測
gRPC方式
端口:8500
部署流程:
①根據生成文件目錄,將模型替換爲自己的模型,運行啓動命令
②服務啓動
③編寫測試py
④運行測試命令,模型預測。如:
python tensorflow_serving/example/mnist_client.py --num_tests=1000 --server=127.0.0.1:8500
下面以restful api爲例:
根據生成文件目錄,將模型替換爲自己的模型,運行啓動命令:
docker run -p 8501:8501 -v /tmp/tfserving/serving/models/demo_model:/models/demo_model: -e MODEL_NAME=demo_model -t tensorflow/serving &
服務啓動:
注意,這裏的模型所在路徑是剛纔"demo_model"目錄的路徑,而不是"demo_model/版本號"目錄的路徑,因爲TensorFlow Serving認爲用戶的模型所在路徑中包含了多個版本的模型。預測時,默認加載路徑下版本號最大的模型(認爲其最新),進行預測。
4.Rest api調用,模型預測
單樣本預測,運行命令:
curl -d ‘{“instances”: [[2]]}’ -X POST http://localhost:8501/v1/models/demo_model:predict
結果:
多樣本預測,運行命令:
curl -d ‘{“instances”: [[2], [3], [5]]}’ -X POST http://localhost:8501/v1/models/demo_model:predict
結果:
注意,instances是一個list,list中每個元素是一個待預測實例,每個實例裏面是所有參數的值, 所以參數按照這種方式構造就可以了。
5.Rest api調用,查看指定模型信息
運行命令:
curl http://localhost:8501/v1/models/demo_model