降本增效利器:快手CPU&GPU超大规模在离线混部落地实践 快手/容器云技术中心/辛文 目录页 Contents 1背景与挑战 2利用提升最佳实践CPU混部篇 3利用率提升最佳实践GPU混部篇 4未来规划及展望 快手混部生态发展历程 2019~2020 混部生态启动 在离线混部架构搭建CPU在离线混部CPU潮汐混部 计量计费 2021~2022 扩量与精细化 GPU虚拟化与GPU混部AI训练与潮汐混部 隔离能力提升 2023~后续 全局资源效率 资源合池 多场景统一调度全局弹性能力扩量 服务画像及AI资源预测 主机 服务 快速增长的业务与资源成本控制间的矛盾日益突出 快速发展的业务:给资源供给带来了挑战 应用数量众多 类型多种多样 升级变更频繁 资源潮汐化 IDC数目众多 峰值资源短缺 在离线分离 资源交付压力 CPU业务背景与趋势 离线+非实时作业 在线服务 资源利用率高实时性要求较低 利用率指标 资源利用率较低时延敏感 全天持续需求 大小块资源较可利用 资源需求点 “潮汐”特征明显需要足够buffer资源套餐固定 具备容错特性允许重试 稳定性要求 时延、饱和度、错误率重试成本高,用户侧有感 某在线业务三天使用率示意图 •流量波峰波谷•SLO保障冗余•用户估计误差•突发增长需求 GPU业务背景与趋势 服务量动态增长 微服务改造、长尾增多 实时流量潮汐实例负载及规模快速变化 资源池共享推理/训练/近线多场景混合 算力需求多样化 GPU 算力强需求 与 云原生化 多业务场景 提升GPU资源效率 卡类型多样 GPU硬件多年持续迭代 平台系统损耗 故障及主机异构的调度损耗 资源弹性需求 单卡、多卡、多机多卡场景 GPU应用已深刻影响各类业务(搜广推、音视频、MMU、风控等)场景快手内部GPU在线服务及离线训练任务均完成云原生化迁移 成本问题逐步凸显 核心优化目标:CPU&GPU资源利用率提升 图:快手内部某服务GPU使用率趋势 GPU卡规模 多种主流GPU卡型号 数万台GPU主机&十万量级GPU卡 十万量级 在线服务(推理等)、AI训练任务及近线服务(特征提取等)多样化场景 GPU服务 数千量级 在线服务GPU峰均差值约30PP训练类算力全天需求旺盛 运行效率 峰均差值 目录页 Contents 1背景与挑战 2利用提升最佳实践CPU混部篇 3利用率提升最佳实践GPU混部篇 4未来规划及展望 短任务 通用业务 如何落地系统能力 离线服务与作业 公司统一基础设施 公有云主机 容器集群物理机 业务存量物理机 备机及测试机 统一资源层(容器+存储) 容器 分布式存储 离线作业编排 Operator定制 弹性扩缩容 负载调度 跨集群调度 服务画像 动态超售 Job编排 应用编排 在离线容器编排 集群管理层 备机池及测试机 基础服务混用集群 主机部署服务器纳管 在线容器集群 容器网络 kwaistore rbd/nbd KATA 隔离增强 HDFS Flink 大数据引擎MR/SPark 定时任务 MapReduce 高容错应用 Spark 质检、报表等 转码类 自动化运维 资源成本分帐 资源贡献接入 离线资源监控 机房带宽监测 帐单管理 资源审计 大数据 审计系统 在线:LSE、LSR、LS 混部:LS、BE 更灵活的QOS等级 复用原生K8S资源类型 新增三种混部资源 4种资源类型 扩展资源类型 资源类型 特点简介 QOS 适配业务 Mid 供给资源量基于服务画像及AI资源预测模型,能够实现天级别的资源供给保障。适用于对资源驱逐比较友好的在线业务以及一些运行时间要求比较长的近线任务。 LS、BE Flink近线任务离线基线类服务 Batch 基于Mid资源超发后的再次超发,资源供给存在一定波动性,但整体退避率控制在一定sla范围内。适用于短作业或者对失败重跑有一定要求的中低优作业。 BE 离线批处理任务 高优音视频异步转码任务 gpu混部任务 Free 基于单机的利用率水位,资源供给无法提供较高保障,同时存在一定程度压缩和退避的概率。适用于对延时不敏感,同时具备恢复重跑能力的低优作业。 BE 低优音视频异步转码任务 测试任务 隔离能力建设 CPU 内存 离线帐户 •毫秒量级采集周期 •独占核与共享核管理 •CPUshare分级 •压力状态离线任务按顺退避 •毫秒量级秒采集周期 •服务画像及AI模型预测 •压力状态离线任务按顺退避 •OOM优先级 •帐户级FD整体约束 •容器内外帐户映射 •帐户权限、配额管理 网卡流量 •离线任务TC限速 •流量上限监测 •调度层优化分布 •机房流量分级管控 Pid 整机系统负载 磁盘空间/IO •超过阈值自动退避 •设置单机离线进程限制 •设置单容器实例进程限制 •毫秒量级采集周期 •混部大框维度管控 •分级按需退避 •数十秒级采集周期 •超阈值清理离线任务及数据 •重IO接入分布式块存储 •IOthrottle限制 内核隔离 调度优先级 超线程隔离 多调度队列 CPU 内存 内存异步回收 MIN水位分级 L3cache隔离 OOM优先级 在离线分盘 离线云盘 磁盘IO限速 磁盘 网络 单机TC限速 机房流量分级管控 内核隔离-CPU调度优先级 针对调度延迟优化的绝对优先级,高优任务对低优任务有绝对的优先级。调度抢占时会忽略CFS强 调的公平性: wakeup的时候,高优任务无条件抢占低优任务 picknext的时候,只要有高优任务处于就绪态,低优任务无法被pick CPU调度优先级有高中低三种级别 •高优可以抢占低优,不可以抢占中优 •中优可以抢占低优 调度QoS目标是通过混部在离线服务,在提高机器利用率的同时,保证高优和延迟敏感的在线业务不受离线业务影响。 内核隔离-CPU超线程隔离 针对CPU微架构资源的Smt-Denoise,高优任务有权独占物理核,并压制/驱逐对端的低优任务,减少低优任务对物理核算力、L1/L2cache等微架构干扰。 high TH1 low TH2 TH1 TH2 CORE CORE TH1 TH2 TH3 TH4 L2Cache L2Cache L3Cache high TH1 TH2 low TH1 TH2 CORE CORE ThreadCore IMC:MemoryBandwidth Socket 内核隔离–内存 内存异步回收 当memcg的内存使用量超过阈值时,需要进行直接回收;然而,直接回收给业务的执行路径引入不可 控的长尾;memcg级的后台异步回收功能,通过将memcg内存维持在一定水线可以避免直接回收 Min水线分级 支持给为离线作业设置单独的Min水线,降低混部后对在线直接内存回收。当整机内存不足时,优先 对离线进行分配抑制或者直接回收,降低高优先级memorycgroup触发直接回收的几率,优化其内存分配延迟。 脏页限制 L3 cache隔离 当整个系统脏页数量达到限制时,会开始执行writeback并限制写入速度;低优任务可能会产生过多脏页达到系统阈值,导致高优任务的脏页被过早flush,并被限制速度。该特性,能限制离线容器的脏页 数。 基于intel的RDT技术,限制离线作业的LLC占用量,降低离线和在线共socket干扰 资源抽取率提升实践 精细化管理/内核隔离能力 通过对各类混部资源精细化管理,同时借助内核隔离能力,混部深水区探索 整机利用率提升 20%+ 资源混部供给百万核量级 YARNonK8S 自研Yarnonk8s机构,实现离线MR/Spark任务混部 常态/潮汐混部模式 隔离能力增强 服务画像 /干扰检测 资源画像及预测 基于机器学习的资源预测模型,为离线任务提供稳定资源 多QOS等级 适配多业务qos等级需求,实现多场景服务混合部署 目录页 Contents 1背景与挑战 2利用提升最佳实践CPU混部篇 3利用率提升最佳实践GPU混部篇 4未来规划及展望 任务颗粒度 VGPU 大量单实例无法用满GPU资源 硬件算力持续增强形成浪费 GPU算力 显存 编码器 渲染器 请求优先级 Prioritized-QoS 为什么需要虚拟化与混部类技术 高优保障在线峰值流量 提升利用率优化成本 离线训练+近线任务压缩算力成本 在线容量冗余,峰值高而日均利用不足 离线训练成本高昂,近线类需求旺盛 高优抢占 分时复用 削峰填谷 消除冗余 保障实时在线需求 如何落地系统能力 业务场景 Services 电商推荐广告搜索音视频…特效处理直播媒体处理风控 框架平台 Framework&Platform 在线推理 音视频增强 服务容器部署平台 特征提取等近线任务 离线AI训练 机器学习平台 VGPU在线业务场景混部GPU离线训练与近线任务 虚拟GPU资源定义与调度 API劫持GPU算力隔离显存隔离限制 显存水位预测算力请求优先级离线时间片兜底 高优QoS抢占 显存分配识别 编解码器拦截 显存实时避让 离线内存监测离线CPU压制 硬件基础设施 Infrastructure GPU卡CPU内存网络存储 单实例独占 多实例共享 GPU显存 GPU算力 GPU显存 GPU算力 编解码器可选项 N分之一算力/显存 什么是GPU虚拟化 算力单元 算力单元 GPU 显存 编解码器 渲染器 路径允许多容器实例在资源隔离前提下共享GPU卡 方式VGPU实例:CPU+内存+算力占比+显存占比+器件选配 收益业务:用量减少成本降低 平台:部署密度增加利用率提升 GPU虚拟化底层技术选型 NvidiaMPS 多进程共享上下文,吞吐指标更优缺乏故障强隔离,容器间异常会传导不支持显存硬隔离 内核层劫持 内核层拦截驱动API隔离显存/算力细粒度的显存和算力调度策略 无需替换CUDA库上层应用无感 CUDA层劫持(vCUDA) CUDA层拦截API隔离显存/算力依赖容器镜像替换CUDA库CUDA发新版需要迭代适配 NvidiaMIG 硬件物理切分方式,适用A100、A30等卡型不支持动态划分 依赖CUDA11及以上高版本 快手GPU虚拟化方案 技术路线:内核态劫持 算力隔离:基于内核态的时间片轮转调度,多容器时分复用GPU计算器件 显存隔离:基于内核态劫持显存申请、回收等接口,控制容器使用显存配额 共享GPU的多容器 时间片分配周期Period 多容器实例按时间片轮转切换 占用GPU出让GPU Pod1 Pod2 VGPU按时间片调度示意图 时间轴t 性能压测数据 25.000 20.000 聚合QPS对比 原生GPU整卡快手虚拟化单卡双实例MPS方案单卡双实例 有效吞吐介于原生整卡与MPS抢占模式间 15.000 具备故障强隔离能力,显著优于MPS方案 10.000 35.00 P99延迟对比 原生GPU整卡模式 快手GPU虚拟化单卡两实例 MPS方案单卡两实例 30.00 5.000 25.00 0.000 18163264 BatchSize 20.00 15.00 时间片轮转引入极端场景P99延迟放大 适用具备一定延迟容忍的业务场景 10.00 5.00 0.00 18 163264 BatchSize 什么是GPU混部? 允许在线和离近线容器实例在优先级保障前提下共享同一块GPU卡 算力抢占 在线服务有GPU计算请求时立刻获取算力执行,离线服务的请求被压制 在线实例A 离线实列B 离线实例C 显存避让 在线请求实时抢占 立即执行 执行结束 请求resume resume 请求 请求suspend d 请求suspen 当剩余GPU显存低于安全阈值时,离线服务实例会被立即驱逐以释放显存供给在线服务进程 时间轴t 整卡显存 离