我正在使用Tensorflow Serving运行存储在s3存储桶中的模型。我还将模型配置文件保存在单独的s3存储桶中。我的用例是,为了动态添加模型而无需重新启动服务器,我将定期轮询此配置文件以查找更改。
为了做到这一点,我使用了以下设置:
command:
- "/usr/bin/tensorflow_model_server"
args:
- --model_config_file={path to config file}
- --model_config_file_poll_wait_seconds=60
模型配置文件包含内容:
model_config_list: {
config: {
name: "mlp",
base_path: "s3://bucketname/mlp",
model_platform: "tensorflow",
model_version_policy: {
specific: {
versions: 20200130
}
}
}
}
Tensorflow加载正确的模型并正确运行它们,一切似乎都能按预期工作。我看到的问题是,每当服务器轮询S3中的配置文件时,即使它们相同,它也会读取模型。这将导致常规日志如下。
2020-02-06 07:07:01.930476: I tensorflow_serving/model_servers/server_core.cc:462] Adding/updating models.
2020-02-06 07:07:01.930495: I tensorflow_serving/model_servers/server_core.cc:573] (Re-)adding model: mlp
2020-02-06 08:07:01.965518: I tensorflow_serving/model_servers/server_core.cc:462] Adding/updating models.
2020-02-06 08:07:01.965548: I tensorflow_serving/model_servers/server_core.cc:573] (Re-)adding model: mlp
2020-02-06 09:07:01.967228: I tensorflow_serving/model_servers/server_core.cc:462] Adding/updating models.
2020-02-06 09:07:01.967259: I tensorflow_serving/model_servers/server_core.cc:573] (Re-)adding model: mlp
我担心的是,如果轮询频率过高,这将影响模型的性能。我想知道是否实际上正在进行任何更改,或者这仅仅是额外的日志记录。
这看上去都很正常。
查看代码(server_core.cc),似乎在读取model.config文件时而不是在加载模型时会显示这些消息...这在读取model.config文件后必须发生。尽管我不太清楚代码,但我认为我们可以得出结论,加载模型本身时不会显示这些消息。但显示在工作流程的较早位置。
仅在显示这些消息后才尝试找出哪些型号是新的。您可以看到正在发生比较here。
您的问题有一件奇怪的事。从消息的时间戳看,似乎每60 minutes而不是每60 seconds就会读取一次models.config文件。