本章介绍如何在Centos上部署Tensorflow2.0 的 tf-serving,并且可以部署多模型的配置,具体就分为两步
首先要了解tf serving是什么,是用来干什么的,在学过tf的小伙伴们都知道,在使用tf学习建立好模型后,想要在后台实时调用这个模型就需要让模型挂载到后台,才能够方便调用,所以,这里将使用Centos作为服务器,来挂载tf serving。开始实战
model.save("models/1.0", save_format="tf")
# 1.0是我自己的标识的一个版本号
有的小伙伴喜欢直接保存为一个h5文件,这种方式是保存的整个模型,包括整个模型的结构、权值、配置等等,如果使用服务器挂载建议使用上面那种方式,将模型保存为SavedModel格式,这是对tensorflow对象标准的序列化格式,非常推荐使用,它将由几个文件组成
举例,我保存好的模型文件将分为以下部分:
tensorflow/
├── model1
│ └── 1
│ └── models
│ ├── saved_model.pb
│ └── variables
│ ├── variables.data-00000-of-00001
│ └── variables.index
├── model2
│ └── 1
│ └── models
│ ├── saved_model.pb
│ └── variables
│ ├── variables.data-00000-of-00001
│ └── variables.index
└── models.config
上面是我的多个模型保存的路径,每保存好一个模型后,可以查看一下保存后的模型配置,是否有误等等
# 查看保存的模型文件
!ls {version}
我这里使用的是jupyter notebook,前面的!号表示使用系统命令
# 查看模型文件相关信息
!saved_model_cli show --dir {str(version)} --all
输入上述命令,你将能看到模型文件的一些重要信息,比如说模型的名称,模型的输入输出结构等等
接着,确保系统中存在docker,Centos中安装Docker具体过程将不再举例,具体可以看我的这篇文章:
Centos安装Docker
之后,使用docker下载镜像到本地
docker pull tensorflow/serving:latest-gpu
编写models.config, 多模型部署配置文件
model_config_list:{
config:{
name:"model1"
base_path:"/tensorflow/model1/1/models"
model_platform:"tensorflow"
model_version_policy {
specific {
versions: 1
}
}
},
config:{
name:"model2"
base_path:"/tensorflow/model2/1/models"
model_platform:"tensorflow"
model_version_policy {
specific {
versions: 1
}
}
}
}
## name为调用模型的名称
然后,使用docker启动刚刚保存好的模型文件
sudo docker run -p 8500:8500 -p 8501:8501 \
--mount type=bind,source=/home/yons/tensorflow,target=/tensorflow \
-t tensorflow/serving:latest-gpu \
--per_process_gpu_memory_fraction=0.5 \
--enable_batching=true \
--model_config_file=/tensorflow/model.config &
命令的参数说明如下:
-p: 开启两个端口,我开启了8500和8501,这两个端口分别是用来连接grpc和retful api 使用,端口填写方式为 (主机端口:8500),后面为tf serving端口,是固定的
–mount type :绑定主文件夹,我的完整路径文件夹为/home/yons/tensorflow, target: 我的模型文件夹在/tensorflow, 即为完整路径文件夹的最后一个目录
-t 使用的镜像
–per_process_gpu_memory_fracti 将使用百分之50的显存启动
–enable_batching: 允许模型进行批推理,提高GPU使用效率
–model_config_file 这里为我的多模型配置文件
保存好模型后,你的界面应该是这样,其他有什么我没表达清楚,欢迎私信我