我已经在官方网站上阅读到我们可以设置版本策略,以保留资源或对新版本不承担任何责任,但是我没有找到有关加载新模型的任何信息。我在Docker上使用tensoflow-serving,我想知道行为是什么,例如,如果我分配的内存已满,并且尝试加载一个新内存。
非常感谢!
答案 0 :(得分:1)
您可以通过简单地将新版本添加到文件夹中来加载相同模型的新版本,并且可以通过一些额外的工作来加载新模型。
添加模型的新版本
要加载相同模型的新版本,您将需要具有文件夹层次结构,并将新版本添加到具有递增编号的模型文件夹中。假设您具有这种文件夹结构;
C:/mymodelfolder/
L->resnet-model
L->1
L->nlp-model
L->1
如果您希望加载nlp-model的v2,则只需将模型的v2放在名为2
的文件夹中,就像这样
C:/mymodelfolder/
...
L->nlp-model
L->1
L->2 //new model is here
一秒钟左右,tf-serving应该会发现并加载该模型(您可以稍后丢弃其中一个模型,或者以A / B方式以正确的配置为它们提供服务)
添加要投放的新模型
如果您希望在不重新启动tf服务的情况下加载其他模型,则首先需要将模型复制到另一个文件夹,然后使用ReloadConfigRequest
协议将gRPC请求发送到应用的公开端口并提供所有模型。这样,您可以动态添加/删除/指定版本。
还有一个标志=> --model_config_file_poll_wait_seconds
,它告诉tf-serving侦听model.config文件上的更改,但我无法在docker的最新版本中使用它。
对于官方文档及更多文档,您可以访问https://www.tensorflow.org/tfx/serving/serving_config#model_server_config_details
记忆行为
我想知道行为,例如,如果分配的内存是什么 已满,我尝试加载新的。
在将模型更新到新版本时,除非将它们配置为一起使用,否则将卸载先前的模型,并加载新的模型。因此,如果第一个模型的大小与第二个模型的大小不同,它将反映到内存中。
如果您碰巧加载的模型将超出应用程序/容器/环境的分配内存,那么不幸的是,在当前版本的应用程序中,模型将自行关闭。但是这篇文章上有一段漫长的对话和一些变通办法,您可能想看看:https://github.com/tensorflow/serving/issues/1215