标题:SuperServe:为不可预测工作负载提供细粒度推理服务
作者/机构:Alind Khare1, Dhruv Garg1, Sukrit Kalra2, Snigdha Grandhi∗3∗, Ion Stoica2, and Alexey Tumanov1 (1佐治亚理工学院 2加州大学伯克利分校 3Adobe)

A1 主要贡献

机器学习(ML)模型日益部署在数据中心和边缘生产应用的关键路径上,这要求ML推理服务系统能够在不可预测和突发性的请求到达率下提供服务。这些系统需要在应用的延迟和准确性要求与稀缺资源的整体利用效率之间取得微妙的平衡。现有技术通过选择延迟-准确性权衡空间中的一个静态点来服务所有请求,或在请求服务的关键路径上加载特定模型来解决这一矛盾。

本文通过同时服务于跨越延迟-准确性权衡空间的整个模型范围来解决这一矛盾。其核心贡献如下:

  • 引入 SubNetAct 机制:这是一种新颖的机制,通过在权重共享的超网(SuperNet)中精心插入新颖的控制流和切片算子,实现了对延迟-准确性权衡空间的资源高效、细粒度的导航。这些算子能够动态地在单个超网内部路由请求,以满足特定的延迟和准确性目标。
  • 解锁细粒度、反应式调度策略的设计空间:SubNetAct 的近乎瞬时的模型驱动能力,使得设计简单的反应式调度策略成为可能,而无需对未来请求率进行复杂的预测。本文对这类策略的目标进行了数学形式化,并提出了一种名为 SlackFit 的简单而有效的贪婪启发式策略,并证明了它能很好地逼近最优目标。
  • 实现并验证 SuperServe 系统:将 SubNetAct 机制和 SlackFit 策略实例化为一个名为 SuperServe 的真实世界系统。SuperServe 是一个实时的异步模型服务系统,具有可插拔的调度策略。
  • 全面的实验评估:在来自真实世界微软 Azure Functions 工作负载的跟踪数据上,SuperServe 在相同的服务等级目标(SLO)达成率下实现了 4.67% 的准确性提升,在相同的准确性下实现了 2.85 倍的 SLO 达成率提升。在各种极端突发性的合成跟踪数据上,SuperServe 也能自动实现最佳的权衡。

A3 背景知识与关键观察

2.1 细粒度反应式调度

生产环境中的请求具有突发性且难以预测。以往的推理服务系统研究已经详尽分析了生产环境(如微软Azure Functions (MAF))和合成应用的跟踪数据,强调了其请求到达模式的突发性。例如,Zhang 等人【59, {SHEPHERD}: Serving {DNNs} in the wild. 2023, NSDI 23】指出了生产跟踪数据【45, Serverless in the wild: Characterizing and optimizing the serverless workload at a large cloud provider. 2020, USENIX ATC 20】中请求到达的高变异系数。作者进一步声称,突发的“亚秒级请求到达模式几乎不可能预测”,这使得在基于ML的生产应用中满足严格的服务等级目标(SLO)变得非常困难。

现有解决方案在资源效率和延迟之间存在矛盾。一个简单的解决方案是为峰值流量进行资源配置,将所有延迟-准确性权衡模型加载到GPU内存中。虽然这减少了模型切换的驱动延迟,允许系统在突发情况下通过降低准确性来满足SLO,但在正常请求率下会浪费资源。因此,先进的推理服务系统【42, {INFaaS}: Automated model-less inference serving. 2021, USENIX ATC 21】、【60, {Model-Switching}: Dealing with fluctuating workloads in {Machine-Learning-asa-Service} systems. 2020, HotCloud 20】依赖于模型切换技术,在需要时将模型分页调入调出,以高效利用GPU内存。然而,如图1a所示,从CPU到GPU内存加载ML模型的时间远超最大批量大小的推理时间,且模型越大差距越明显。为了抵消在请求处理关键路径上加载模型的成本,推理服务系统依赖于预测性调度策略,对未来的请求到达模式进行粗粒度的估计。由于预测短期突发请求的困难性及其严格的SLO要求,这类策略注定是次优的【59, {SHEPHERD}: Serving {DNNs} in the wild. 2023, NSDI 23】。

快速模型切换是优化服务突发请求的关键。我们认为,优化服务突发请求的关键在于能够快速切换ML模型,从而无需粗粒度的预测性调度策略。为了验证这一假设,我们模拟了一个具有100毫秒驱动延迟(即切换到能处理当前请求率的新ML模型所需的时间)的粗粒度策略和一个理想的、驱动延迟为0毫秒的细粒度策略。图1b和1c展示了这些策略在MAF跟踪数据的一小段突发子序列上的效果。我们观察到,粗粒度策略在请求率增加时导致更高的SLO未命中率,在请求率减少时则浪费资源。相反,细粒度策略能够瞬时调整以适应请求率的增减,从而实现零SLO未命中并有效利用GPU。

图1:细粒度调度策略是有益的。(a) 加载ResNet-18,34,50,101,152、Wide-Resnet-101和ConvNeXt-Large的延迟大于批量大小为16时的推理延迟,使得模型切换成本高昂。随着模型尺寸增加,这一差距会扩大。(b) MAF跟踪数据中的突发请求率,采用粗粒度调度策略,由于100毫秒的典型模型切换驱动延迟,导致2%的请求未达到其SLO(R1)并浪费资源(R3)。(c) 采用能够瞬时切换模型的细粒度调度策略,可以实现0%的SLO未命中,并有效利用GPU。
图1:细粒度调度策略是有益的。(a) 加载ResNet-18,34,50,101,152、Wide-Resnet-101和ConvNeXt-Large的延迟大于批量大小为16时的推理延迟,使得模型切换成本高昂。随着模型尺寸增加,这一差距会扩大。(b) MAF跟踪数据中的突发请求率,采用粗粒度调度策略,由于100毫秒的典型模型切换驱动延迟,导致2%的请求未达到其SLO(R1)并浪费资源(R3)。(c) 采用能够瞬时切换模型的细粒度调度策略,可以实现0%的SLO未命中,并有效利用GPU。

2.2 权重共享的超网(Supernets)

传统神经架构搜索(NAS)方法的局限性。通过为特定延迟目标寻找最高准确性的DNN来导航延迟-准确性权衡的帕累托最优边界问题,在ML文献中已有深入研究。传统的神经架构搜索(NAS)【7, Proxylessnas: Direct neural architecture search on target task and hardware. 2018】、【34, Darts: Differentiable architecture search. 2018】、【48, Mnasnet: Platform-aware neural architecture search for mobile. 2019】、【62, Neural architecture search with reinforcement learning. 2016】、【63, Learning transferable architectures for scalable image recognition. 2018】等方法能够为特定延迟目标定制架构。然而,这些方法为每个延迟目标搜索和训练独立的网络,因此要求推理服务系统要么将所有网络加载到内存中浪费资源(R3),要么在运行时进行切换。

