Cougar: A General Framework for Jobs Optimization In Cloud
技术背景
伴随着云原生技术的不断发展,计算任务在云上的部署也越来越便利,相应的规模也在不断增加。2022年蚂蚁生产环境 AI 和大数据类计算任务的 CPU 规模为两百万核,任务数则达到了十万级。而用户的资源配置通常会出现超配浪费的情况,同时运行时流量的变化也会影响初始配置的有效性,导致计算延迟增加甚至 failure 。因此海量计算任务的性能和资源利用率优化问题成为了当前的一个重要挑战。
业界针对资源弹性,典型的就是基于历史窗口统计加权或时序预测的横纵向扩缩容方案。性能优化也是另一个关注点,这几年相关研究被广泛应用在当前主流的大数据和 AI 分布式计算系统中,涉及的优化场景不尽相同,从初始化参数推荐,到运行时的并发和调度优化等。但是各类优化方案和计算引擎强耦合,复用性较差,并且在真实的生产环境中面临的是多目标问题,而多个单目标优化算法的结果则可能有潜在冲突。
为了解决这些问题,蚂蚁绿色计算团队构建了一个云上分布式计算任务通用的节点管理和优化系统 Cougar ,为各类计算引擎提供统一的元数据接入和优化接口,以及性能、资源等多目标的优化能力。
整体方案
蚂蚁绿色计算团队首先对蚂蚁线上各类计算任务的特性和优化需求进行了分析,然后根据抽象的优化链路和优化场景设计了整个工程优化框架(如图1所示)。该优化框架的主要设计目标有以下部分:
统一元数据和监控数据的接入和管理:让优化决策数据的读取和计算引擎解耦,最终实现优化算法的复用性。
支持复杂线上优化场景:1)单次请求的初始化优化;2)定时的运行时优化;3)多优化器结果的协同;4)根据上一次优化结果动态决策后续的优化请求。
高效和灵活的优化控制:基于优化事件和执行单元的抽象设计(Event & Task),每个 Event 对应一个优化场景,每个场景具体的执行 Task 会以分布式的方式在各个 serverless 模块上运行。
高扩展性:Cougar 的流程控制、算法执行和协调等模块都能够支持用户自定义插件。
图1
优化场景
基于上述优化框架,Cougar 在单任务和多任务调度两大优化场景实现了完整的端到端优化方案,以提升蚂蚁线上 AI 和大数据计算任务的整体资源利用率和执行效率。
在单任务优化方面,根据任务的生命周期,可以分为初始化和运行时两大场景,相应的优化链路如图2所示。Cougar 在初始化时利用历史画像和基于贝叶斯优化的离线分桶试跑为计算任务提供配置推荐,去解决计算任务在冷启动和重启时的参数优化问题,以及保障初始化请求的快速响应;运行时则通过多目标优化框架 (e.g., NSGA-II),并结合基于规则和预测的目标函数,对多个单目标优化算法的结果做协同调整,在保证快速收敛的情况下推荐出多目标的较优解。图3是 Cougar 对 DAG 类型分布式计算任务全局的性能(Tt)和资源(Tr)目标函数。
图2
图3
在多任务调度场景中,Cougar 通过离在线计算任务感知的方式做混部决策。对比常见的超卖混部,Cougar 在保障离在线计算任务 SLA 的情况下,提升全局的资源利用率。GPU 任务的混部(e.g., 在线推理和离线训练)是一个典型场景,具体的算法描述如图4所示。
图4
实验结果
我们在这里主要列举了 Cougar 多目标优化方案在数据处理和在线服务两大分布式计算场景的效果。
在数据处理场景,我们根据任务规模和算子类型,在蚂蚁线上随机选取了三千核规模的流计算任务。对比业界方案,Cougar 整体能减少超过50%的 CPU 和 Memory 使用量,同时不会有影响计算任务的吞吐(图5是 Flink Join Case 的对比图)。
图5
在线服务场景,我们在蚂蚁线上随机选取了两万核单模和多模的在线推理任务,并测试了不同流量下 Cougar 和业界方案在资源上的优化效果。如图6所示 Cougar 能整体减少15%的副本数和 CPU 使用量。同时我们也观测了7天长时间优化过程中,在线服务的延迟情况。在整体资源逐步缩容的过程中,在线推理任务的延迟始终能保障在一个正常的范围内,没有异常的抖动。
图6
总结&未来计划
在大数据和 AI 的多个计算场景中,Cougar 的整体多目标优化方案对比业界常见的优化方案,在单位资源下能取得更大的算力。当前 Cougar 作为蚂蚁绿色计算的一个重要系统,正逐步被应用在蚂蚁内部的多个计算系统中(e.g., 推理服务、检索服务、Flink、数据集成服务等),以提高计算任务的弹性能力,并达到绿色减碳的目标。同时在2023年,Cougar 和蚂蚁多个绿色计算系统会逐步开源,从资源调度到各类 AI 和大数据计算场景帮助业务开发用户更快、更方便的去构建一套高效、绿色和智能的计算体系。欢迎大家多关注蚂蚁绿色计算团队后续的工作。