您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。[2023第十二届全球TOP100软件案例研究峰会]:火山引擎-唐鹏程- 字节跳动云原生开源 -- 资源管理与成本优化 - 发现报告

火山引擎-唐鹏程- 字节跳动云原生开源 -- 资源管理与成本优化

AI智能总结
查看更多
火山引擎-唐鹏程- 字节跳动云原生开源 -- 资源管理与成本优化

字节跳动云原生开源:资源管理与成本优化 唐鹏程火山引擎云原生架构师 讲师简介 曾就职于容器创业公司才云科技,现就职于火山引擎云原生PaaS团队,有多年ToB云原生落地经验。主要关注多云、调度、在离线混部等基于Kubernetes的能力构建 唐鹏程云原生架构师 目录 •背景介绍•云原生资源管理•云原生成本优化•云原生开源 业务体系 机器学习和大数据 推广搜服务 微服务 存储服务 为推广搜离线训练、数据报表提供支撑的数据处理服务,分布式训练,流式、批式计算场景,超高数据吞吐量,对算力要求高,重内存和吞吐 为Feed、搜索提供内容列表的后端服务,实时在线推理服务,追求极致性能。服务数量少,链路简单,服务间数据交互量大,单一服务资源消耗量大,算力要求高 主要是支撑应用的业务逻辑,产品特性驱动,业务迭代效率高,单一服务链路简单,整体链路复杂,重cpu和rpc延迟 为应用提供数据存储服务,包括通用存储、数据库、NoSQL等,通常为有状态应用,故障影响大同,对资源稳定性要求高 云原生历程 统一云原生资源池 云原生资源管理 复杂的资源管理需求 业务云原生化对基础设施的资源管理和调度能力提出了更高的要求更多样化的资源管理能力•GPU/FPGA/RDMA 更精细化的资源分配策略 •NUMA绑定/独占•NUMA级别的pod亲和及反亲和•资源微拓扑亲和•… 拓扑感知调度 原生拓扑管理机制的局限 •K8s原生调度器不感知节点的微拓扑,可能导致大量非预期的Admit失败 •K8s原生的拓扑亲和策略只考虑了NUMA拓扑,难以满足大模型训练等业务对性能的要求 整体方案 QoS Resource Manager KatalystScheduler KatalystAgent •提供插件化的资源管理能力•对接原生的Topology Manager,实现NUMA亲和 •通过插件的方式定制对容器的资源分配策略•采集并上报拓扑信息 •扩展调度器插件,根据节点上的微拓扑信息进行资源准入和打分 Case1:GPU-RDMA拓扑亲和 在分布式训练场景下 •GPU和RDMA在同一个Root Complex下,可以使用GPUDirectRDMA加速通信•GPU和RDMA公共的PCIe Switch层级越低,Pod间通信的带宽越大 Case2:RDMA-RDMA拓扑亲和 在分布式训练场景下,RDMA连接的交换机越近,Pod间通信的带宽越大 Case3:NUMA级别的Pod亲和与反亲和 对于采用PS-Worker框架的训练作业 •PS对性能要求较高,不可跨NUMANode分配资源•Worker对内存带宽消耗较大,应避免和PS分配在相同的NUMANode上 云原生成本优化 资源规划的挑战 •资源利用率呈现波峰波谷,夜间资源利用率非常低 •业务倾向于申请比实际需求更多的资源以确保服务的稳定性,造成资源浪费 分时弹性混部 业务模型复杂,资源模型同质 •搜索广告CTR/CVR、NLP、CV•重吞吐和训练效果,高算力需求•运行时间长,杀死代价高•NUMA绑定,异构设备加速 •搜索、广告、推荐的核心服务•加载模型,重内存•对延迟极度敏感,对业务的展示效果也有一定要求,性能影响收入•NUMA绑定,异构设备加速 整体方案 核心逻辑 •弹性伸缩:在线业务在谷时通过HPA/VPA等能力实现自动缩容•整机出让:对pod尽可能做bin-packing,将整机出让给离线业务 优势 •对节点资源隔离能力要求低•使用成本低,上量过程平滑 实例数管理 •根据利用率、时间、资源供给量等因素,动态调整在线推理服务和离线训练作业的副本数 节点池管理 •动态调整节点的类型,将其划分给在线或离线业务使用•当节点类型发生转换时,尝试对在线服务进行Binpacking 离线资源稳定性 大部分离线任务运行时间长,频繁杀死和重跑任务对离线业务来说也会造成较大的影响。 离线业务的资源供给并不稳定 •资源总量,供应时间并不能提前预知•在线抖动时随时回收 如何在不稳定的资源供应基础上保证离线业务的稳定性也十分重要 •离线业务框架弹性定制。e.g.PS/Worker架构的分布式训练实现checkpointdump/reload•优化资源分配。e.g.优先提高作业加速比,而不是运行更多作业•优化资源回收。构建弹性资源优先级基于优先级实现资源回收 Case1:视频编解码业务 作业特征 •基于k8s自研的业务架构,通过中心的taskscheduler分配作业给executor•任务之间相互独立,可以实现快速水平扩缩容•每个任务的处理时间短,通常在分钟以内,杀死成本低 弹性资源 •执行编解码任务的executor使用在线出让的弹性资源 Case2:GPU弹性训练 CV、NLP等场景下,通常可以在一个GPU的显存里完整地加载所需的模型参数,使用RingAllReduce通信模式可以更加合理地使用带宽 作业特征 •Worker天然支持故障容忍和弹性•弹性加速比较大,和Worker数正相关 稳定资源 •Launcher:崩溃训练失败•(0, min] Worker:保证稳定 弹性资源 •(min, max] Worker:加速训练•在线推理服务的模型较大,扩缩即整机 云原生开源 Katalyst:开源在离线混部机资源管理系统 •Katalyst是一个开源在离线混部系统,是对字节超大规模在离线混部实践的总结和抽象。 •核心能力 •差异化的QoS定义及实现•智能化的资源回收和保障策略•精细化的资源管理能力•多样化的成本优化手段 •内外同源。通过Katalyst,字节实现了资源利用率从30%到63%的提升。 项目地址:https://github.com/kubewharf/katalyst-core 内部实践效果 开源社区 社 区 双 周 会 S l a c k •周 四1 9 : 3 0 (北 京 时 间)•议 题 与 会 议 记 录 •k u b e w h a r f . s l a c k . c o m•C h a n n e l :k a t a l y s t G i t H u b仓 库 社 区 飞 书 群 https://github.com/kubewharf/katalyst-core 微 信 官 方 公 众 号 : 壹 佰 案 例关 注 查 看 更 多 年 度 实 践 案 例