超网提供了一种更高效的替代方案。最近的研究【6, Once-for-all: Train one network and specialize it for efficient deployment. 2020, ICLR】、【44, Comp{ofa} – compound once-for-all networks for faster multi-platform deployment. 2021, ICLR】提出先训练一个超网,然后提取其部分层来形成子网。因此,一旦超网训练完成,就不再需要为特定的子网进行重新训练。每个提取的子网都针对延迟-准确性权衡空间中的一个特定点,并与其他子网部分共享其权重/层。此外,这种自动化的神经架构搜索(NAS)产生的子网对应于延迟-准确性权衡空间中更优越的点。例如,图2突显了从一个基于ResNet的超网中提取的子网与相同FLOPs的手动调优ResNet相比所具有的准确性优势。

超网的架构搜索参数。为了找到针对延迟-准确性权衡空间中特定点的子网,超网中的架构搜索依赖于以下参数:(i) 深度 (D) 描述子网的深度;(ii) 扩展率 (E) 描述卷积或全连接层输出通道与输入通道的逐层比率;(iii) 宽度乘数 (W) 描述要使用的输入和输出通道的逐层分数。这些参数 (D, E, W) 组合起来创建了一个庞大的架构空间 Φ ($|\Phi| \approx 10^{19}$)【6, Once-for-all: Train one network and specialize it for efficient deployment. 2020, ICLR】,从中可以静态地提取单个子网用于推理。

图2:超网提供更好的延迟-准确性权衡。从OFA-ResNet超网【6】中单独提取的子网的准确性(R2),在相同的FLOPs要求(R1)下,远优于图1a中的手动调优ResNets。
图2:超网提供更好的延迟-准确性权衡。从OFA-ResNet超网【6】中单独提取的子网的准确性(R2),在相同的FLOPs要求(R1)下,远优于图1a中的手动调优ResNets。

A2 方法细节

3. SubNetAct:瞬时模型驱动

核心观察与SubNetAct的提出。受2.1节的启发,我们旨在开发一种细粒度的、反应式的调度机制,以在突发请求率下高效执行基于ML的生产应用(R1-R3)。如2.2节所述,先前关于超网的工作【6, Once-for-all: Train one network and specialize it for efficient deployment. 2020, ICLR】、【44, Comp{ofa} – compound once-for-all networks for faster multi-platform deployment. 2021, ICLR】能够提取针对延迟-准确性权衡空间中特定点的单个模型。然而,这些方法产生的单个模型要么必须同时部署(浪费资源;R3),要么随着请求率的波动而分页调入(导致未命中SLO;R1)。为了解决这个根本矛盾,我们提出了一个关键观察:由于超网在训练后执行架构搜索,它实际上包含了所有子网的整个架构空间。因此,我们可以部署一个超网并动态地将请求路由到适当的子网,而不是像以前那样提取和部署单个子网。这一观察引导我们引入了SubNetAct,这是一种内存高效的模型驱动机制(R3),它暴露了细粒度的控制决策,以便近乎瞬时地在子网之间切换,从而选择延迟-准确性权衡空间中的最优点(R1-R2)。

SubNetAct的三大新颖算子。SubNetAct(图3)的关键洞见在于引入了以下三个新颖的算子,使其能够在一个超网中动态地将请求路由到所需的子网:

LayerSelect算子。SubNetAct 将深度 D 作为输入,并根据 D 动态执行特定子网的层。深度 D 被 SubNetAct 转换为每层的布尔值,这些值决定了哪些层参与推理。然后,SubNetAct 将每个层包装在一个 LayerSelect 算子中,该算子通过将输入激活传递给被包装的层或跳过该层直接将输入转发到下一层来实施控制流。该算子使得在深度上不同的子网($\Phi_D \subset \Phi$)之间能够共享层,从而减少了超网的 GPU 内存消耗(R3)。此外,它使得在突发请求率下,超网的准确性(R2)能够近乎瞬时地(R1)切换。

图3:SubNetAct的新颖算子(LayerSelect, SubnetNorm, WeightSlice)通过路由请求经过权重共享层和非权重共享组件来动态驱动子网。
图3:SubNetAct的新颖算子(LayerSelect, SubnetNorm, WeightSlice)通过路由请求经过权重共享层和非权重共享组件来动态驱动子网。

SubnetNorm算子。我们观察到,简单地引入 LayerSelect 算子会导致子网准确性显著下降(低至10%)。这是由于在诸如 BatchNorm【27, Batch normalization: Accelerating deep network training by reducing internal covariate shift. 2015, ICML】之类的归一化层中,对均值($\mu$)和方差($\sigma$)的跟踪不正确。为了解决这一差异,SubNetAct 引入了 SubnetNorm 算子,该算子通过对训练数据执行前向推理,为每个可能的子网预先计算并存储 $\mu$ 和 $\sigma$。SubnetNorm 将唯一的子网ID(i)和层ID(j)作为输入,并输出预先计算的归一化统计数据 $\mu_{i, j}$ 和 $\sigma_{i, j}$。然后,层 j 使用提供的统计数据对激活进行归一化,从而有效地为每个子网 i 定制了层 j。

SubnetNorm的内存开销分析。尽管这种记账方式增加了部署超网的内存需求,但图4显示,这些非共享归一化统计数据的开销比共享层的内存需求小500倍。因此,SubNetAct 可以通过仅保留每个子网独有的统计数据并在所有子网之间共享非归一化权重,从而在内存中托管数千个子网。

图4:SubNetAct的内存节省。归一化统计数据使用的内存比非归一化层小500倍。SubnetNorm为每个子网解耦了归一化统计数据,并提供准确的记账,从而在内存消耗(R3)最小化增加的情况下实现高准确性(R1)。
图4:SubNetAct的内存节省。归一化统计数据使用的内存比非归一化层小500倍。SubnetNorm为每个子网解耦了归一化统计数据,并提供准确的记账,从而在内存消耗(R3)最小化增加的情况下实现高准确性(R1)。

