asplos22-INFless-A-Native-Serverless-System-for-Low-Latency-High-Throughput-Inference

本文主要是为ML inference进行serverless的适配。设计点有以下

  • batch处理时的速率讨论
  • 基于五元组和distinct operator的性能预测
  • 贪心解决带约束多项式的调度NP问题
  • 两个不同时间尺度直方图加权来预测pre-warm和keep alive时间

基于openfaas,开源:https://github.com/TankLabTJU/INFless/

background

现有的问题

  • High latency:在aws做了实验,小内存跑得很慢,大内存也不快
  • Batching在commercial平台上没用
  • resource over-provisioning:CPU-Memory的这种配制方法让那些CPU intensive的应用浪费了memory
  • one-to-one mapping在ML过程中可能会导致因为bursty的workload起过多的instance
  • OTP batching只能够产生有限的提升,因为没有关于batch config- uration, instance scheduling and resource allocation的设计

Design

Workflow

整个工作流程

  1. 部署函数
  2. 根据DAG建立performance prediction model
  3. 为了建立performance prediction model,还需要事先profile operator
  4. 用户发送请求
  5. 到达的请求打包成内置的批次,并分配给相应的实例
  6. 如果工作负载或集群资源状态发生变化,自动扩展引擎会通过从优化的批次-资源决策中挑选出非统一的扩展策略来自适应地调整新的实例配置
  7. 使用LSTH避免冷启动

built-in, non-uniformed batching

解释:

  • built-in:内置在平台内的
  • non-uniformed:每个instance有自己的batching queue,batch size和resource quotas都是独立配置的

本节的design点: batch有严格的速率限制,既要不丢包,又要不违反SLO(在队列里等太久)

combined operator profiling

虽然有很多的call,但是distinct operator,因此采用5-tuple based profiling进行预测,并combine不同的operator

  • p:输入数据大小
  • b:batch size
  • c:cpu相关资源配置
  • g:gpu相关资源配置
  • t:完成时间

scheduling

这是一个带约束多项式的NP问题。最后用贪心去做。

managing cold start with lsth

负载的两个特点:

  • 长期周期性(LTP):请求负载总体上呈现出昼夜交替的用户访问模式
  • 短期爆发性(STB):在短时间内有许多突然变化(包括增加和减少)。

解决方法:

  1. 维护两个窗口,一个是long-term(1天),一个是short-term(一小时)。
  2. 5th作为prewarm,99th作为keep alive。
  3. long-term和short-term加权得到一个值