深度学习平台在线推理服务和离线训练作业混部

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 深度学习平台在线推理服务和离线训练作业混部 侯法超
2. 个人简介 l l 工作经历 l 21年4月~至今 58同城 AI平台 l 16年11月~21年4月 天润融通 呼叫中心 AI平台等 教育背景 l 13年9月~17年7月 本科 青岛科技大学
3. 目录 l 背景介绍 l 混部前提:自动弹性伸缩 l 离在线混部架构设计 l l 混部设计思路 l 监控数据接入 l Flink实时数据处理 l 资源组动态调整设计 l OnlineToOffline l OfflineToOnline l 离线训练作业调度 l 混部效果监控 总结及展望
4. 深度学习平台 模型训练 实验环境 推理服务 代码在线调试 单机单卡训练 资源复用 参数服务器(多机多卡训练) 推理加速(TensorRT、MKL、OpenVINO) 负载均衡 一键扩容 ABTest 深度学习框架 日 志 中 心 Docker、Nvidia-Docker2 Kubernetes Prometheus DNS Calico ETCD 资源管理 K40 rsyslog Grafana P40 … 服务发现 任务调度 存储 算力 CPU T4 2080ti … RAID 监 控 中 心 HDFS WOS WFS 镜 像 中 心
5. 目录 l 背景介绍 l 混部前提:自动弹性伸缩 l 离在线混部架构设计 l l 混部设计思路 l 监控数据接入 l Flink实时数据处理 l 资源组动态调整设计 l OnlineToOffline l OfflineToOnline l 离线训练作业调度 l 混部效果监控 总结及展望
6. 为什么要做混部 l l 提升资源利用率 l GPU计算资源昂贵,成本高 l 在线服务负载潮汐变化,将夜间波谷资源进行充分利用 灵活的资源拆借,应对在线服务突发的流量高峰 在线推理GPU负载 离线训练GPU负载
7. 在线推理服务 l 在线推理服务具有典型的潮汐性,天级利用率稳定 l 用户倾向于申请比实际需求更多的资源以确保服务的稳定性 l 通过在线推理服务的弹性伸缩能回收波谷资源的冗余副本
8. 离线作业与在线服务特点 在线服务 离线作业 时延 敏感 不敏感 SLO 高 低 负载模型 白天负载高,夜间负载低 只要运行,负载就很高 错误容忍 错误容忍度低,高可用 允许失败重试 如何通过混部控制实现在离在线之间资源的灵活拆借 ?
9. 目录 l 背景介绍 l 混部前提:自动弹性伸缩 l 离在线混部架构设计 l l 混部设计思路 l 监控数据接入 l Flink实时数据处理 l 资源组动态调整设计 l OnlineToOffline l OfflineToOnline l 离线训练作业调度 l 混部效果监控 总结及展望
10. 背景介绍 l 当前在线推理任务规模较大,占据了大量的CPU和GPU资源 l 在线推理任务的流量存在一定的规律性,空闲资源提供离线训练使用 充分利用计算资源,流量低峰资源使用率低自动缩容 l 应对流量上涨自动扩容减少人工提前干预
11. 基本思想 模型推理服务资源利用率扩容阈值x max ,缩容阈值x min ,期望阈值x,实 际资源使用率y l y > x max : 服务扩容,增加节点数量 l y < x min : 服务缩容,减少节点数量 l 扩缩容指标:GPU/CPU/内存/显存/QPS ...... l 扩缩容节点数量 y -> x
12. 自动弹性伸缩
13. CPU/GPU资源使用值预测 l CPU l l 5个模型 GPU l 5个模型
14. 弹性扩缩策略 l 机器学习模型GPU/CPU使用率预测 l 数据驱动 l 多重策略计算
15. 目录 l 背景介绍 l 混部前提:自动弹性伸缩 l 离在线混部架构设计 l l 混部设计思路 l 监控数据接入 l Flink实时数据处理 l 资源组动态调整设计 l OnlineToOffline l OfflineToOnline l 离线训练作业调度 l 混部效果监控 总结及展望
16. 离在线混部方案 l l 离线和在线推理任务部署同一服务器,需要对Linux内核做优化 l 在线及时抢占或驱逐离线 l 网络资源隔离 l L3 Cache 、内存带宽 l 磁盘IO 离线训练作业复用在线服务器,相对简单 l 整机出让 l 离线训练作业调度
17. 设计目标 l 在线服务SLO受保证,离线训练作业不能无限填充 l 在线服务需要更多资源时,离线训练作业能及时避让 l 离线训练作业的成功率受保证,不能因为频繁受限,导致失败率很高
18. 架构图
19. 目录 l 背景介绍 l 混部前提:自动弹性伸缩 l 离在线混部架构设计 l l 混部设计思路 l 监控数据接入 l Flink实时数据处理 l 资源组动态调整设计 l OnlineToOffline l OfflineToOnline l 离线训练作业调度 l 混部效果监控 总结及展望
20. 监控数据接入
21. Event收集 l K8s Event事件保存etcd中,默认只 保留1小时 l 消费者不能设计偏移量 l 减少K8s集群压力
22. 目录 l 背景介绍 l 混部前提:自动弹性伸缩 l 离在线混部架构设计 l l 混部设计思路 l 监控数据接入 l Flink实时数据处理 l 资源组动态调整设计 l OnlineToOffline l OfflineToOnline l 离线训练作业调度 l 混部效果监控 总结及展望
23. Flink实时计算
24. Flink实时计算 l 从Kafka Prometheus中取最近1分钟所 有Pod监控数据 l 通过保存在K8s中的节点元数据信息计算 Kafka Pod所有监控指标 出各资源组使用率 l 将各个资源组实时quota使用率分别推送 Pod监控指标聚合 给混部策略模块 资源组指标聚合 Kafka
25. Flink实时计算 Kafka 数据解析 指标过渡 podName pod监控 map filter byKey process byKey process Sink 资源组 k8s 元数据 资源组监控 pod Kafka
26. 目录 l 背景介绍 l 混部前提:自动弹性伸缩 l 离在线混部架构设计 l l 混部设计思路 l 监控数据接入 l Flink实时数据处理 l 资源组动态调整设计 l OnlineToOffline l OfflineToOnline l 离线训练作业调度 l 混部效果监控 总结及展望
27. 策略模块
28. 资源池划分 l 将所有服务器通过k8s labels分为在线、混部、离线三个资源池 l 调度规则 l 长时离线任务调度到离线资源池 l 短时离线任务优先调度到混部资源池
29. 资源池分组 l 在线推理和离线作业指定资源GPU,因此需要进行分组 l CPU 资源组 l GPU资源组 l l 根据不同类型显卡资源细作不同GPU资源组 vGPU资源组 l 根据不同类型显卡资源细作不同vGPU资源组
30. 在线基于quota使用率出让 l 根据各资源组cpu/gpu quota使用率,将自动缩容资源折合成同等规模的机 器 l 初始时集群满载,配置集群quota使用率阈值 y l 在线服务整体缩容,集群quota使用率下降至 x l 感知 y > x,选择节点进行实例驱逐,腾出整机出让给离线
31. 错峰实现资源动态配比 l l 两阶段混部模式 l 白天:离线按需出让资源填补在线高峰资源缺口 l 夜间:弹性伸缩出让闲置资源出让给离线训练使用 满足在离线各自资源需求的同时实现资源动态的配比
32. 节点状态变更 节点由离线转为在线或在线转为离线时,需要将原Pod驱逐,Pod会执行优雅关闭,在所 有Pod关闭前不能调度新服务,因此引入中间状态标签status=unnormal作为中间状态。 l online: 节点在线使用 l online2offline: 节点被选择出让,需要迁移 残留在线实例 l offline:节点离线使用 l offline2online: 节点被选择归还,需要清理 残留离线训练作业
33. 策略模块 l l 事件驱动 l quota使用率 l K8s Event K8s Pending 资源组 出让/回收 在线出让固定步长 l Kafka Kafka 保证在线稳定 离线/在线 是否可以出让 离线节点选择 离线节点选择 是否可以出让 在线节点选择 离线作业重调度 在线节点选择 离线作业重调度 Pod驱逐 Pod驱逐 策略执行 策略执行
34. 目录 l 背景介绍 l 混部前提:自动弹性伸缩 l 离在线混部架构设计 l l 混部设计思路 l 监控数据接入 l Flink实时数据处理 l 资源组动态调整设计 l OnlineToOffline l OfflineToOnline l 离线训练作业调度 l 混部效果监控 总结及展望
35. online2offline l l l 在线阈值 l 扩容阈值:在线超过此阈值则开始扩容 l 缩容阈值:低于此阈值则允许缩容 l 期望阈值:在线回收到该阈值 在线资源池出让的触发 l 当离线发生Pending时,则开始触发在线资源池出让 l 每分钟检测当前整体GPU/CPU使用率,根据缩容阈值确认是否可以回收 l 如果有因在线资源不足导致的Pending,停止出让 在线资源池出让采取平滑出让策略,固定步长,保证在线服务质量
36. online2offline l 在线资源池的出让分3步,筛选节点、清理节点、离线使用 l 1. 混部资源池中选出需要回收的节点: 先Pod数量,再GPU、CPU使用率。并保 证该节点回收后,当前在线集群quota使用率不高于`扩容阈值`,否则停止回收。 l 2. 将选出的节点标记为 status=unnormal,并对该节点上的在线Pod进行优雅驱 逐,对于Deployment中的采用先增加再删除策略。 l 3. 完成后标记为mix节点,此时开始调度离线训练作业到该节点上。
37. 基于Pod隔离的驱逐 保证副本数少的任务稳定,先创建,再驱逐
38. 目录 l 背景介绍 l 混部前提:自动弹性伸缩 l 离在线混部架构设计 l l 混部设计思路 l 监控数据接入 l Flink实时数据处理 l 资源组动态调整设计 l OnlineToOffline l OfflineToOnline l 离线训练作业调度 l 混部效果监控 总结及展望
39. offline2online l l 在线节点回收触发如下 l 当在线资源组CPU/GPU quota使用率超过 扩容阈值。 l 在线Pod自动扩容时出现Pending,根据所缺少的资源类型进行扩容。 节点快速归还过程如下: l 超过扩容阈值时,首先将混部资源池节点按训练作业数量升序排序。 l 依次选择要归还的节点,并计算将该节点归还是否低于期望阈值,以些批量选择节点。 l 将选出的节点标记 status=unnormal,并对该节点上所有任务进行驱逐并重新调度。 l 待所有驱逐完成后标记为onlinel,此时开始调度在线推理任务到该节点上。
40. 目录 l 背景介绍 l 混部前提:自动弹性伸缩 l 离在线混部架构设计 l l 混部设计思路 l 监控数据接入 l Flink实时数据处理 l 资源组动态调整设计 l OnlineToOffline l OfflineToOnline l 离线训练作业调度 l 混部效果监控 总结及展望
41. 离线调度
42. 离线训练作业区分 短时任务 长时任务 运行时间短、可以重 跑或重跑成本低 运行时间长、任务重 跑成本高或不能重跑 离线重调度 亲和性调度 混部资源池 亲和性调度 离线资源池 短时离线训练作业设置亲和性,优先调度混部资源池,其次离线资源 池。
43. 离线重调度 l 驱逐时优先选取混部中离线作业最少的节点 l 离线训练作业已经驱逐的直接调度到离线集群
44. 目录 l 背景介绍 l 混部前提:自动弹性伸缩 l 离在线混部架构设计 l l 混部设计思路 l 监控数据接入 l Flink实时数据处理 l 资源组动态调整设计 l OnlineToOffline l OfflineToOnline l 离线训练作业调度 l 混部效果监控 总结及展望
45. 混部效果监控
46. 线上效果 在线P40节点数 在线P40 quota使用率 25%左右离线任务可以混部, 夜间可回收50%左右在线服务器
47. 目录 l 背景介绍 l 混部前提:自动弹性伸缩 l 离在线混部架构设计 l l 混部设计思路 l 监控数据接入 l Flink实时数据处理 l 资源组动态调整设计 l OnlineToOffline l OfflineToOnline l 离线训练作业调度 l 混部效果监控 总结及展望
48. 总结及展望 l 继续扩大混部资源池 l 细化调度策略 l l 离线作业重调度后优先级调整 l 对离线作业精确画像,区分长短时任务 其他离线资源互通 l l 将其他平台离线作业调度到混部资源池 离线任务容器热迁移
49. 欢迎关注58AI Lab 58同城AI Lab隶属TEG技术工程平台群,成立于2018年5月,旨在推动AI技术在 58同城的落地,打造AI中台能力,以提高前台业务人效、收入和用户体验。 开项项目: Ø 《开源 | qa_match:一款基于深度学习 的问答匹配工具》 https://github.com/wuba/qa_match Ø 《开源 | dl_inference:通用深度学习推 理服务》 https://github.com/wuba/dl_inference 招聘后端、算法工程师,欢迎投递 chenxingzhen@58.com 或加小秘书微信号咨询:WubaAILab
50. 欢迎关注58技术 后端、前端、客户端、大数据、 运维、测试、AI 等各方向文章 AI相关: 搜索、推荐、广告、 NLP、图像、语音、风控 等 58技术公众号
51.

Home - Wiki
Copyright © 2011-2024 iteam. Current version is 2.137.1. UTC+08:00, 2024-11-15 22:39
浙ICP备14020137号-1 $Map of visitor$