WeightSlice算子。该算子在推理期间动态选择卷积层或全连接层中的通道。WeightSlice的输入是每层的扩展率(E)或宽度乘数(W),它们共同决定了要使用的通道数量。该算子输出特定于层的通道索引,然后用于为前向推理选择权重子集。该算子使得子网($\{\Phi_E \cup \Phi_W\} \subset \Phi$)之间能够部分共享层,从而增加了可用的子网架构数量。因此,SubNetAct能够为调度策略提供全套的延迟-准确性选项(R1-R2)。

控制输入的声明式指定。我们注意到,这些算子的输入(即深度(D)、扩展率(E)和宽度乘数(W))与ML文献【6, Once-for-all: Train one network and specialize it for efficient deployment. 2020, ICLR】中架构搜索的输入相似。此外,这些控制输入与被驱动子网的输入(即模型服务的请求)是独立的,并由调度策略(§5)声明式地指定。给定到达率,调度策略为请求选择一个特定的子网(通过指定控制元组D、E和W),然后由SubNetAct近乎瞬时地驱动该子网。

3.1 SubNetAct的效能讨论

SubNetAct在满足应用需求方面的效能。我们现在重点介绍SubNetAct在突发请求率下实现关键应用需求(R1-R3)方面的效能。

降低内存需求。SubNetAct的新颖算子使得子网能够就地共享层,并根据调度策略确定的控制元组D、E和W动态地将请求路由到适当的子网。因此,SubNetAct可以同时服务于跨越延迟-准确性权衡空间的整个模型范围,同时大幅减少内存需求。图5a通过比较加载四个不同ResNets【24, Deep residual learning for image recognition. 2016, CVPR】、六个独立提取的子网【6, Once-for-all: Train one network and specialize it for efficient deployment. 2020, ICLR】和能够同时驱动500个子网的SubNetAct的内存需求来证明这一点。我们观察到,SubNetAct可以减少高达2.6倍的内存消耗,同时大大增加了可以驱动的延迟-准确性权衡点。

近乎瞬时的模型驱动。在不同独立模型之间切换需要将其权重加载到GPU,而SubNetAct的算子允许调度策略就地驱动任何子网,而不会产生额外的加载开销。图5b比较了按需加载单个子网与在SubNetAct中就地驱动一个子网所需的时间。我们观察到,SubNetAct的模型驱动比按需加载ML模型快几个数量级。这使得使用SubNetAct的调度策略能够在突发条件下快速驱动低准确性模型(R1),并在正常负载下切换到高准确性模型(R2),而无需对未来请求率进行粗粒度的预测。

提升吞吐量与准确性。通过提供即时模型驱动,SubNetAct允许调度策略快速地上下调整系统吞吐量,从而在仅6%的准确性范围内产生宽广的吞吞吐量范围,以帮助满足SLO保证(R1-R2)。图5c比较了在8个SubNetAct工作节点上,服务最大、最小和中位子网络的点式开环到达曲线的最大持续摄入吞吐量。我们观察到,SubNetAct可以服务从2000到8000 QPS的宽广吞吐量范围,同时能够瞬时地在74%到80%之间提高准确性。

图5:SubNetAct的效能。(a) 与图1a中的ResNets和从超网【6】中提取的六个独立子网相比,SubNetAct服务更多模型范围所需的内存最多可降低2.6倍。(b) SubNetAct近乎瞬时地(< 1ms)驱动不同的子网,比模型切换时间快几个数量级。(c) SubNetAct能够瞬时驱动可以维持更高摄入率的模型,从而产生宽广的动态吞吐量范围(约2-8k查询/秒)并提高准确性。
图5:SubNetAct的效能。(a) 与图1a中的ResNets和从超网【6】中提取的六个独立子网相比,SubNetAct服务更多模型范围所需的内存最多可降低2.6倍。(b) SubNetAct近乎瞬时地(< 1ms)驱动不同的子网,比模型切换时间快几个数量级。(c) SubNetAct能够瞬时驱动可以维持更高摄入率的模型,从而产生宽广的动态吞吐量范围(约2-8k查询/秒)并提高准确性。

4. 细粒度调度策略

SubNetAct解锁了新的调度策略设计空间。SubNetAct对整个延迟-准确性权衡空间的近乎瞬时驱动,解锁了能够直接优化R1-R2的极细粒度调度策略的开发。我们注意到,通过积极地共享权重/层并在超网内动态路由请求,SubNetAct自动最大化了资源效率(R3)。在本节中,我们首先从SubNetAct所支持的新的细粒度策略空间的在线服务问题形式化开始(§4.1)。然后,我们描述我们提出的旨在实现高准确性和延迟SLO达成率的SlackFit策略(§4.2)。

4.1 问题形式化

问题定义。SubNetAct托管了一组所有可能的子网$\Phi$,其中每个子网$\phi \in \Phi$由控制元组D、E、W定义,并具有一个准确性$Acc(\phi)$和一个作为批处理大小B的函数的延迟曲线$l_{\phi}(B)$。一个查询$q$在时间$a_q$到达调度器,其SLO为$d_q$。一个细粒度的调度策略专注于为跨GPU的查询选择跨超网的子网,以及执行该查询的批次B【11, Clipper: A {Low-Latency} online prediction serving system. 2017, NSDI 17】、【22, Serving DNNs like clockwork: Performance predictability from the bottom up. 2020, OSDI 20】。B的到达时间$a(B)$是B中所有查询的最早到达时间,截止时间$d(B)$是所有查询的最早截止时间。$\mathcal{B}$是所有可能查询批次的集合。策略决定批次$B \in \mathcal{B}$是否应在时间t使用子网$\phi$在GPU n上执行,这由一个决策变量$I(B, t, n, \phi) \in \{0, 1\}$来捕捉。目标是最大化在指定SLO内(R1-R2)的准确响应(对查询)数量。

最优离线整数线性规划(ILP)。我们现在提出一个调度策略的ILP形式化,该策略在对未来查询到达有预知的情况下实现我们设定的目标:
最大化

公式:ILP目标函数
公式:ILP目标函数

约束条件
公式:约束(1a)
公式:约束(1a)

公式:约束(1b)
公式:约束(1b)

公式:约束(1c)
公式:约束(1c)

公式:约束(1d)
公式:约束(1d)

公式:约束(1e)
公式:约束(1e)

公式:约束(1f)
公式:约束(1f)

该ILP最大化了满足其延迟SLO且具有最高可能准确性的查询数量,即对于所有选定的查询批次,存在$\phi$使得$I(B,t, n, \phi) = 1$且$Acc(\phi) \cdot |B|$被最大化。ILP的约束表示:
(1a) 一个查询q最多只能分配给一个批次B。
(1b) 一个GPU n在特定时间t只能在一个批次B上执行一个子网$\phi$。
(1c) 批次B只能在其到达时间$a(B)$之后执行。
(1d) 每个批次B在时间t最多只能由一个GPU n上的一个子网$\phi$服务。
(1e) 批次应在截止时间$d(B)$之前完成。
(1f) 选择变量$I(B,t, n, \phi)$是一个布尔指示符。

