Open gaocegege opened 5 years ago
这篇文章介绍了 https://github.com/tensorflow/serving/ 和谷歌内部的 Cloud ML 上的 Serving 服务两方面的内容。
TFServing 本身是一个高度模块化的实现,不过文章里提到的模块与 TFServing 自身的文档相比,已经有些变化了,最新应该去看文档:https://github.com/tensorflow/serving/blob/master/tensorflow_serving/g3doc/architecture.md
这里着重讲一下 Google Cloud 上的模型服务是怎么工作的。
这个系统叫做 TFS,系统被抽象地很高级,用户只需要添加或者删除模型,或者是模型的版本,就可以使用。这些请求会被 Controller 处理。它会估计一下模型大致需要多少的内存,然后选择一个有足够内存的 Serving Job,把它运行上去。资源需求的计算是根据用户提供的一些信息来进行的。Controller 本身依靠 Spanner 保持状态。
一旦被分配给了一个 Serving Job,模型会首先由 Synchronizer 通知 Serving Job 去 load 进去。然后它会指示 Serving Job 要把哪些 model load 到内存里,并且 Serving Job 会给它汇报状态。然后接下来 Synchronizer 会通知 router,哪些 model 已经 load 好了,可以把流量打过去。Router 这一层也用了跟微软那篇 #147 一样的 Backup Request 的方式保证 Serving 的 SLA。
https://arxiv.org/abs/1712.06139