我有一个模型的版本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
主题的任何SO问题,可用的tensorflow文档似乎不完整和过时(例如它没有提到需要在配置文件中传递model_platform: 'tensorflow'
)。
任何帮助将非常感激!
请参考https://www.tensorflow.org/tfx/serving/serving_config
请注意,标签只能分配给已加载且可供服务的型号版本。一旦模型版本可用,可以动态重新加载模型配置,为其分配标签(可以使用HandleReloadConfigRequest RPC端点实现)。
也许您应该首先删除标签相关部分,然后启动tensorflow服务,最后将标签相关部分动态添加到配置文件中。