ILP的局限性。我们注意到我们的形式化(1)是一个零一整数线性规划(ZILP),解决它已知是NP-Hard的【40, Combinatorial optimization: algorithms and complexity. 1998】、【59, {SHEPHERD}: Serving {DNNs} in the wild. 2023, NSDI 23】。此外,期望对查询到达有预知是不切实际的。这使得在在线模型服务设置中使用所形式化的ILP是不现实的。因此,我们用一个在线调度策略来近似其在不同查询流量条件下的行为。

4.2 SlackFit:在线调度策略

SlackFit策略简介。我们引入SlackFit——一个简单而有效的在线调度策略,旨在最大化准确性和延迟SLO(R1-R2)。SlackFit是一个贪婪的启发式算法,它近似了基于ILP的策略(公式1),并使决策过程变得易于处理。SlackFit做出了以下设计选择:

在帕累托最优子网($\Phi_{pareto}$)上操作。为了在合理的时间内做出子网选择,SlackFit在$\Phi_{pareto}$上操作,而不是在$\Phi$上。$\Phi_{pareto}$是通过使用现有的神经架构搜索(NAS)方法【6, Once-for-all: Train one network and specialize it for efficient deployment. 2020, ICLR】获得的关于延迟和准确性的帕累托最优子网集合。$|\Phi_{pareto}| \approx 10^3$的规模比$|\Phi| \approx 10^{19}$小几个数量级。这有助于SlackFit快速做出调度决策。

利用$\Phi_{pareto}$中子网的单调性。SlackFit利用$\Phi_{pareto}$中子网的关键属性来通过执行$O(\log)$操作进一步减少控制搜索空间。图6a(原文中为Fig 13a)显示了从$\Phi_{pareto}$中根据FLOPs均匀采样的六个子网的延迟曲线。$\Phi_{pareto}$中子网的属性是:(P1) 延迟随批处理大小单调增加;(P2) 延迟随准确性单调增加;(P3) 一个子网的不同批处理大小之间的延迟差异随着子网准确性的增加而增加。

图6:SlackFit控制参数空间。(a) SubNetAct中六个不同的(相对于FLOPs均匀采样)帕累托最优子网的延迟热图,作为准确性(x轴)和批处理大小(y轴)的函数。延迟随批处理大小和准确性单调增加。(b) 随着延迟增加,可用选择的数量减少。
图6:SlackFit控制参数空间。(a) SubNetAct中六个不同的(相对于FLOPs均匀采样)帕累托最优子网的延迟热图,作为准确性(x轴)和批处理大小(y轴)的函数。延迟随批处理大小和准确性单调增加。(b) 随着延迟增加,可用选择的数量减少。

利用单调性简化搜索。属性P1和P2进一步将SlackFit的控制搜索维度降低到单一维度(即延迟),以确定子网$\phi$和批处理大小B。SlackFit不在二维表格(图6a)中搜索,而是在一组大小均匀的一维延迟桶(图6b)上操作。每个桶包含控制元组(B, $\phi$),使得$l_{\phi}(B)$保持在桶宽度的范围内。桶的构建利用了P3,以进一步将桶选择的搜索复杂度降低到O(1)。根据构造和属性P3,低延迟桶包含较低准确性、较高吞吐量的控制选择,因为较小准确性子网在较大批处理大小上的推理延迟相对较低。高延迟桶包含较高准确性、较低吞吐量的控制选择。

基于Slack的决策。SlackFit的洞见在于,最紧急查询的剩余空闲时间(slack)为流量变化提供了代理。流量高峰导致系统中更多的排队延迟,从而减少了剩余空闲时间。在低流量下,空闲时间保持较高。因此,SlackFit使用剩余空闲时间进行决策。它选择延迟最接近且小于最紧急查询剩余空闲时间的桶。桶内的所有控制选择都满足查询截止时间。它选择具有最大批处理大小的控制选择,以选择高吞吐量选项,尤其是在空闲时间较低(流量高峰)时。

SlackFit的行为。通过基于空闲时间的决策,SlackFit可以通过在可变到达流量上选择适当的延迟桶来自动调整系统的准确性(R2)和吞吐量,以保持高SLO(R1)。一个行为良好的跟踪(例如,低摄入率、低变异)导致较高的空闲时间。较高的空闲时间导致选择较高延迟的桶。而较高延迟的桶与选择较高准确性模型的概率密切相关(由于属性P2)。相反,突发性跟踪导致选择较低延迟的桶,因为SlackFit在减少的延迟空闲时间下操作。较低延迟的桶选择具有较高批处理大小的配置(由于属性P3)。因此,SlackFit在满足延迟SLO的同时机会性地最大化准确性。

4.2.1 SlackFit对最优离线ILP的近似

SlackFit如何模拟最优ILP。我们现在提供关于SlackFit如何模拟最优离线ILP行为的见解。为了理解ILP的行为,我们构建了一个代理效用函数,该函数捕捉了公式1中ILP目标函数的内部项,该效用函数为所有子网$\phi$、批处理大小B和一个截止时间$d_B$(批处理中查询的最早截止时间)定义:

公式:效用函数
公式:效用函数

