GPU容器与AI训练平台探索与实践

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. GPU容器与AI训练平台探索与实践 陈瀚 vivo互联网容器架构师 刘东阳 vivo AI工程架构师
2. 目录 Part 01 第一部分|vivo GPU平台架构 Part 02 第二部分|GPU容器能力实践 Part 03 第三部分|AI工程训练平台实践 Part 04 第四部分|vivo GPU未来展望 CONTENTS
3. 1. vivo GPU平台架构 智能计算业务 语言大模型 蓝心小v、游戏助手、本地搜索… 语音大模型 实时翻译、方言随心说… 视觉大模型 AI绘画、人像消除、相册回忆… 商业化广告算法 内容推荐算法 游戏推荐算法 训练平台 模型开发、模型训练 推理平台 推理服务部署、管理 AI业务队列 影像业务队列 OS业务队列 互联网业务队列 资源管理 统一调度、部署、管理 编排调度 GPU弹性伸缩、训推潮汐部署、卡调度策略 GPU虚拟化 MIG虚拟化、内核层虚拟化、CUDA层虚拟化 多容器网络 Calico、Hybridnet、Sriov(RDMA) AI工程层 容器平台层 物理层 (基础设施) GPU服务器 英伟达、异构卡 … 分布式存储 轩辕存储、HDFS… 高性能网络 RoCEv2、IB …
4. 第二部分|GPU容器能力实践 2.1 大规模容器集群稳定性 2.2 GPU容器提效降本实践
5. 2.1 大规模GPU容器集群稳定性背景 大规模集群运维工作繁重 日常运维工作量大 发现问题不及时 高频任务调度影响组件 高频调度组件负载激增 极易发生集群雪崩 故障处理面临严峻挑战 稳定性建设 故障处理难度大 故障复杂场景多
6. 2.1 大规模GPU容器集群稳定性建设 架构 性能优化 集群 自动化运维 故障处理 与恢复预演 Apisever优化 etcd优化 CoreDNS优化 在线\离线分离 Event限流 负载与连接数均衡 横向扩容 单独ssd磁盘 存储时长调整 List穿透请求优化 Event集群拆分 离线元数据存储优化 LocalDNS Cache 组件HPA自动扩容 优化ndots配置 启用DNSTAP插件 自动化节点管理 监控告警 自动化巡检 自动故障发现 自动屏蔽故障节点 自动健康检测与开放调度 宕机通知与重建pod通知 域名解析监控 异常pod\node监控 存储挂载监控 网络连通性监控 平台组件监控 集群健康诊断 异常pod巡检 节点健康巡检 周期自定义脚本巡检 etcd故障预案 Master故障预案 网络与镜像仓库预案 事件集群故障切换 元数据备份与恢复 节点异常无感切换 Master节点扩容场景 Controller节点异常替换 Scheduler节点异常替换 Apiserver节点异常替换 RR节点异常 上游交换机异常 Harbor单节点故障 Harbor单机房故障
7. 2.1 大规模GPU容器集群稳定性建设成果 etcd提交延迟 秒级缩短到 毫秒级 Apiserver CPU 负载下降 年度故障 复盘数下降 60 70 CoreDNS无毛刺 且负载下降 集群可用性 99.99 稳定性建设 效果 90
8. 第二部分|GPU容器能力实践 2.1 大规模容器集群稳定性 2.2 GPU容器提效降本实践
9. 2.2 GPU容器提效降本方案总览 GPU容器降本提效解决方案 单卡维度 单服务维度 多服务维度 多机多卡维度 自研GPU虚拟化方案 GPU弹性扩缩容方案 训推潮汐部署方案 容器RDMA高性能网络方案
10. 2.2.1 单卡共享-GPU虚拟化背景 低利用率 业务浪费资源 开发机显存 超售需求 部分推理业务负载低 业务对安全性和隔离性要求不同 共享部署降低成本 适配共享部署 业务的多种需求 Dev开发机用户使用频率低 显存超售提高资源复用率
11. 2.2.1 vivo 自研GPU虚拟化架构 统一调度 接入Kubernetes 自研组件 vgpu-device -plugin vgpu-scheduler vgpu-exporter GPU虚拟化 多容器共享GPU方案 vgpu-docker 1. 自研组件 多种卡调度策略 Binpack \ Spread \ CardOnlyOne \ CustomTopo GPU虚拟化 能力矩阵 MIG 虚拟化 内核层 虚拟化 • vgpu-device-plugin:注册vgpu资源、分配设备、标识信息 • vgpu-scheduler:调度拓展插件,支持多种卡调度策略 • vgpu-exporter:vgpu监控组件 • vgpu-docker:处理vgpu设备挂载和清理逻辑 CUDA层 虚拟化 2. 多种卡调度策略 物理层 (基础设施) GPU服务器 英伟达 高性能网络 RoCEv2、IB … 分布式存储 轩辕存储、HDFS… • Binpack:尽量聚集 • Spread:尽量分散 • CardOnlyOne:每个卡只有一个实例 • CustomTopo:自定义节点与卡分配拓扑
12. 2.2.1 vivo GPU虚拟化方案 MIG虚拟化 内核层虚拟化 CUDA层虚拟化 CUDA进程 CUDA进程 CUDA进程 IOCTL /dev/nvidia 挂载 单卡 划分 /dev/nvidiactl /dev/nvidiactl /dev/nvidia CUDA API Lib库 替换 计算 单元 计算 单元 计算 单元 计算 单元 显存 单元 显存 单元 显存 单元 显存 单元 /dev/vgpu_ctl /dev/vgpu_nv 虚拟 设备 内核 模块 算力限制 技术 显存限制 libcuda.so NVIDIA Driver 硬件提供的切块组合能力 算力限制 API函数映射关联 显存限制 调用 NVIDIA Driver NVML API libnvidia-ml.so NVIDIA Driver 替换字符设备,内核态拦截IOCTL请求 拦截库替换API库,建立函数映射关系 优点 NVIDIA官方解决方案 硬件层安全性高 隔离性强 无需替换CUDA库上层应用无感 内核态安全性高 有开源方案 使用灵活 可实现显存超售 缺点 仅支持Ampere及以后架构的卡 仅支持特定比例切分 无开源方案,自研难度高 算力隔离不充分 用户态安全性低 算力隔离弱 应用 算力隔离强需求的线上业务 常规线上业务 Dev开发机业务 拦 截 库
13. 2.2.1 GPU虚拟化性能与效果 自测对比业界方案性能数据 自研vGPU 头部厂商1 头部厂商2 GPU虚拟化效果 开源vCUDA 7000 6312.55 6408.39 6266.91 6067 6000 5000 4647.32 4662.89 4597.74 4532 平均单卡虚拟化率 开发机显存超售率 300% 400% 整机GPU利用率提升 业务成本优化 30% 50% 4000 3114.78 3116.23 3000 3073 2872.36 2000 1000 0 bs=32 实验参数 bs=64 bs=128 模型:tf_cnn_benchmarks、数据集:cifar10、model:resnet20 、资源规格:0.5卡 NVIDIA卡
14. 2.2.2 服务提效-GPU弹性扩缩容背景 快速应对突发流量 减少了人工干预频率 简化GPU推理 业务运维管理 GPU弹性 扩缩容背景 原生K8s不支持 GPU弹性扩缩 原生 功能缺失 非生产实例无负载 资源闲置造成浪费 非生产环境 GPU资源浪费
15. 2.2.2 GPU弹性扩缩容方案 KEDA 技术方案: 调整HPA Horizontal pod autoscaler Metrics adapter Controller 实例扩缩 Scaler 事件触发 1->n or n->1 0->1 or 1->0 GPU自动弹性扩缩容 = KEDA框架 + 自研的GPU- Scaler插件 + Prometheus + DCGM- Exporter(GPU利用率指标) 非生产环境默认开启: 闲置实例自动缩容到0 GPU-Scaler 指标转换事件 Workload 指标查询 监控指标 采集存储 DCGM-Exporter Prometheus 80% 1小时/周 资源不足告警 单业务扩缩工作量
16. 2.2.3 多服务降本-训推潮汐部署背景 服务运行稳 定保障 在线推理 服务延时敏感 训练任务 需要稳态运行 利用率 痛点优化 推理业务 潮汐特征明显 整机GPU 平均利用率偏低 训练GPU 资源紧缺 多机多卡 训练整机需求增长 训练资源 缺口问题明显
17. 2.2.3 训推潮汐部署方案 推理和训练 整机分时复用 在离线任务切换 (7:30-8:00) 整机腾空能力 = CronHPA(定时) + WorkloadSpread(分区部署) + Pod优先级缩容 在线推理稳定运行 (8:00-23:30) CronHPA 定时扩缩 缩容场景 Workload Cost-manager 自研 配置稳定pod数:FixedCount workloadSpread 根据Pod与 Node拓扑 Subset 稳定 离线训练运行 (0:00-7:30) Subset 潮汐 所在节点实例数少的 Pod优先缩容 推理整机腾空 (23:30-24:00) 资源池(稳定) 资源池(潮汐) Node-1 Node-1 整机GPU利用率提升 推理业务成本降低 Node-2 Node-2 20+% 30% Node-N Node-N 期望Replica <= FixedCount在稳定池扩缩 期望Replica > FixedCount在潮汐池扩缩 刷新Pod 缩容优先级
18. 2.2.4 多机多卡提效-容器RDMA高性能网络背景 大规模分布式训练 和推理的需求 训练和推理 需要多机多卡 网络通讯 成为性能瓶颈 减少CPU开销 和降低网络延迟 RDMA跨节点 零拷贝数据传输 有效减少CPU开销 和网络延迟 GPU容器 结合RDMA网络 平台需要提供完整解决方案
19. 2.2.4 容器RDMA高性能网络方案 K8s node app RDMA网络管理组件 rdma api rdma协议 RDMA容器相关组件: pod1 buffer Multus-CNI: Multus-CNI tcp协议 buffer sockets Calico-CNI buffer Pod网络协议栈 Sriov-CNI eth0 K8s node pod1 Calico-cni: app eth1 Sriov-Device-Plugin buffer host网络协议栈 支持单容器多种网络创建。 eth1 基于veth创建网卡eth0对应underlay网络。 eth0 vf Kernel 基于vf创建网卡eth1对应rdma网络。 Spiderpool eth0 eth1 Sriov-cni: eth1 eth0 ROCE_V2\IB协议网络 TCP/IP流量 在大规模训练和推理场景,业务提速20%-30% Spiderpool: 管理网络池以及ip分配、路由策略配置。
20. 第三部分|AI工程训练平台实践 3.1 训练平台整体架构 3.2 大规模训练稳定性实践 3.3 GPU利用率提升实践
21. 3.1 VTraining训练平台整体架构 VTraining训练平台是由vivo AI计算平台团队打造的一站式大模型训练方案,它面向算法工程师, 提供模型开发、模型训练和海量样本存储等能力。 产品 蓝心小V 输入法 全局搜索 相册 模型 多模态大模型 语音大模型 语言大模型 图像大模型 训练平台 模型开发 开发机、jupyter、… 模型训练 分布式训练、故障自愈 资产管理 镜像、数据、… 平台工具 环境检测、模型转换、… 容器 资源管理 编排调度 GPU虚拟化 自动化运维 算力 高性能计算 高性能RDMA网络 高性能训练存储
22. 第三部分|AI工程训练平台实践 3.1 训练平台整体架构 3.2 大规模训练稳定性实践 3.3 GPU利用率提升实践
23. 3.2.1 大规模训练稳定性实践-问题 大规模训练依赖复杂的训练集群环境,任何环节出问题都会导致 任务中断,问题定位、恢复困难 任务调度 训练过程 基础设施 常见问题 行业案例 同步训练,反复迭代 加载模型 加载训练样本 GPU计算 训练通信 保存模型 计算 网络 存储 调度 ECC 启动报错 挂载异常 千卡调度慢 GPU掉卡 Hang、超时 读写异常 调度异常 慢节点 网卡掉卡 数据不一致 无拓扑感知 NaN 性能抖动 性能抖动 知名头部公司千亿参数大模型的大规模训练任务,平均每 3小时 触发一次意外中断。
24. 3.2.2 大规模训练稳定性实践-高频故障专项治理 GPU集群投入使用初期机器故障率高 可通过高频故障专项治理使故障尽快收敛 高频故障专项治理 大规模测试诊断 GPU集群 高频故障统计 高频故障修复 ECC 故障 硬件维修、替换 NaN 故障 固件/驱动升级 GPU、网卡掉卡 软件优化、bug修复
25. 3.2.3 大规模训练稳定性实践-故障处置流程完善 任务故障不可避免,通过完善故障处置流程缩短任务中断时间,尽快恢复任务运行 训练前 基础环境预检测 任务模拟测试 风险问题剔除 降低故障风险 HostPing主机检测 VCCL通信检测 GPU机器、网络等稳定性 环境、配置、流程验证 异常节点、慢节点等剔除 环境配置修正 训练中 故障发现 故障定位 故障容错 自动化容错 基础设施监控指标异常 任务状态、日志异常 异常特征匹配、节点定位 实时诊断(torch profile等) 自动隔离故障 自动重启任务 新问题搜集分析 异常特征库完善 问题诊断能力增强 训练后 诊断增强
26. 3.2.4 大规模训练稳定性实践-效果与总结 减少基础设施高频故障、完善任务故障处置流程,是保障千卡大规模训练稳定性的关键 效果 总结 机器每天 故障率大幅下降 千卡任务有效训练时长 达到行业一流水平 机器每天故障率 千卡任务有效训练时长 99.0% 2% 提高 • 不同环境、任务会触发不同的稳定性问题,GPU驱动、VBIOS固件、训练框架 版本等需要匹配/适配 大规模训练前,尽量剔除历史故障率高的机器 • 稳定的机器一般会一直很稳定,而历史故障率高的机器即使修复后,重复出现 故障的概率也比较大 39% 降低 GPU集群由不稳定到稳定,需要一个软硬件磨合过程 60% 0.19% 提升任务有效训练时长 需结合基础设施、训练框架、平台容错机制综合优化 0.1% 治理前 治理后 优化前 优化后 • 例如秒级监控告警能力、checkpoint持久化策略、秒级故障隔离、任务重调 度等方面的持续优化
27. 第三部分|AI工程训练平台实践 3.1 训练平台整体架构 3.2 大规模训练稳定性实践 3.3 GPU利用率提升实践
28. 3.3.1 GPU利用率提升-业务背景及问题 差异化的业务场景下GPU资源难以高效利用,利用率提升挑战巨大 GPU场景常见业务形态及特点 训练任务 推理业务 数据生产 开发调试 GPU利用率高 白天GPU利用率高 GPU利用率高 GPU利用率低 周期性占用资源 夜间GPU利用率低 资源需求大 长期占用资源 大部分不能中断 资源优先级高 可随时中断 性能要求低 偶尔出现 碎片化空闲资源 夜间GPU 利用率低 资源需求大 难申请 GPU利用率 长期低下
29. 3.3.2 利用率提升措施一:低优任务 训练任务场景偶现的碎片化空闲资源,可通过低优数据生产任务进行充分利用 在不影响正常训练任务调度的情况下,通过低优任务充分利用GPU资源 训练偶现碎片化空闲资源 低优数据生产任务调度 正常任务随时抢占低优资源 机器1 GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU 机器2 GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU 机器3 GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU 机器4 GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU time1 time2 GPU 正常任务使用GPU卡 GPU 空闲GPU卡 time3 GPU 低优任务使用GPU卡
30. 3.3.3 利用率提升措施二:训推潮汐部署 推理业务在夜间流量低峰期可释放大量GPU资源,可通过训推潮汐部署给离线业务复用 通过训推潮汐部署,将夜间推理流量低峰期缩容机器腾挪到离线,白天再腾挪回在线 白天流量高峰期 (HPA扩容) 夜间流量低峰期 (HPA缩容) 白天流量高峰期 (HPA扩容) 夜间流量低峰期 (HPA缩容) 白天流量高峰期 (HPA扩容) 推 理 流 量 时间 离线GPU资源池 资 源 池 水 位 离线GPU资源池 离线GPU资源池 离线GPU资源池 离线GPU资源池 在线GPU资源池 在线GPU资源池 在线GPU资源池 在线GPU资源池 在线GPU资源池 *箭头代表GPU机器腾挪方向,推理业务通过HPA水平扩缩容实现GPU资源扩缩容
31. 3.3.4 利用率提升措施三:GPU虚拟化 开发任务长期独占GPU资源且利用率低 可通过GPU虚拟化技术实现资源超卖,减少资源占用量,释放冗余算力 不开VGPU 开启VGPU 单机4卡GPU机器 虚拟出16个VGPU GPU1 VGPU 优点 支持1:2、1:4超卖 vGPU vGPU vGPU vGPU GPU2 vGPU vGPU vGPU vGPU 用内存补充显存不足 GPU3 vGPU vGPU vGPU vGPU 用户无感知使用 GPU4 vGPU vGPU vGPU vGPU 适用性能要求低场景 开启 VGPU 通过vivo自研VGPU虚拟化技术,减少开发任务占用的物理GPU卡数
32. 3.3.5 利用率提升总结与规划 平台通过低优任务、训推潮汐部署、GPU虚拟化等策略 深度适配差异化业务场景特性,实现资源高效复用,GPU利用率提升明显,接近行业一流水平 训练任务 数据生产 AI整体GPU 利用率提升 低效任务治理 低效资源盘活 效果 规划 成本/账单输出 均值 奖励与惩罚措施 5% 开发任务 推理服务 (绝对值) 对GPU利用率进行综合治理,让稀缺的GPU资源发挥更大价值 ……
33. 目录 Part 01 第一部分|vivo GPU平台架构 Part 02 第二部分|GPU容器能力实践 Part 03 第三部分|AI工程训练平台实践 Part 04 第四部分|vivo GPU未来展望 CONTENTS
34. 4. vivo GPU未来展望 让业务更加稳定、资源利用更加高效 训练平台 秒级预警 动态容错 全流程提效 精细运营 联邦调度 GPU混部 异构芯片 GPU池化 容器平台
35. 谢谢!Q&A

trang chủ - Wiki
Copyright © 2011-2025 iteam. Current version is 2.146.0. UTC+08:00, 2025-10-16 17:06
浙ICP备14020137号-1 $bản đồ khách truy cập$