将模型热加载到tensorflow服务容器中

时间:2019-04-15 15:21:01

标签: tensorflow tensorflow-serving

我知道如何将模型加载到容器中,而且我知道我们可以创建一个静态配置文件,当我们运行一个tensorflow服务容器时,将其传递到容器中,然后再使用其中的一个模型,但我想知道是否有任何方法可以将一个全新的模型(而不是先前模型的较新版本)热加载到正在运行的tensorflow服务容器中。我的意思是我们使用模型A运行容器,然后将模型B加载到容器中并使用它,我们可以这样做吗?如果是,怎么办?

1 个答案:

答案 0 :(得分:3)

可以。

首先,您需要将新模型文件复制到启动tf服务时指定的model_base_path,以便服务器可以看到新模型。目录布局通常是这样的:$ MODEL_BASE_PATH / $ model_a / $ version_a / *和$ MODEL_BASE_PATH / $ model_b / $ version_b / *

然后,您需要使用包含新模型条目的新model_config_file刷新tf服务。参见here on how to add entries to the model config file。为了使服务器采用新的配置,有两种方法可以做到:

  1. 保存新的配置文件,然后重新启动tf服务。
  2. 即时重新加载新模型配置,而无需重新启动tf服务。该服务在model_service.proto中定义为HandleReloadConfigRequest,但是该服务的REST api似乎不支持它,因此您需要依赖gRPC API。遗憾的是Python client for gRPC似乎没有实现。我设法从protobuf文件生成Java客户端代码,但这非常复杂。 here示例说明了如何生成Java客户端代码来进行gRPC推理,并且执行handleReloadConfigRequest()非常相似。