下载tfserving的最新镜像后按照网上的文章配置后报错,翻了issue发现是最新版本已经不支持s3了,所以回退到2.2.0版本,配置成支持多个模型,具体步骤如下
docker pull tensorflow/serving:2.2.0
#下载git工程
git clone https://github.com/tensorflow/serving
把工程里的其中两个模型上传到S3用来测试,上传这两个模型
serving/tensorflow_serving/servables/tensorflow/testdata/saved_model_half_plus_two_cpu
serving/tensorflow_serving/servables/tensorflow/testdata/saved_model_half_plus_two_2_versions
对应在minio中的bucket地址为models/multiModel/model1,models/multiModel/model2
#增加模型配置文件/root/tfserving_docker/serving/tensorflow_serving/servables/tensorflow/testdata/models.config
model_config_list:{
config:{
name:"model1",
base_path:"s3://models/multiModel/model1",
model_platform:"tensorflow"
},
config:{
name:"model2",
base_path:"s3://models/multiModel/model2",
model_platform:"tensorflow"
}
}
docker run -p 8501:8501 -e AWS_ACCESS_KEY_ID={id} -e AWS_SECRET_ACCESS_KEY={access_key} -e S3_ENDPOINT=http://{ip}:{port} -e AWS_REGION=us-east-1 --mount type=bind,source=/root/tfserving_docker/serving/tensorflow_serving/servables/tensorflow/testdata/,target=/root/tfserving_docker/serving/tensorflow_serving/servables/tensorflow/testdata/ \
-t tensorflow/serving:2.2.0 --model_config_file=/root/tfserving_docker/serving/tensorflow_serving/servables/tensorflow/testdata/models.config
测试一下
curl -d '{"instances": [1.0, 2.0, 5.0]}' -X POST http://localhost:8501/v1/models/model1:predict
会返回
{
"predictions": [2.5, 3.0, 4.5
]
}
完成啦
另外如果服务器不能直接pull镜像的话可以从外面的服务器先拉镜像到本地,再上传到对应服务器,步骤如下:
#先从可以连外网的服务器上拉取镜像
docker pull tensorflow/serving:2.2.0
docker save 25820e475139 > tfserving_docker_old.tar
#下载到本地,上传到目标服务器
cd /root/tfserving_docker
docker load < tfserving_docker_old.tar
docker tag 25820e475139 tensorflow/serving:2.2.0