
212
|
第
5
章
预测的库函数
若不将服务函数部署为
REST API
可以调用的微服务,也可以将预测代码以库函数
的方式实现。将在首次调用导出的模型时加载库函数,使用提供的输入调用
model.
predict()
并返回结果。这样,需要使用该库函数进行预测的应用程序开发人员可以
将库函数包含在他们的应用程序中。
如果由于物理原因(没有网络连接)或性能限制而无法通过网络调用模型,那么与微
服务相比,库函数是更好的选择。库函数方法将计算负担放在了客户端,从预算的
角度来看,这可能更划算。当需要在浏览器中运行模型时,将库方法与
TensorFlow.
js
结合使用可以避免跨站点问题。
库方法的主要缺点是维护和更新模型比较困难。为了使用该库的新版本,需要对使
用该模型的所有客户端代码都进行更新。模型更新得越频繁,微服务方法就越有吸
引力。第二个缺点是库方法的应用仅限于编写库的编程语言,而
REST API
方法将模
型开放给几乎所有现代编程语言编写的应用程序。
库开发人员应注意采用线程池和并行化来支持必要的吞吐量。但是,采用这种方法
通常会使服务的可扩展性受到限制。
设计模式
17
:批处理服务
批处理服务设计模式利用分布式数据处理的常用软件
,
一次性地对大量实例进行推
理。
问题
通常,预测是按需求单次进行的。信用卡交易是否为欺诈行为是在处理付款时确定的。
婴儿是否需要重症监护是在婴儿出生后立即进行检查时确定的。因此,将模型部署
到
ML
服务框架中时,它将设置为处理嵌入在单个请求中的一个或至多数千个实例。
如“设计模式
16
:无状态服务函数”一节所讨论的那样 ...