效用函数解释。公式2中的效用仅当子网$\phi$在截止时间$d_B$内对批次B执行批推理时才为非零,否则为零。请注意,这捕捉了成功指标:最大化在截止时间内处理的查询数量(R1)以及它们被服务的准确性(R2)。

  • A. 离线ILP和SlackFit偏好帕累托最优子网。SlackFit的关键设计选择是在帕累托最优子网($\Phi_{pareto}$)上操作(§4.2)。我们声称离线ILP也倾向于帕累托最优子网(关于延迟、准确性),因为这些子网产生更高的效用。
    • 引理 4.1。如果帕累to最优子网与非帕累托最优子网对于一批查询具有相似的推理延迟,则前者的效用更高。
      引理公式
      引理公式

      这验证了SlackFit仅在帕累托最优子网上操作的设计选择。我们将证明推迟到附录§A.1。
  • B. 离线ILP和SlackFit在高负载下优先选择低准确性、高批处理大小。我们观察到,在SubNetAct的帕累托子网中,低准确性$Acc(\phi_{low})$、高批处理大小($B_{high}$)配置的效用高于高准确性($Acc(\phi_{high})$)、低批处理大小($B_{low}$)配置。这是因为帕累托子网的准确性差异因子(< 1)小于批处理大小的差异因子,如图13a(即Fig 6a)所示,即$Acc(\phi_{high})/Acc(\phi_{low}) \leq |B_{high}|/|B_{low}| \Rightarrow Acc(\phi_{high}) \cdot |B_{low}| \leq Acc(\phi_{low}) \cdot |B_{high}|$。因此,在高负载下,$U(\phi_{low}, B_{high}, d_q) \ge U(\phi_{high}, B_{low}, d_q)$可能成立。在这种情况下,离线ILP和SlackFit都会倾向于低准确性、高批处理大小的选项,如“SlackFit的行为”(§4.2)中所述。
  • C. 离线ILP和SlackFit在低负载下偏好高准确性。我们从图13a(即Fig 6a)中采样的帕累托最优子网的延迟曲线中观察到,对于批处理大小B,使得$B = B_1 + B_2$其中$B_1 > B_2$,在许多情况下,$B_1 \cdot Acc(\phi_{high}) + B_2 \cdot Acc(\phi_{low}) > B \cdot Acc(\phi_{mid})$成立。因此,在低负载下,$U(\phi_{high}, B_1, d_q) + U(\phi_{low}, B_2, d(B_2)) \ge U(\phi_{mid}, B, d_q)$可能成立。在这种情况下,ILP会倾向于具有更高平均准确性的选项。SlackFit在较低负载下也倾向于选择更高准确性的子网,如§4.2所述。

5. SuperServe:系统架构

SuperServe系统概述。SuperServe是一个实例化了SubNetAct机制和SlackFit策略的系统。其架构如图7所示。SuperServe客户端向路由器提交带有截止时间的异步RPC查询。这些查询被放入一个全局的最早截止时间优先(EDF)队列(❶)。一旦任何工作节点变得可用,SuperServe的细粒度调度器就会被调用(❷)。它决定查询批次(B)和子网($\phi$),然后分派给工作节点(❸)。收到此查询批次后,实例化了超网的工作节点使用SubNetAct在GPU上就地瞬时驱动所选子网(❹),执行推理(❺),并返回查询批次的预测(❻)。路由器将这些预测重定向回客户端(❼)。

图7:SuperServe的架构。SuperServe由一个路由器、调度器、工作节点和一个超网分析器组成。客户端异步提交带有指定延迟约束(SLO)的查询。❶-❼表示查询在SuperServe中的关键路径。延迟曲线估计由分析器在关键路径之外预先完成。
图7:SuperServe的架构。SuperServe由一个路由器、调度器、工作节点和一个超网分析器组成。客户端异步提交带有指定延迟约束(SLO)的查询。❶-❼表示查询在SuperServe中的关键路径。延迟曲线估计由分析器在关键路径之外预先完成。

  • 路由器 (Router)。路由器运行细粒度调度器,并通过RPC与工作节点接口。所有查询都在路由器中异步接收、入队和出队。它在一个全局EDF队列中维护待处理的查询,按表示查询截止时间的时间戳排序。每当(a)一个工作节点发出可用信号且(b)EDF队列不为空时,路由器就调用调度器。然后它将查询批次发送给工作节点,并将预测返回给客户端。
  • 细粒度调度器 (Fine-grained Scheduler)。调度器的控制决策是一个批处理大小和子网($\phi = (D, E, W)$)。调度器为不同的策略实现提供可插拔的API。SlackFit是调度器中实现的一种策略。调度器中的所有策略都利用两个关键属性来做出控制决策:(a) DNN推理延迟的可预测性,(b) SubNetAct在查询关键路径上的快速驱动。
  • 工作节点 (Worker)。DNN工作节点采用SubNetAct机制来托管一个超网(R3)。SubNetAct的算子在TorchScript的中间表示(IR)[14]中实现。从路由器接收到查询批次和子网(D, E, W)后,工作节点使用SubNetAct就地驱动所需的子网。在驱动的子网上进行前向传播产生预测,然后返回给路由器。路由器的调度器在收到预测后被通知工作节点可用。
  • 超网分析器 (Supernet Profiler)。当一个超网提交给SuperServe时,会使用超网分析器。这个分析过程在工作负载开始前预先完成,并且不在查询的关键路径上。分析器首先采用神经架构搜索(NAS)【6, Once-for-all: Train one network and specialize it for efficient deployment. 2020, ICLR】从超网中为每个延迟目标找到帕累托最优的子网(SlackFit的关键设计选择§4.2)。延迟分析是在NAS获得的帕累托最优子网上进行的。这个延迟是批处理大小和目标工作节点GPU的函数(图7中RTX2080Ti GPU上的延迟曲线),并且对子网的分析过程与其他现有模型(如ResNets【24, Deep residual learning for image recognition. 2016, CVPR】、Wide-ResNets【58, Wide residual networks. 2016】、ConvNeXt【35, A convnet for the 2020s. 2022, CVPR】等)的模型分析没有区别。

A4 实验环境

  • 成功指标
    • SLO达成率:在延迟截止时间内完成的查询比例(R1)。
    • 平均服务准确率:对满足SLO的查询计算的平均模型准确率(R2)。
  • 数据集与模型
    • 使用在ImageNet【12, Imagenet: A large-scale hierarchical image database. 2009, CVPR】数据集上训练的超网,由【6, Once-for-all: Train one network and specialize it for efficient deployment. 2020, ICLR】发布。
    • 通过运行【6】发布的NAS工具,从训练好的超网中提取帕累托最优子网。这些子网的计算量范围为0.9-7.5 GFLOPs,准确率范围为73-80%。
  • 工作负载(Traces)
    • 合成突发(Bursty)跟踪:由基础到达率$\lambda_b$(变异系数CV²=0)和从伽马分布中抽样的变化到达率$\lambda_v$组成。
    • 合成时变(Time-varying)跟踪:平均吞吐量随时间从$\mu = 1/\lambda_1$变化到$\mu = 1/\lambda_2$,变化率为$\tau$ q/s²。
    • 真实世界跟踪:使用微软Azure Functions (MAF)跟踪【45, Serverless in the wild: Characterizing and optimizing the serverless workload at a large cloud provider. 2020, USENIX ATC 20】。
  • 硬件配置
    • GPU:8块NVIDIA RTX2080Ti GPU,每个工作节点使用一块。
    • CPU:24个CPU核心。
  • 软件配置
    • 实现:SuperServe使用C++实现,代码量为17,500行。
    • 通信:使用gRPC【20, grpc. 2022】在客户端、路由器和工作节点之间进行通信。
  • 基线系统
    • Clipper+:代表不执行准确性权衡的单模型服务系统(如Clipper【11, Clipper: A {Low-Latency} online prediction serving system. 2017, NSDI 17】、Clockwork【22, Serving DNNs like clockwork: Performance predictability from the bottom up. 2020, OSDI 20】、TF-serving【37, Tensorflow-serving: Flexible, high-performance ml serving. 2017】)。它被手动配置为服务六个不同准确率的子网。
    • INFaaS【42, {INFaaS}: Automated model-less inference serving. 2021, USENIX ATC 21】:一个自动模型切换系统。由于实验中的查询没有提供准确性阈值,INFaaS会退化为服务成本最低(即准确率最低)的模型。这一行为已与INFaaS作者确认【15, Personal Communication, December 2022】。

