当前位置: 首页 > 面试题库 >

TensorFlow服务:在运行时更新model_config(添加其他模型)

毕宇
2023-03-14
问题内容

我正在忙于配置一个TensorFlow Serving客户端,该客户端要求TensorFlow Serving服务器针对给定模型在给定输入图像上生成预测。

如果尚未提供所请求的模型,则将其从远程URL下载到服务器模型所在的文件夹中。(客户端执行此操作)。此时,我需要更新model_config和触发服务器以重新加载它。

该功能似乎存在(基于https://github.com/tensorflow/serving/pull/885和https://github.com/tensorflow/serving/blob/master/tensorflow_serving/apis/model_service.proto#L22)
,但是找不到有关如何实际使用它的任何文档。

我本质上是在寻找一个Python脚本,该脚本可以触发客户端的重新加载(或者配置服务器以侦听更改并触发重新加载本身)。


问题答案:

因此,我花了很长时间来研究请求请求,终于找到了一个代码示例。对于与我有相同问题的下一个人,这里有一个示例。(您需要tensorflow_serving package为此;pip install tensorflow-serving-api)。

基于此拉取请求(在撰写本文时尚未接受,并且由于需要审查而被关闭):https
:
//github.com/tensorflow/serving/pull/1065

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")
  else:
      print("Reload failed!")
      print(response.status.error_code)
      print(response.status.error_message)


add_model_config(host="localhost:8500", 
                    name="my_model", 
                    base_path="/models/my_model", 
                    model_platform="tensorflow")


 类似资料:
  • 我已经看到了这个答案,并且正在使用它所建议的解决方案,但仍然得到相同的错误。 我有一个对用户表有外键约束的代理表,这是代理表: 这是我的实体: 现在,我想为现有用户添加一个新代理: <代码>\u上下文。SaveChanges() 行引发以下异常: "无法添加或更新子行:外键约束失败(\"dbName\".\"agent\", CONSTRAINT\"FK_Agency_User\"FOREIGN

  • 我找了很长时间,所以在标记为重复之前,请务必阅读。 我有一个函数(),它是用一个参数调用的。我想将该id作为前缀添加到每个日志消息中。每次调用函数时,它都会更改。因此,我想更新记录器模式,将此id添加为前缀。 我读过: 如何配置 如何重新配置 SO和log4j论坛上的许多帖子都在讨论如何在运行时更改配置。它们要么过时,要么根本不起作用。 以下代码基于 log4j2 文档。它打印: 如果我注释掉行然

  • 我正试图用Apache Flink构建一个CEP系统来关联事件。其中一个要求是能够在运行时为异常检测添加新模式,而不会丢失系统可用性。你知道我该怎么做吗? 例如,如果我有一个安全事件流(例如访问、身份验证)和一个用于检测异常的模式(例如, 问候。

  • 我正在尝试运行我的应用程序,其中我的Postgresql在Docker中,假设我的数据库Postgresql现在没有运行 并且在我的中: 如何使运行直到服务知道我的正在运行??

  • 问题内容: 当我选择第一个SelectOnMenu的任何项目时,我想更新第二个SelectOneMenu。现在,我从ManagedBean获取SelectOneMenus的值。我想我必须使用AJAX(jquery)将参数发送到ManagedBean。 问题答案: 实际上,您可以使用ValueChangeListener,当selectOneMenu的值更改时将调用它: 然后,在您的bean中,您可

  • 我知道ApplicationContext扩展点,如ApplicationContext事件和BeanFactoryPostProcessor。 我手头的问题是,在创建了一些bean之后,我需要添加bean,我想这会丢弃BeanFactoryPostProcessor选项,因为在应用程序上下文开始注册bean之前会发生这种情况。 我尝试在上下文刷新后添加一个singletonBean: