安装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的docker环境
docker pull tensorflow/serving
安装TensorFlow Serving Python API PIP package
pip install tensorflow-serving-api
代码:
生成模型:
注意,这里将模型保存在了"demo_model/版本号"文件夹中,而不是直接保存在了"demo_model"文件夹中,这是因为TensorFlow Serving要求在模型目录下加一层版本目录,来进行版本维护、热更新等。
有两种方式:Restful方式和gRPC方式。
(1)Restful方式
端口:8501
部署流程:
①根据生成模型目录,将模型挂载到docker中,运行启动命令
②服务启动
③Rest api调用,模型预测
(2)gRPC方式
端口:8500
部署流程:
①根据生成模型目录,将模型挂载到docker中,运行启动命令
②服务启动
③编写测试py
④运行测试命令,模型预测。如:
python tensorflow_serving/example/mnist_client.py --num_tests=1000 --server=127.0.0.1:8500
下面以Restful方式为例:
根据生成模型目录,将模型挂载到docker中,运行启动命令:
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认为用户的模型所在路径中包含了多个版本的模型。预测时,默认加载路径下版本号最大的模型(认为其最新),进行预测。
单样本预测,运行命令:
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中每个元素是一个待预测实例,每个实例里面是所有参数的值, 所以参数按照这种方式构造就可以了。
运行命令:
curl http://localhost:8501/v1/models/demo_model