A4 实验结果

6.2 端到端合成数据实验

6.2.1 不同突发性下的基线比较

实验内容:在不同平均摄入率$\lambda_v$和变异系数$CV^2_a$的突发性跟踪数据上,将SuperServe与Clipper+和INFaaS进行比较。所有跟踪的SLO设置为36ms。

实验结果与分析 (见图8):
1. SuperServe实现了更好的权衡:在所有测试的跟踪数据上,SuperServe始终位于图表的右上角,表明其在SLO达成率和准确性之间取得了显著优于基线的权衡。在0.9999的SLO达成率水平上,SuperServe比基线准确率高4.33%;在相同准确率水平上,SLO达成率高2.06倍。
2. SlackFit自动适应流量:随着摄入率$\lambda_v$的增加,SuperServe通过降低服务准确性来维持高的SLO达成率, dimostrando la sua capacità di selezionare automaticamente i modelli appropriati per sostenere diverse condizioni di traffico.
3. 基线表现:单一固定模型的Clipper+在负载或突发性增加时,SLO达成率会下降。INFaaS虽然实现了高SLO达成率,但其准确性始终是最低的(比SuperServe低4.33%),因为它在没有准确性约束时总是选择成本最低的模型。SuperServe的优势在于SubNetAct的快速模型驱动和SlackFit的机会性高准确性模型选择。

图8:SuperServe在不同突发性下的表现。SuperServe通过找到更好的权衡,在突发性跟踪数据上持续实现 > 0.999 的SLO达成率,优于Clipper+和INFaaS基线。
图8:SuperServe在不同突发性下的表现。SuperServe通过找到更好的权衡,在突发性跟踪数据上持续实现 > 0.999 的SLO达成率,优于Clipper+和INFaaS基线。

6.2.2 不同到达加速度下的基线比较

实验内容:在到达率从$\lambda_1$加速到$\lambda_2$,加速度为$\tau$的时变跟踪数据上评估SuperServe。

实验结果与分析 (见图9):
* SuperServe快速扩展系统容量:即使在高达5000 q/s²的高加速度下,SuperServe仍能实现0.991-1.0的高SLO达成率。这证明了SuperServe的驱动延迟确实可以忽略不计,从而实现了“敏捷弹性”,能够承受到达率的急剧变化。
* SlackFit动态调整准确性:当平均摄入率低时($\lambda_1$),SuperServe使用高准确性模型。当平均到达率高时($\lambda_2$),它迅速切换到低准确性模型。这种动态调整使其在成功指标上取得了更好的权衡。随着加速度$\tau$的增加,SuperServe与Clipper+在平均服务准确性上的差距缩小,因为SlackFit会更快地选择较低准确性的模型。

图9:SuperServe在不同到达加速度下的表现。SuperServe在时变跟踪数据上通过找到更好的权衡优于Clipper+和INFaaS基线。
图9:SuperServe在不同到达加速度下的表现。SuperServe在时变跟踪数据上通过找到更好的权衡优于Clipper+和INFaaS基线。

6.3 端到端真实世界工作负载实验

实验内容:使用微软Azure Functions (MAF)跟踪数据来评估SuperServe,该跟踪数据具有突发性、周期性且随时间波动的特点。将24小时的跟踪数据通过形状保持变换缩短至120秒,以匹配测试平台,平均到达率为6400 qps。

实验结果与分析 (见图10a):
* SuperServe在真实工作负载上表现优异:SuperServe实现了0.99999(五个9)的SLO达成率。与Clipper+和INFaaS相比,在相同的SLO水平下,SuperServe的准确性高出4.65%;在相同的平均服务准确性下,SLO达成率提高了2.85倍。而配置了高准确性模型的Clipper+(79.44, 80.16)在该跟踪数据上发生了性能发散。

系统动态分析 (见图10b):
* 图10b展示了MAF跟踪数据下的摄入吞吐量、服务准确性和批处理大小的控制决策。该跟踪包含周期性的短时尖峰,最高可达8750 qps。在负载尖峰期间,SlackFit选择较小准确性的模型和较大的批处理大小,以满足截止时间(R1)。这是因为它使用查询的空闲时间作为信号来最大化批处理大小。当摄入率较低时,SlackFit服务于更高准确性的模型,从而实现了更好的平均服务准确性(R2)。

图10:SuperServe在真实世界跟踪数据上的表现。(a) SuperServe与Clipper+和INFaaS基线在微软Azure Functions (MAF)跟踪数据上进行比较,结果显示其在相同SLO达成率下准确性提高4.67%,在相同准确性下SLO达成率提高2.85倍。(b) 系统动态图展示了批处理大小和子网激活控制决策如何随时间响应顶部的摄入率变化。
图10:SuperServe在真实世界跟踪数据上的表现。(a) SuperServe与Clipper+和INFaaS基线在微软Azure Functions (MAF)跟踪数据上进行比较,结果显示其在相同SLO达成率下准确性提高4.67%,在相同准确性下SLO达成率提高2.85倍。(b) 系统动态图展示了批处理大小和子网激活控制决策如何随时间响应顶部的摄入率变化。

6.4 微基准测试

容错性 (见图11a):
* 实验内容:在100%容量(8个工作节点)下运行SuperServe,并每12秒逐步关闭一个工作节点以模拟故障。
* 实验结果:SuperServe表现出对系统吞吐能力下降的弹性,即使容量降至50%,也能通过自动使用低准确性模型来维持高达0.999的SLO达成率。这归功于SubNetAct提供的宽动态吞吐量范围和低驱动延迟。

可扩展性 (见图11b):
* 实验内容:通过增加工作节点数量来评估SuperServe的扩展能力。
* 实验结果:SuperServe随工作节点数量线性扩展,在保持0.999的SLO达成率的同时,吞吐量最高可达约33000 qps。

