tensorflow serving 动态加载更新模型
tensorflow
一个面向所有人的开源机器学习框架
项目地址:https://gitcode.com/gh_mirrors/te/tensorflow
免费下载资源
·
tensorflow serving是tensorflow用户服务器部署的方案,对于机器学习模型来说,是一个灵活的、高效能的服务系统,用来设计生产环境。tensorflow服务器保证相同的服务器架构和API,使得开发新的算法和实验变得容易。在这里不做过多介绍。
目前,tfs的模型加载有两种方式,第一种是通过在执行命令行时加载一个单模型的model_base_path的路径。:
bazel-bin/tensorflow_serving/model_servers/tensorflow_model_server --port=8500 --model_name=test --model_base_path=/models/test/
或者使用一个模型配置文件,示例如下:
/usr/local/bin/tensorflow_model_server --port=9000 --model_config_file=/serving/models.conf
这个模型配置文件格式官网上是没有的,得去github上去看,为了伸手党看着方便我直接放出来:
model_config_list: {
config: {
name: "mymodel",
base_path: "/some/filesystem/path",
model_platform: "tensorflow",
model_version_policy: {
specific: {
versions: 101,
versions: 202
}
}
},
config: {
name: "mymodel2",
base_path: "/some/filesystem/path2",
model_platform: "tensorflow",
model_version_policy: {
latest: {
num_versions: N
}
}
},
}
tensorflow模型支持同一个模型的不同版本的更新,但是现在模型加载了如果要新加一个模型的话除了重启服务外,暂时没有办法,通过在github里面的issue和pr里面各种找啊找,包括在源码里面看,总算找到了他的一种通过gRPC的接口进行模型热更新的方法,不需要重启服务,直接更新就可以了。但是还是个实验阶段,所以不一定能保证万无一失,为了伸手党们看着方便,我直接放代码了,要看懂的话,还是要对protobuf和gRPC的使用有一些了解。
from tensorflow_serving.apis import model_service_pb2
from tensorflow_serving.apis import model_service_pb2_grpc
from tensorflow_serving.apis import model_management_pb2
from tensorflow_serving.config import model_server_config_pb2
from tensorflow_serving.util import status_pb2
import grpc
import sys
def run():
channel = grpc.insecure_channel('yourip:yourport')
stub = model_service_pb2_grpc.ModelServiceStub(channel)
request = model_management_pb2.ReloadConfigRequest() ##message ReloadConfigRequest
model_server_config = model_server_config_pb2.ModelServerConfig()
config_list = model_server_config_pb2.ModelConfigList()##message ModelConfigList
####try to add
one_config = config_list.config.add() #
one_config.name= "test1"
one_config.base_path = "/home/model/model1"
one_config.model_platform="tensorflow"
model_server_config.model_config_list.CopyFrom(config_list) #one of
request.config.CopyFrom(model_server_config)
print(request.IsInitialized())
print(request.ListFields())
responese = stub.HandleReloadConfigRequest(request,10)
if responese.status.error_code ==0:
print("reload sucessfully")
else:
print("reload error!")
print(responese.status.error_code)
print(responese.status.error_message)
run()
这个里面我重新定义了一个模型,需要加的话自己根据自己的需要再加吧。
GitHub 加速计划 / te / tensorflow
184.55 K
74.12 K
下载
一个面向所有人的开源机器学习框架
最近提交(Master分支:2 个月前 )
a49e66f2
PiperOrigin-RevId: 663726708
3 个月前
91dac11a
This test overrides disabled_backends, dropping the default
value in the process.
PiperOrigin-RevId: 663711155
3 个月前
更多推荐
已为社区贡献1条内容
所有评论(0)