Clipper
整体流程:
在将查询分配到与所需模型相关联的 Adaptive Batch 之前,模型抽象层首先会检查查询的预测 Cache。自适应批处理队列会构建针对机器学习框架和模型进行调 Adapt Bacth。跨语言 RPC 用于将批量查询发送到模型容器,该模型容器在其本地机器学习框架中托管模型。为了简化部署,我们将每个模型容器托管在一个单独的 Docker 容器中。在对一批查询进行模型评估后,预测结果会被发送回 Model Abstraction Layer,该层会填充预测 Cache,并将结果返回给 Model Selection Layer。然后,模型选择层会将一个或多个预测组合起来,生成最终预测和置信度估计值。然后,预测结果和置信度估计值将返回给最终用户应用程序。
- Model Abstraction Layer
- Cache:
Predict (m: ModelId, x: X) -> y: Y
来讲热点请求 cache 住 - Batching:攒一波 SLO 能接受的 batch 来送到下面的模型层一同验证,这样可以(1)消融一次 RPC 的开销(2)最大程度发挥并行计算的优势
- Batch 是自适应的:使用 AIMD 在延时限制下最大化吞吐,并且可以有助于集群 scale,因为集群各机器的计算能力不同
- Cache:
- Model Container
- 模型在初始化的时候确定了参数,之后容器本身就是无状态的了
- 网络带宽容易成为集群 scale 时大输入的瓶颈
- Model Selection Layer
- 通过应用层的 feedback 来动态地选择一个或者多个部署的模型结果(多臂老虎机)
- 通过 ensenble 多个模型来提高准确性
- 使用“best-effort”来消除掉队者带来的影响
START
Basic
ML推理系统的优化策略
Back:
-
离线策略是在模型还没有加载到推理系统内存部署的阶段,对模型本身进行的转换,优化与打包,核心是让模型变得更“小”(运算量小,内存消耗小等),进而精简模型,更像传统编译器所解决的静态分析与优化的问题。
- 量化、压缩、转换
-
在线部分是推理系统加载模型后,运行时对请求和模型的执行进行的管理和优化。其更多与运行时资源分配与回收,任务调度,扩容与恢复,模型管理协议等相关,更像传统操作系统与 Web 服务系统中所解决的运行时动态管理与优化的问题。
- 动态批处理
- 并发
- 装箱
- 多副本并行
END