之前因为工作原因,学习了一段时间的 tensorflow 使用,调研时对 tensorflow extending 的理念很感兴趣。 这段时间正好有机会,好好研究了一下其中的 deploy 组件: tensorflow serving。

TFX

感兴趣 TFX 是因为 TFX 中有一个理念是将模型的预处理以图的形式结合到网络模型的计算图中,解决了一直依赖模型部署时对模型的预处理步骤究竟是放在那一块的痛点。

理论上,这样的结构改动之后,未来的机器学习模型只需要单个模型文件就可以搭建一个完备的、独立的机器学习的服务。有点像肖涵理念中的 model as service。具体点,我理想中的未来的 AI 服务会是只要是按指定格式导出的模型文件,给我一个地址,就可以通过一系列 driver 驱动变成一个提供对应服务的 AI 单元,经由相关业务的包装、组合,就可以成为一个 AI 业务。

便捷、快速、灵活,也许这就是未来的普惠 AI 的重要基础。

tf serving

作为 TFX 中的服务部署组件,tf serving 是可以独立部署的(也可以是 KubeFlow 的一个组件)。其提供了模型的版本控制功能以及最基本的源数据信息管理接口(RESTful & gRPC)。

畅想一个场景,在现实的业务线上,数据是陆续收集的。企业根据最新收集的优质数据,结合学术界最新的模型研究成果,不断训练出的模型文件应该是可以以一种方式用户无感地、可动态控制、可灰度地进行模型更迭的。这样的形式才应该是真正符合一个 AI 行业上线新服务的最佳方式。 而这些功能 tf serving 就可以做到。

遗留给 AI 开发者的仅仅是与业务相关的,需要深耕该业务的经验指导下的业务组织方式。

那么说的这么香, tf serving 提供的功能究竟有哪些呢? 其能力的边界又在哪里?

tf serving api