Open gaocegege opened 5 years ago
这篇文章首先是批判了一番现有的 serving 系统,目前几乎所有的系统都是把模型当做黑盒 serving 起来,因此只能支持批处理,缓存预测结果等等面向黑盒的优化方式。因此本文提出了一个可能的白盒方式,支持端到端的优化,以及针对多模型的场景进行了优化。
Pretzel 是基于 ML.NET 的一个实验性系统,有这么几个组件:
Pretzel 有两个阶段,离线和在线阶段。在离线阶段的时候,系统会把 ML.NET 的 pipelines 转化为 Flour 接受的表示,然后 Oven 会对其进行优化编译为由 stage 组成的 model plan。stage 是 ahead of time 编译好的,然后 model plan 会被注册到 runtime 中,其中相似的 plan 会共享 stage 和参数。在线阶段就是调度器和 Obejct Store 在干活了,会负责调度 stage 到具体的执行单元去执行,以及参数分配等。
PRETZEL implementation is a mix of C# and C++. In its current version, the system comprises 12.6K LOC (11.3K in C#, 1.3K in C++) and supports about two dozens of ML.Net operators, among which linear models (e.g., linear/logistic/Poisson regression), tree-based models, clustering models (e.g., K-Means), Principal Components Analysis (PCA), and several featurizers.
Evaluation 主要是针对了内存,延迟,吞吐,以及混合各种条件这几个点进行了验证。各方面都有提高,但由于我还没看懂 Flour 和 Oven 以及论文中的各个抽象都是干啥的所以看不懂为什么提高了。
这篇论文不了解 ML.NET 读起来似乎有点难度,很多概念不知道是啥
OSDI'18
https://www.usenix.org/system/files/osdi18-lee.pdf
https://www.usenix.org/sites/default/files/conference/protected-files/osdi18_slides_lee.pdf