前言
上图的过程是一个数据科学项目所要经历的典型的过程。从数据采集开始,经历数据分析,数据变形,数据验证,数据拆分,训练,模型创建,模型验证,大规模训练,模型发布,到提供服务,监控和日志。诸多的机器学习工具如Scikt-Learn,Spark, Tensorflow, MXnet, PyTorch提供给数据科学家们不同的选择,同时也给模型的部署带来了不同的挑战。
Seldon Core
Seldon Core 目前是机器学习模型部署领域最受欢迎的方案之一,由 Seldon 公司开源和维护。Seldon 公司同时还是 KFServing 项目的深度参与者。Seldon Core 旨在为不同框架下训练出来的模型(Tensorflow,Pytorch,SKLearn,XGBoost)提供一套相对统一的部署方式,而 Inference Server 是实现这一目的核心机制。
Seldon Core 支持简单的模型推理场景,也支持有向无环的推理图场景。比如在图中的第二个复杂的推理图,一共展示了四个特殊的模型服务的步骤组成的工作流。首先是 Explanation,它负责进行模型的解释。接下来是异常值检测,然后是特征转换 Transformer,最后是通过一个 Router,将流量路由到 A,B,C 三个模型中表现最好的模型中。
核心概念
为了支持推理图,Seldon Core 抽象出了五个组件,每个组件可以理解为是图中的一个节点:
- Model
- Router
- Combiner
- Transformer
- Output_Transformer
其中 Model 是模型,提供 REST 和 gRPC 服务。值得一提的是,Seldon Core 的模型是进行了封装的,提供的是封装后的 API,其输入和输出的格式都是统一的。
Router 是一个路由组件,但是除了路由功能之外,其还接受来自各个路由的节点的 reward feedback(激励反馈),支持实现多臂老虎机的逻辑。
Combiner 是一个跟 Router 类似的组件,区别在于它不是路由到某个节点,而是将其下所有的节点的输出进行结合,输出一个结合后的唯一的返回。
Transformer 和 Output_Transformer 是类似的组件,负责做输入与输出的转换,可以理解为是预处理和后处理的过程。
参考文档:https://baijiahao.baidu.com/s?id=1723425133065532031&wfr=spider&for=pc