如何在运行时在tf_serving中添加多个模型而不卸载以前的模型?

问题描述 投票:0回答:1

我正在尝试使用以下代码在tensorflow_model_server中添加新模型:

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

import grpc

def add_model_config(host, name, base_path, model_platform):
  channel = grpc.insecure_channel(host)
  stub = model_service_pb2_grpc.ModelServiceStub(channel)
  request = model_management_pb2.ReloadConfigRequest()
  model_server_config = model_server_config_pb2.ModelServerConfig()

  #Create a config to add to the list of served models
  config_list = model_server_config_pb2.ModelConfigList()
  one_config = config_list.config.add()
  one_config.name= name
  one_config.base_path=base_path
  one_config.model_platform=model_platform

  model_server_config.model_config_list.CopyFrom(config_list)

  request.config.CopyFrom(model_server_config)

  print(request.IsInitialized())
  print(request.ListFields())

  response = stub.HandleReloadConfigRequest(request,10)
  if response.status.error_code == 0:
      print("Reload sucessfully")
      return True
  else:
      print("Reload failed!")
      print(response.status.error_code)
      print(response.status.error_message)
      return False

但每当我尝试执行它时,服务器都会卸载所有以前的模型。是否可以继续为所有模型提供服务然后添加新模型?

python tensorflow computer-vision tensorflow-serving
1个回答
0
投票

没有简单的方法来添加新模型,同时保持先前已加载的模型。

我一直在做的是始终将最后一个模型配置列表保留在磁盘上,当我因任何原因(添加或删除或更新)需要刷新模型时,我从磁盘读取该配置文件,并进行适当的修改,并使用完整配置列表调用HandleReloadConfigRequest(),然后再次将其保存到磁盘。

磁盘上的文件(比如/models/models.config)成为在任何给定时间加载到tf.serve中的模型的权威记录。这样您就可以从tf.serve reboot恢复,并且知道它将加载正确的模型。在服务器启动期间指定配置文件的选项是--model_config_file /models/models.config

© www.soinside.com 2019 - 2024. All rights reserved.