Cocktail-A Multidimensional Optimization for Model Serving in Cloud

Introduction

ensemble learning通过使用多个模型并行地执行,然后将结果结合起来给出最终的预测,大大提高了准确性。然而,这种训练方法资源占用非常大,加剧了部署成本、同时还导致高延迟。我们提出了Cocktail,一个经济有效的基于集合的模型服务框架。Cock-tail由两个关键部分组成。(i) 一个动态的模型选择框架,在满足精度和延迟要求的前提下,减少集合中的模型数量;(ii) 一个自适应的资源管理(RM)框架,采用分布式主动自动缩放策略,为模型有效地分配资源。

主要贡献

  1. 动态模型选择策略,在大幅减少模型数量的情况下确保了准确性。
  2. 按类加权的多数投票政策,与传统的加权平均法相比,该政策具有可扩展性,并能有效地打破联系,从而最大限度地减少准确性损失。
  3. 分布式的加权自动扩展策略,给每个模型独立分配资源。此外,Cocktail利用transient虚拟机,因为它们更便宜。
  4. 我们在AWS EC2[5]平台上使用CPU和GPU实例实现了Cocktail的原型。
  5. 我们表明,集合模型比单个模型具有内在的容错性。从我们的故障恢复结果可以看出,Cocktail可以通过将精度损失限制在0.6%以内来适应实例故障。

Background and Motivation

现有的一些问题

  • 像Clipper[27]这样的框架中使用的集合模型选择策略是静态的,因为它们集合了所有可用的模型,并只关注于最小化精度损失。这导致了更高的延迟,进一步增加了资源占用,从而加剧了部署成本。
  • 现有的集合权重估计[87]具有很高的计算复杂性,在实践中仅限于一小部分现成的模型。这导致了精度的显著损失。此外,采用线性集合技术(如模型平均)是计算密集型的[80],对于大量的可用模型来说是不可扩展的。
  • 集合系统[27,80]并不专注于在公共云基础设施中部署模型,而在公共云基础设施中,资源的选择和采购在最小化延迟和部署成本方面起着关键作用。此外,单一模型服务系统中采用的资源分配策略不能直接扩展到集合系统。

Prelude to Cocktail

两个key insight

  • Full ensemble model-selection是overkill了,而static-ensemble则会导致准确性的损失。这就需要一个动态的模型选择政策,它可以准确地确定所需的模型数量,这取决于模型选择政策的准确性和可扩展性。
  • transient instances的成本效益,天然适合于托管集合模型。

Design

主要包括两部分Dynamic Model Selection Policy和Resource Management

Dynamic Model Selection Policy

建模成约束条件。

独立的丢硬币概率模型。

先建立好模型,然后再增加或者删除模型。

上述的模型选择策略确保我们在多数投票中只使用必要的模型。为了提高多数投票的准确性,我们设计了一个加权的多数投票策略。权重矩阵是通过考虑每个模型对每个类别的准确性来设计的,这样我们就得到了一个L×N维的权重矩阵,其中L是唯一标签的数量,N是集合中使用的模型数量。多数票被计算为合奏中每个独特类别的模型权重之和。例如,如果有3个由所有合奏模型预测的独特类别,我们就把同一类别的所有模型的权重相加。具有最大权重的类(Pclass)是多数票的输出。因此,如果与该类相关的模型具有较高的权重,那么没有得到最高票数的类仍然可以成为最终输出。与常用的基于整体正确预测分配权重的投票政策不同,我们的政策在权重中加入了类别信息,从而使其更能适应不同的图像类别。

为了确定每个类别的权重,我们使用了一个每个类别的字典,该字典记录了每个类别的每个模型的正确预测结果。我们在运行时填充字典,以避免因图像随时间变化而产生的任何固有的偏见。同样,我们的模型选择政策也是在运行时根据每个区间的正确预测来改变。多数人投票中的一个重要问题是打破平局。当两组数量相同的模型预测出不同的结果时,就会出现平局。第6节将讨论加权投票在打破平局方面的有效性。

Resource Management

Resource Controller

资源类型

我们同时使用CPU和GPU实例,这取决于请求的到达负荷。GPU实例在与大批量请求打包执行时具有成本效益。因此,受先前工作的启发[27, 86],我们设计了一个自适应的打包策略,考虑到每个实例在时间T和Pf上要安排的请求数量。只有当负载量达到实例的Pf时,请求才会被发送到GPU实例上。

成本意识的采购

在一个完全打包的实例中执行的成本决定了每个实例的昂贵程度。在扩大实例规模之前,我们需要估计与现有实例一起运行这些实例的成本。我们贪婪地计算出成本最低的实例。根据An/Pfi的成本效益比,GPU将比CPU实例更受欢迎。

负载平衡器

除了采购实例外,设计一个负载平衡和bin-packing策略以充分利用所有提供的实例也是至关重要的。我们在每个模型池保持一个请求队列。为了在任何时候提高池中所有实例的利用率,负载均衡器将队列中的每个请求提交给租赁的剩余空闲位置(即实例打包系数Pf)。这类似于一个在线bin-packing算法。我们使用10分钟的空闲超时限制来回收每个模型池中未使用的实例。因此,贪婪地分配请求可以使轻度负载的实例尽早缩小规模。

Autoscaler

在Cocktail中,我们使用了一个负载预测模型,可以准确地预测给定时间间隔内的预期负载。利用预测的负载,Cocktail在必要时为每个实例池生成额外的实例。此外,我们对每10秒的SLO违规行为进行抽样,并根据所有实例的总资源利用率,为每个池子反应性地生成额外的实例。这可以捕捉到由于错误预测造成的SLO违规。

负载预测

DeepAR-estimator (DeepARest) based prediction model

importance sampling

自动缩放的一个重要问题是,模型选择策略动态地决定了给定请求约束下的集合模型。根据预测的负载对每个模型的实例进行平等的自动缩放,这本身就会导致为使用不足的模型提供过多的实例。

为了解决这个问题,我们设计了一个加权的自动缩放策略,根据权重对每个池的实例进行智能的自动缩放。

权重是由一个特定的模型在请求中被选择的频率(get_popularity)相对于集合中的其他模型决定的。 权重与每个模型池的预测负荷相乘,以扩大实例( launch_workers)。我们将其命名为重要性抽样技术,因为模型池的规模与它们的受欢迎程度成正比。