在model_config_file中分配版本标签失败

时间:2018-12-18 13:33:16

标签: tensorflow tensorflow-serving

我有一个模型的版本1和版本2,我正在按照https://www.tensorflow.org/serving/serving_config#assigning_string_labels_to_model_versions_to_simplify_canary_and_rollback

上的说明为它们分配标签

我分别在/path/to/model/1/path/to/model/2中导出了两个版本,并使用以下命令启动服务器:

tensorflow_model_server --rest_api_port=8501 --model_config_file=models.config

以下models.config文件有效,并且仅产生服务版本1(如果省略了specific消息,则按预期提供版本2,因为它对应到最高的数字):

model_config_list {
    config {
        name: 'm1'
        base_path: '/path/to/model/'
        model_platform: 'tensorflow'
        model_version_policy {
        specific {
            versions: 1
        }
    }
}

我已验证我可以使用服务器将请求发送到模型并按预期执行推断。但是,如果我尝试使用此配置文件添加version_labels

model_config_list {
    config {
        name: 'm1'
        base_path: '/path/to/model/'
        model_platform: 'tensorflow'
        model_version_policy {
        specific {
            versions: 1
        }
        version_labels {
            key: 'current'
            value: 1
        }
    }
}

然后启动服务器失败,并显示以下错误:

Failed to start server. Error: Failed precondition: Request to assign label to version 1 of model m1, which is not currently available for inference

我还注意到,将value字段更改为不存在的版本文件夹会产生类似的结果:

Failed to start server. Error: Failed precondition: Request to assign label to version 1234 of model m1, which is not currently available for inference

我正在使用:

TensorFlow ModelServer: 1.12.0-rc0+dev.sha.87470f0
TensorFlow Library: 1.12.0

我找不到关于version_labels的任何问题,可用的tensorflow文档似乎不完整且过时(例如,它没有提到需要在配置文件中传递model_platform: 'tensorflow' )。

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

参阅https://www.tensorflow.org/tfx/serving/serving_config

  

请注意,标签只能分配给具有以下特征的模型版本:   已加载并可以投放。一旦模型版本是   可用时,可以即时重新加载模型配置,以分配一个   为其添加标签(可以使用HandleReloadConfigRequest RPC实现   端点)。

也许您应该首先删除与标签相关的部分,然后开始tensorflow服务,最后将与标签相关的部分动态添加到配置文件中。

答案 1 :(得分:0)

最近,如果指定了--allow_version_labels_for_unavailable_models=true标志(在指定--model_config_file=...变量的同一位置,则可以将标签分配给尚未加载的模型。在docker-compose.yaml文件中执行此操作。)

有关更多信息,请参见official documentation,在撰写本文时说,

如果您想为尚未加载的版本分配标签(例如,在启动时同时提供模型版本和标签),则必须将--allow_version_labels_for_unavailable_models标志设置为true,这将允许新标签将分配给尚未加载的模型版本。