简介
本文总结一下tensorflow serving的模型加载策略,以及模型serving策略。
模型加载策略
tf-serving支持多平台、多模型、多版本,支持制定模型维度的加载策略。
这个策略配置在serving-1.15.0/tensorflow_serving/config/model_server_config.proto中,字段如下:
1 | // Version policy for the model indicating which version(s) of the model to |
这个字段的定义在serving-1.15.0/tensorflow_serving/sources/storage_path/file_system_storage_path_source.proto中,内容如下:
1 | // A policy that dictates which version(s) of a servable should be served. |
末尾policy_choice中可以判断使用的是哪种:
- latest 表示只加载最新版本
- all 加载所有版本
- specific 指定版本(可以多个版本)
除此之外,AspiredVersionsManager类有两种版本管理策略:
- AvailabilityPreservingPolicy 先加载新版本,后卸载老版本
- ResourcePreservingPolicy 先卸载老版本,后加载新版本
模型serving策略
模型serving策略实际上是在加载策略基础上实现的。
在模型对应的配置中有字段version_labels,定义如下:
1 | // String labels to associate with versions of the model, allowing inference |
这个字段可以指定版本的标签。
接着在请求包有的model_spec字段中,可以指定版本或者指定标签,如下:
1 | // Metadata for an inference request such as the model name and version. |
serving服务处理请求时,根据version_choice的取值来选择版本,默认是选择最新版本,代码如下:
1 | switch (model_spec.version_choice_case()) { |
上面的模型选择需要与模型加载机制相配置,如果只加载了一个版本的模型,这时如果指定版本或者标签,就有可能找不到对应的模型,
这时就会返回标签不存在或者模型版本找不到的错误,然后请求失败,并没有兜底请求一说。