字节跳动云原生机器学习离线训练实践

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 字节跳动云原生 机器学习离线训练实践 单既喜 字节跳动基础架构研发工程师
2.
3. 个人简介 • 2014-2016 Schlumberger Maxwell • 2016-2020 一点资讯基础架构部 (调度系统、Spark、Hive、Presto) • 2020-2022 字节跳动基础架构-计算 (Primus、Spark、Feature Store)
4. 目 录 01 简介 01 02 云原生离线训练 01 案例与最佳实践 01 总结 01 03 04
5. 01 01 简介
6. 业务背景与架构 ● 范围:推荐、广告、搜索 Reckon 训练平台 ● 机器学习训练引擎(计算+数据) Lagrange Lagrange-Lite (TF) (TF) 美洲豹 蒲公英 (GPU) Lagrange X (训练流程编排) Norbert (训练流程编排) Ream (资源 Quota 管理与准入) 注1:Lagrange、Lagrange-Lite 为字节跳动自研 的 TF 深度学习训练框架; 注2:蒲公英为 GPU 架构 (SparseDense 分离的) 深度学习框架,高速训练 注3:美洲豹为 GPU 架构 (AllReduce 架构) 的高 速训练框架 Primus (云原生离线训练框架) YARN Kubernetes HDFS
7. 离线训练架构 1.0 • 集中式离线训练 • Docker on YARN • 服务化 Parameter Server(PS) • 0->150w vCores Reckon+Lagrangex PS Primus App PS Primus App Primus App Mesos docker on YARN HDFS
8. 云原生 离线训练架构 2.0 • 分布式离线训练 Primus App API Server • 伴生 (PS) Norbert • 声明式 API • Top3 离线计算框架 Reckon+Lagrangex Worker PS Primus App Primus App Q: Top3 其他2个计算框架是什么? Spark、Flink、Primus HDFS docker on YARN
9. 云原生 离线训练架构 3.0 • 集中式 API Server + CRDs • 自研 Godel (Kubernetes) • 30% Reckon+Lagrangex Primus App Norbert Norbert Worker API Server k8s PS Primus App Worker PS Primus App Norbert Worker Kubernetes PS
10. 云原生 离线训练架构 UI
11. 云原生 离线训练架构 UI
12. 作业规模 10000 4000 400w 作业/天 单最大作业数 vCore 总量 30w vCore K8s
13. 01 02 云原生离线训练 ■ 计算调度 ■ 数据编排
14. 计算调度 弹性 API-Server 容器化 Primus Operator 多⻆色+异构 微服务
15. Primus Operator 整体架构 Job CRD Observe Meta Spec Reconcile Update Compute Kube builder Status
16. Primus Operator + Framework PrimusJob CRD Primus Data CRD PrimusRole Norbert Driver Primus Operator Primus AM Pod TF PS TF workers TF GPU Workers
17. 训练多⻆色调度-PrimusRole CRD Role Status PrimusRole crd PrimusRole crd PrimusRole crd Worker PS GPU Shard Status Pod Name ExecutorStat RestartCnt Endpoint Pod Pod Pod
18. 多⻆色异构调度-调度策略 Dynamic Policy Gang Policy Order Policy Lagrange Lagrange Lite Lagrange Lite
19. 训练弹性调度 Primus Role worker Norbert Driver Slow Start worker Primus Role ps Pod Group Primus Operator Gang Scheduler PS
20. 弹性调度-价值与收益 • • • 混部Smart Resource : CPU 利用率 20% --> 70% Slow Start : 启动时强稳定性、中期高训练速度 潮汐/反潮汐训练 更大的资源池
21. 01 02 云原生离线训练 ■ 计算调度 ■ 数据编排
22. 数据编排 复杂数据源 (day/hour/customize) ● ● ● HDFS Feature Store (Iceberg) Kafka 编排策略 ● ● ● ● Group By Filter Shuffle Within Partition Global Shuffle
23. 元数据编排 00 00 00 01 01 01 02 02 02 Shuffle + Group By + 追新 00 00 00 01 01 01 02 02 02
24. 训练Task传输 DataStreamB DataStreamA 2020-2022 PrimusData CRD Kafka 2020-2022 Primus AM Norbert Driver Executor Executor JVM TF worker Executor Executor
25. 数据传输实践(IPC) • 管道:竞争、序列化反序列化 1. 匿名管道 • Socket:内核态用户态 • ShareMemory:多进程管理 • JNI:统一进程 2. Domain Socket 4. JNI 3. Share Memory
26. 案例与最佳实践 01 03 ■ 服务化 PS vs. 云原生 PS ■ Primus Flow ■ 批流一体 ■ 云原生混部训练 ■ Native Lib
27. 服务化 PS vs. 云原生 PS 训练 PS Service ➢ ➢ ➢ ➢ PS on YARN/K8S Checkpoint 同机房撮合 资源利用率低 运维与部署难度大 隔离性差(网络、内存带宽、CPU) ➢ 全链路 Incremental Checkpoint ➢ PS 单点 Kill / 恢复 ➢ Smart Resource PS on YARN/K8S SavePoint ➢ ➢ ➢ ➢ ➢ PS Gang 性调度 服务发现 (consul -> 自研)、健康检查 单作业 + 容器化部署 性能:Numa Bind SavePoint 机制
28. PrimusFlow ● 特征调研 行级 Shuffle ➢ 边计算边训练 丰富数据源支持 ➢ ● PrimusRow Job 1 Hudi、TOS、HBase 多数据流编排 ➢ ● ➢ PrimusRow Job 2 普通流与预处理流混合训练
29. 批流一体架构 Flink -> Primus Streaming (抖音晚高峰+GPU) 多⻆色异构流式训练 ● N 个⻆色:GPU + CPU +伴生 PS ● Forward + Rebalance 批流一体+批流协同 ● Batch ● Streaming
30. 混部训练场景(资源问题) 计算管理:-1818 等退出码识别(混部资源随时退出的特点) 数据管理:样本丢失或重复问题 (缓存问题,心跳丢失问题) TF WORKER TF WORKER Executor Executor File: Pos: File: Pos: 6% -> 0.5%
31. Primus Native Data Master ● 编程范式 Configuration ➢ Declarative programming ➢ Py4J UDF, AutoType Convert ➢ ● Data Executor ● Serialize/Deserialize ● Pod -> 多进程、多 Container TF WORKER TF WORKER Executor Executor ● 总吞吐量从 3.3GB/S 提升至 13.5GB/S ! 提升 4x ● 单节点吞吐率从 411MB/S 提升到 1.2GB/S ! ● CPU使用率:从 2.25 核心提升到 5.25 核心 ! 2.3x 提升 4x 提升
32. 01 04 总结
33. 总 结 云原生离线训练 案例应用 • 超大规模容器化(docker on YARN, K8S) • 多环境的 API Server 声明式 API (YARN + K8S) • 计算能力:多⻆色+异构+弹性调度 • 数据能力:复杂数据编排 + 高性能IPC传输 • Primus Flow • Primus Streaming 批流一体 • 超大规模混部训练 • Primus Native
34.
35. 欢迎交流

ホーム - Wiki
Copyright © 2011-2024 iteam. Current version is 2.137.1. UTC+08:00, 2024-11-16 09:23
浙ICP备14020137号-1 $お客様$