策略空间探索 (见图11c):
* 实验内容:比较SuperServe中实现的不同策略:SlackFit、MaxAcc(贪婪地最大化准确性)和MaxBatch(贪婪地最大化吞吐量)。
* 实验结果:SlackFit在成功指标方面取得了最佳权衡。MaxAcc无法跟上跟踪数据。随着突发性增加,MaxBatch的性能下降。这表明SlackFit能自动在快速处理队列和提供高准确性之间找到最佳平衡点。

图11:SuperServe的微基准测试。(a) SuperServe对故障的弹性。随着工作节点随时间减少,SuperServe通过动态调整服务准确性来维持系统的高SLO达成率。(b) SuperServe随工作节点数量线性扩展,达到高达33000 qps,同时保持0.999的高SLO达成率。(c) SlackFit自动在SLO达成率/准确性最大化连续体中找到最佳权衡点。
图11:SuperServe的微基准测试。(a) SuperServe对故障的弹性。随着工作节点随时间减少,SuperServe通过动态调整服务准确性来维持系统的高SLO达成率。(b) SuperServe随工作节点数量线性扩展,达到高达33000 qps,同时保持0.999的高SLO达成率。(c) SlackFit自动在SLO达成率/准确性最大化连续体中找到最佳权衡点。

A7 补充细节:相关工作

建立在DNN超网训练进展之上。本文的工作建立在最近DNN超网训练的进展之上,这些进展与本文是互补的。【6, Once-for-all: Train one network and specialize it for efficient deployment. 2020, ICLR】、【44, Comp{ofa} – compound once-for-all networks for faster multi-platform deployment. 2021, ICLR】为图像分类视觉任务训练超网。Dynabert【25, Dynabert: Dynamic bert with adaptive width and depth. 2020, NeurIPS】超网支持在GLUE【52, Glue: A multitask benchmark and analysis platform for natural language understanding. 2018】上训练的NLP任务,包括文本蕴含、问答和情感分析。

与现有模型服务系统的比较。模型服务系统可大致分为两类:非自动化和自动化。非自动化服务系统(如TensorFlow serving【37, Tensorflow-serving: Flexible, high-performance ml serving. 2017】、Clipper【11, Clipper: A {Low-Latency} online prediction serving system. 2017, NSDI 17】、InferLine【10, Inferline: ML inference pipeline composition framework. 2018】、Clockwork【22, Serving DNNs like clockwork: Performance predictability from the bottom up. 2020, OSDI 20】)要求应用开发者提供预测模型并明确在准确性-延迟权衡空间中做出选择。这些工作与SuperServe是互补的。相比之下,自动化服务系统【42, {INFaaS}: Automated model-less inference serving. 2021, USENIX ATC 21】、【60, {Model-Switching}: Dealing with fluctuating workloads in {Machine-Learning-asa-Service} systems. 2020, HotCloud 20】提供了在可用延迟/准确性点之间切换的机制,并自动化了准确性-延迟权衡空间的导航。然而,这两者都使用标准DNN(如ResNets、MobileNets),并依赖模型加载机制,而非提供更优帕累托边界和通过SubNetAct实现数量级更快模型切换的超网。从根本上说,这些现有机制的策略隐含地偏向于避免模型切换,这明显限制了系统以敏捷方式响应不可预测的跟踪和查询复杂性动态的能力。InFaaS的DNN切换策略偏向于选择满足准确性约束的最低准确性DNN,因为系统的目标是满足约束而非将准确性视为优化目标。Model-Switching【60】仅在CPU模型之间切换,巧妙地避免了其他系统(如InFaaS和Clockwork)面临的GPU模型加载开销。SuperServe通过其提出的SubNetAct支持GPU模型服务,解决了模型切换的开销问题。

超网训练技术的发展。超网(作为一个概念)及其训练最初由OFA【6, Once-for-all: Train one network and specialize it for efficient deployment. 2020, ICLR】提出。作为超网训练一部分训练的子网被证明比现有模型(如EfficientNets【49, Efficientnet: Rethinking model scaling for convolutional neural networks. 2019, ICML】、ResNets【24, Deep residual learning for image recognition. 2016, CVPR】)提供更好的准确性-延迟权衡。此外,最近涌现出许多改进超网训练的工作,如CompOFA【44, Comp{ofa} – compound once-for-all networks for faster multi-platform deployment. 2021, ICLR】和BigNAS【56, Bignas: Scaling up neural architecture search with big single-stage models. 2020, ECCV】。Dynabert【25, Dynabert: Dynamic bert with adaptive width and depth. 2020, NeurIPS】为文本数据集训练基于Transformer架构的超网。AutoFormer【9, Autoformer: Searching transformers for visual recognition. 2021, ICCV】和NasViT【19, Nasvit: Neural architecture search for efficient vision transformers with gradient conflict aware supernet training. 2021, ICLR】则将超网技术应用于视觉Transformer。SuperServe为使用任何现有技术训练的超网提供了系统级支持。我们相信超网是一个新兴现象,为其提供服务系统支持是当务之急。

A5 结论

本文描述了一种新颖的机制SubNetAct,它通过在超网中精心插入专门的控制流和切片算子,实现了对延迟-准确性权衡空间的资源高效、细粒度的导航。SubNetAct解锁了细粒度、反应式调度策略的设计空间。我们探索了其中一种简单而有效的基于贪婪启发式的调度策略SlackFit的设计。我们在SuperServe中实例化了SubNetAct和SlackFit,并在真实世界的工作负载上进行了广泛评估。与最先进的推理服务系统相比,SuperServe在相同水平的SLO达成率下实现了4.67%的准确性提升,或在相同水平的服务准确性下实现了2.85倍的SLO达成率提升。

A6 附录

A.1 帕累托点的效用更高

引理A.1。如果帕累托最优子网与非帕累托最优子网对于一批查询具有相似的推理延迟,则前者的效用更高。

证明(通过反证法):假设存在一个非帕累托最优子网($\phi_q$),其对于批次B的效用高于帕累托最优子网($\phi_p$),且$l_{\phi_p}(B) \approx l_{\phi_q}(B)$,即$U(\phi_p, B, d_B) < U(\phi_q, B, d_B)$。根据帕累托最优属性,$Acc(\phi_p) > Acc(\phi_q)$,这意味着$Acc(\phi_p) \cdot |B| > Acc(\phi_q) \cdot |B|$。由于延迟相似,对于任何截止时间$d_B$,$U(\phi_p, B, d_B) \ge U(\phi_q, B, d_B)$。这与我们的假设矛盾。因此得证。

