AdaInf: Data Drift Adaptive Scheduling for Accurate andSLO-guaranteed Multiple-Model Inference Serv

AdaInf提出一种解决数据漂移的方法

数据漂移是指在实时的音频或视频数据与训练数据有显著差异,导致模型的准确性下降

作者提出一种增量重训练方法,他利用SLO内的空闲时间,在每次使用一个模型进行推理任务之前,尽可能多地对该模型进行重训练。若一个模型请求具有400ms的SLO,而推理仅需要200ms,那么意味着有200ms可用于重训练。

与之类似的工作未曾将训练收益映射到推理任务上,并且只适用于单个模型,本文扩展到多模型并且通过DAG图来将重训练的改进模型用于后续推理任务以此来提升准确性

另外方法中为了争取更多的重训练时间,提出了使用早期退出结构的方法。早期退出结构是指在模型的某些层设置退出点,当推理任务达到某个退出点时,就不在继续执行后面的层,从而达到节省时间的目的。

如何确定模型是否受影响:找出一些新样本,n个新样本与旧样本数据特征的余弦距离最高,则用这n个新样本来测试所有模型,进行多轮测试直至测试结果变化不大时,得出新的准确度,将其与原先准确度进行比较,超过阈值则说明模型收到了数据漂移的影响

批处理大小:对于每个应用,离线分析每个模型的每个批处理推理延迟(整个GPU),对于具体的任务,会计算出每个批处理大小的最坏情况推理延迟,选择最低最坏情况推理延迟的批处理大小作为任务的初始批处理大小,后续再根据分配的GPU空间调整任务的批处理大小来缩放推理延迟以满足任务的SLO

GPU划分:使用非线性回归模型来计算, 输入批处理大小以及最坏情况处理的延迟和延迟SLO,即可输出GPU空间(该空间为理论空间,实际空间为所有任务的理论空间之和的百分比)

对于给定的GPU空间后续还会再利用回归模型迭代来调整任务的批处理大小以此来满足任务的SLO

重训练时间分配,推理结果影响程度较高的重训练任务会获得更多的时间和训练样本(影响程度通过模型在新旧训练数据上的准确性的差值来衡量)

没有重训练任务就采用完整结构推理,有重训练任务的则选择一个准确度不低于应用特定的预设阈值的模型,且该结构的每批推理延迟最低(根据分配的GPU空间缩放出每批推理延迟)

如何确定重训练设置:重训练样本数量,重训练数据批次的大小和重训练的轮数

使用非线性模型根据上述分配的重训练时间来选择一个重训练设置,选择与旧训练样本差异最大的新样本进行重训练

当一个任务开始重训练一个模型时,可能有其他任务已经完成或正在重训练同一个模型。为了避免使用不一致的参数值,作者提出了一种方法,即让任务使用不同版本模型的当前参数值的平均值作为初始参数值,以提高重训练的准确度。另外,为了避免重复训练,作者还提出了一种方法,即让任务不使用已经被其他任务使用过或正在使用的重训练样本。这样可以节省重训练的时间和资源,同时保持重训练的有效性。

AdaInf工作流程

  • 数据漂移影响判断:本文定期判断每个模型是否受到数据漂移的影响,以及影响的程度,从而决定是否需要对模型进行重训练,以及重训练的样本数量。
  • 重训练-推理DAG生成:本文根据每个模型是否需要重训练,以及模型之间的依赖关系,生成一个包含重训练任务和推理任务的有向无环图(DAG),以便于进行GPU资源分配和任务执行。
  • 数据漂移适应的GPU空间和时间分配:本文在每个时间段(例如5ms)之前,对该时间段内预测到的推理请求和重训练任务进行调度,包括决定每个任务的请求批次大小,分配GPU空间和时间,选择最优的DNN结构,以及确定重训练样本的选择。
  • CPU-GPU内存通信最小化:本文利用多模型应用场景的特点,提出了一些策略来减少CPU-GPU内存通信的开销,例如最大化GPU内存的利用率,优先淘汰GPU内存中的内容,以及利用任务之间的依赖关系来重用GPU内存中的内容。

CPU-GPU内存交换开销最小化

  • 对于同一个应用的DAG中的不同推理请求,AdaInf系统同时执行同一个模型层的推理,以避免该模型层的参数被发送到CPU内存,从而减少CPU-GPU内存的通信。
  • 对于同一个应用的DAG中的重训练任务,AdaInf系统在所有重训练样本都完成该模型层的重训练之前,不会将该模型层的参数从GPU内存中移除。
  • 当一个应用的DAG中的一个任务完成后,AdaInf系统会将该任务的中间输出从GPU内存中移除,但保留该任务的更新后的参数,因为它们可能会被该应用的下一个任务重用。
  • AdaInf系统根据不同类型的数据和不同任务之间的依赖关系,确定哪些内容应该优先从GPU内存中移除,哪些内容应该保留到最后。

根据内存内容的重用时间和SLO的紧迫性,给每个内存内容分配一个分数,然后优先驱逐分数高的内容。这个方法还利用了任务之间的依赖关系,数据类型和内容重用时间的差异,来加速驱逐过程。最后,这个方法还使用了PIN内存,一种与GPU内存通信更快的CPU内存部分,来缓存一些分数低的内容,以便在需要时更快地恢复。

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值