一种基于经验的动态资源调度:StraightLine:An End-to-End Resource-Aware Scheduler for Machine Learning Application Requests
StraightLine: An End-to-End Resource-Aware Scheduler for Machine Learning Application Requests
摘要:
提出了一个端到端的资源感知调度器,用于在混合基础设施中调度机器学习应用请求的最优资源。
关键词:
机器学习部署、异构资源、资源放置、容器化、无服务器计算。
主要内容:
- ML应用的生命周期包括模型开发和模型部署两个阶段。
- 传统ML系统通常只关注生命周期中的一个特定阶段或阶段。
- StraightLine通过一个基于经验的动态放置算法,根据请求的独特特征(如请求频率、输入数据大小和数据分布)智能地放置请求。
- 包括三个层次:模型开发抽象、多种实现部署、实时资源调度。
模型容器化:
使用NVIDIA-Docker实现模型开发的容器化。
为模型训练构建了强大的NVIDIA-Docker,为模型验证构建了轻量级的NVIDIA-Docker。
容器定制:
- 根据不同的压缩ML模型,构建相应的RESTful API、无服务器应用程序和Docker容器。
- 使用Docker容器适应不同的计算环境。
实时资源感知调度:
- 设计了一个基于经验的动态放置算法,以在混合基础设施中智能地放置不同的ML应用请求。
评估:
- 在一个混合测试平台(RESTful API、无服务器进程、Docker容器和虚拟机)上进行了实验。
- 实验结果表明,StraightLine在适应异构资源方面有效。
具体的算法:
在论文 “StraightLine: An End-to-End Resource-Aware Scheduler for Machine Learning Application Requests” 中,提出了一个名为 Empirical Dynamic Placing Algorithm 的算法,用于智能地放置机器学习(ML)应用请求到最优资源上。这个算法是 StraightLine 调度器的关键创新之一。
Empirical Dynamic Placing Algorithm 的核心特点:
基于经验:算法依赖于对过往请求和资源使用情况的经验数据来做出决策。
动态放置:算法实时分析请求的特征,并动态地决定将请求分配到哪种资源(如容器、虚拟机或无服务器进程)。
考虑请求特征:算法考虑了请求的独特特征,例如请求频率、输入数据大小和数据分布。
算法的逻辑流程:
输入:算法接收一组请求 R,每个请求 r 包含请求 ID(rid)、在时间 t 的请求频率(ft)、请求数据大小(rd)。
初始化:定义请求频率阈值(F)和数据大小阈值(D),以及可用资源(Flask SF 和 Docker SD)。
请求分析:
- 如果请求频率 ft 大于阈值 F 且数据大小 rd 小于阈值 D,则将请求 r 部署到无服务器平台上。
- 如果数据大小 rd 大于阈值 D,则将请求 r 部署到 Docker 平台上。
- 如果 Flask SF 资源可用且请求频率 ft 适中,则将请求 r 部署到 Flask(本地 web 服务器)上。
资源分配:
- 如果 Flask SF 资源不可用,但 Docker SD 资源可用,则将请求分配到 Docker 平台。
- 如果 Flask SF 和 Docker SD 资源都不可用作进一步请求,则将请求分配到无服务器平台上。
输出:算法输出请求 R 的放置 K,即每个请求分配到的具体资源。
算法的目的:
- 最小化延迟:通过智能放置请求,减少 ML 应用部署的响应时间和失败率。
- 适应混合基础设施:算法能够适应包含云计算数据中心、本地服务器、容器和无服务器平台的混合基础设施。
算法的效果:
- 减少响应时间:通过将请求分配到最适合的资源,算法减少了处理请求所需的时间。
- 降低失败率:通过考虑请求的特征和资源的可用性,算法减少了请求处理失败的可能性。
Empirical Dynamic Placing Algorithm 是 StraightLine 调度器中用于优化 ML 应用请求处理的核心组件,它通过实时分析和智能决策来提高资源利用率和系统性能。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Roger-Lv's space!
评论