A.2 合成跟踪数据上的系统动态

系统动态分析。图12展示了SuperServe在突发性和时变性合成跟踪数据上的系统动态。SlackFit做出的控制决策(子网(准确性)和批处理大小)随时间显示。

图12:合成跟踪数据上的系统动态。显示了为响应摄入吞吐量(q/s)而随时间变化的准确性和批处理大小控制决策。(a) 突发性跟踪... (b) 时变性跟踪...
图12:合成跟踪数据上的系统动态。显示了为响应摄入吞吐量(q/s)而随时间变化的准确性和批处理大小控制决策。(a) 突发性跟踪... (b) 时变性跟踪...

  • 突发性跟踪 (图12a):当平均摄入率为7000 qps时,SuperServe自动选择合适的子网(76-78%准确率范围),避免了使用会发散的80.16%准确率子网。随着$CV^2_a$的增加,SuperServe更频繁地使用低准确性模型,因为增加的抖动减少了查询的空闲时间,导致SlackFit更频繁地选择低延迟桶。在负载峰值期间,SlackFit通常选择高批处理大小和较小子网的控制参数,以更快地清空队列,从而在这些跟踪数据上实现高SLO达成率(R1)。
  • 时变性跟踪 (图12b):对于两种加速度的跟踪,SuperServe都随着平均摄入率的增加动态地将准确性从约79.2%调整到约77.5%。对于更高的加速度$\tau = 5000 q/s^2$,SuperServe迅速跳转到低准确性和高批处理大小的控制参数。而对于$\tau = 250 q/s^2$,SuperServe使用中间模型来服务中间摄入率。较高的$\tau$值迫使查询的空闲时间急剧减少,因此SlackFit迅速切换到从低延迟桶中选择较小子网和较高批处理大小的控制参数,以满足截止时间(R1)。

A.3 调度策略

调度器的核心功能与约束。SuperServe调度器的核心功能是为任何到达跟踪动态最大化(a)SLO达成率和(b)预测准确性。调度器提供了一个可插拔的策略框架,以支持任何应用对这些指标的敏感性。控制决策必须在查询端到端延迟的关键路径上做出,因此快速的亚毫秒级控制决策是一个关键性能要求。因此,我们主要考虑相对于时间是贪婪的调度策略,它们根据最紧急查询的剩余空闲时间来决定批处理大小和子网。

A.4 控制参数空间

控制空间的构建与洞见。调度策略的控制参数空间由SuperServe的超网分析器创建(图13a),通过分析延迟作为子网准确性和批处理大小的函数。我们从图13a的控制参数空间中得出一些关键洞见:(I1)延迟随批处理大小单调增加;(I2)延迟随准确性单调增加;(I3)随着延迟增加,控制选择的数量减少(图13b)。这些洞见为SuperServe中的调度策略实现提供了信息。

图13:SlackFit控制参数空间。(a) SubNetAct中六个不同帕累托最优子网的延迟热图。(b) 可用选择数量随延迟增加而减少。
图13:SlackFit控制参数空间。(a) SubNetAct中六个不同帕累托最优子网的延迟热图。(b) 可用选择数量随延迟增加而减少。

A.5 策略设计空间

  • MaxBatch策略:该策略首先最大化批处理大小,然后最大化准确性。它贪婪地为最小准确性子网找到一个适合延迟空闲时间$\theta$的最大批处理大小(b),然后在此批处理大小内找到最大准确性子网(s),使得 profiled latency $L(b, s) < \theta$。
  • MaxAcc策略:MaxAcc首先最大化准确性,然后最大化批处理大小。它首先为$L(1, s') < \theta$进行二分搜索以找到最大准确性(s'),然后固定子网选择为s',找到最大批处理大小(b'),使得$L(b', s') < \theta$ ms。
  • SlackFit策略(本文提出的最佳策略):SlackFit将可行的延迟集合划分为大小均匀的延迟桶。每个桶包含控制元组(b, s),其$L(b, s)$在桶宽范围内。然后策略选择一个延迟$\le \theta$的桶。最后,从所选桶内的选择中,它挑选最大化批处理大小的控制选择。直观地,选择最接近空闲时间$\theta$的控制参数,使系统尽可能接近其容量运行。SlackFit的新颖之处在于它利用了洞见(I3),动态地检测并适应跟踪的运行时难度。行为良好的跟踪导致更高的$\theta$,从而选择更高延迟的桶,这些桶与更少的控制元组选择强相关(图13b),最大化了选择更高准确性模型的概率!相反,行为不佳的跟踪导致选择更低延迟的桶,这些桶中有更多的控制选择,从而有利于选择更高批处理大小的元组,以更快地处理队列!
  • 实验结果 (见图11c):SlackFit在我们的成功指标方面取得了比MaxAcc和MaxBatch都好的权衡。MaxBatch在$CV^2_a$增加时SLO达成率开始下降。MaxAcc无法跟上此跟踪。此策略比较显示了在更快处理队列和提供更高准确性之间存在一个连续体,而SlackFit能自动找到此连续体中的最佳点。

B 服务固定准确性点

实验设置:实验针对MAF跟踪数据运行,平均摄入率为4,000查询/秒,每个请求的延迟SLO为30ms。系统有6个工作节点,每个节点配备一个NVIDIA RTX 2080Ti GPU。

结果分析 (见图14和15)
* 固定准确性点实验(Clipper+):调度器被限制为仅使用单一模型选择。
* 低准确性模型(73.82, 76.69, 77.64)具有较低的推理延迟,能够以低排队延迟在SLO截止日期内服务请求批次,因此它们实现了99%+的延迟SLO达成率。这可以从图14(a-c)中看出,剩余空闲时间延迟呈右偏分布,在30ms左右。
* 高准确性模型(78.25, 79.44, 80.16)具有显著更高的推理延迟,导致更高的单请求服务时间、更高的排队延迟和更低的SLO达成率。这可以从图14(d-f)中看出,分布开始向左移动,朝向更低的剩余空闲时间,表明显著的排队延迟和更低的SLO达成率。
* SlackFit(服务多个准确性点):SlackFit在模型的整个延迟范围内执行动态模型选择。这为调度器在低负载期间提供了最大化准确性(更高准确性模型)的多种选择,并在高负载期间利用较低准确性模型。该策略服务多个准确性点,以帮助吸收队列积压并减轻排队延迟。图15a显示,密度函数始终低于超网延迟范围,因此>99%的查询满足其截止日期,同时还最大化了服务准确性。

图14:服务固定准确性点
图14:服务固定准确性点