- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 视频嵌入链接 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
字节跳动超大规模离线训练系统演进
单既喜-字节跳动基础架构研发工程师
展开查看详情
1 .
2 .字节跳动超大规模离线训练系统演进 单既喜
3 . 01 简介 02 Primus 1.0 - 多角色异构训练 CONTENT 03 目录 >> Primus 2.0 - 弹性训练与伴生PS 04 Primus 3.0 - 数据编排与多环境训练 05 总结
4 .简介
5 .简介 方案 Primus 计算+数据+编排 • 训练框架 • Lagrange (自研ML框架) • Tensorflow、Horovod • 样本分发 • 训练编排 YARN + Kubernetes
6 .架构演进
7 .系统架构演进 •离线训练1.0 多角色异构训练 训练1.0 训练2.0 训练3.0 • 多类型数据 • 服务化PS (Parameter Server) 计算 多角色 弹性资源 数据预计算 Primus Flow •离线训练2.0 弹性可编程训练 PB、4mc、 Multi-Stream 数据 Kafka Feature Store Traning 动态数据 + Feature Store 全伴生训练 编排 YARN 潮汐训练 服务化PS 全伴生PS训练 架构 Kubernetes 离线训练3.0 混部 伴生样本预处理 PrimusFlow 多数据流编排 潮汐训练 (Daily 00-06, 在线->离线) Kubernetes
8 .离线训练1.0 简介 • YARN 多角色、容器化、多任务分布式训练框架 挑战 • 训练框架对容器化+分布式训练需求 • 缺少 Hadoop 文件格式支持 • 缺乏故障恢复与作业管理能力 解决方案 • 兼容多种机器学习框架:Lagrange、TF、Horovod • 多角色编排:role 创建、failover • 复杂多数据源:PB 4mc 4mz + Kafka • Task 管理:Checkpoint • 服务化PS (Parameter Server)
9 .离线训练2.0 简介 弹性可编程,高性能的分布式训练框架 训练1.0 训练2.0 挑战 计算 多角色 弹性资源 • 定制训练:训练不同阶段并发控制 GPU + CPU 混合训练 InstancePB、4mc、 • 数据读取:读放大问题 数据 Kafka Feature Store • 服务化PS约束:PS 总量限制,隔离性问题 编排 YARN、PS服务化、 常态混部 全伴生 PS 训练 架构 解决方案 • API Server 通讯枢纽+ Coordinator大脑 • Feature Store • 全伴生训练 (Ps on YARN)
10 .离线训练2.0 (计算) : 弹性训练 API Server + Coordinator 面向终态的训练编排 • API-Server create update watch • Coordinator • 角色弹性Min-Max • 动态数据 资源 CRD •Job •Data •Roles
11 .离线训练2.0 (数据): Feature Store + 数据传输优化 Feature Store • Schema Evolution • ACID • Time travel • 减少读写放大 Data Transfer Speedup • Parquet • Arrow • Pipe、Domain Socket、Share Memory
12 .离线训练2.0 (架构): PS on YARN 全伴生训练 背景: 性能: • 服务化 PS总量限制、隔离性问题 • Numa bind、Decentralize、skip high load • PS Service -> PS Application -> 伴生 PS • 反亲和、性能测试、Blacklist 功能: 收益: • Service Discovery • 隔离性 • Batch/Gang • 资源平衡 • Smart Resource • 稳定性
13 .离线训练3.0 问题与挑战: • 模型调研对数据预处理诉求,Hudi 数据源 • 多训练数据流编排:Layerwise Training 训练1.0 训练2.0 训练3.0 • 潮汐资源利用 • Kubernetes 资源利用 数据预计算 计算 多角色 弹性资源 Primus Flow Multi-Stream 解决方案: 数据 InstancePB、 4mc、 Kafka Feature Store Traning • 伴生数据预处理 Primus Flow • 多数据混合编排 编排 YARN、PS服务 潮汐训练 化、 全伴生PS训练 • 潮汐训练 架构 常态混部 Kubernetes • Kubernetes
14 .离线训练3.0 (计算) : PrimusFlow 特征调研与训练一体化 • Spark 数据计算 • 算子 Op 配置化 • 训练数据管理、Failover 大数据能力丰富化 • Iceberg + Hudi • 多数据源 Join、Shuffle • Merge on Read
15 .离线训练3.0 (数据): Multi Stream 训练编排 Multi-Stream Orchestration • 多数据流训练 • Batch + Realtime • Coordinator • Api-Server Data Schduler Pipeline • 模式1:Batch & Batch • 模式2:Batch & Realtime + 触发器
16 .离线训练3.0 (架构) : 潮汐训练 问题与挑战 • 潮汐资源撤回问题 • PS SLA vs. Worker SLA 解决方案 • AM 稳定节点 + VM Snapshot • PS 高优节点 + Gang 性 + 打散 • Worker 低优 + Dynamic 全链路可中断训练 • Parameter 异步 Checkpoint • Task Save Point
17 .离线训练3.0 (架构) : On Kubernetes 方案: • Primus Native + Operator 架构 CRD + controller • Primus Job • Primus Role • Primus Data 效果: • Runtime 抽象与统一 • 多角色、弹性调度、多数据编排
18 .总结
19 .总结 计算编排 • 弹性可编程的训练角色 训练1.0 训练2.0 训练3.0 • 训练数据预计算 PrimusFlow 数据预计算 计算 多角色 弹性资源 数据编排 Primus Flow • MultiStream Training 多数据流混合 PB、4mc、 Multi-Stream 训练 数据 Feature Store Kafka Traning • Feature Store YARN 编排 潮汐训练 服务化PS 全伴生PS训练 资源调度 架构 混部 Kubernetes • 全伴生训练 • 常态混部 + 潮汐训练 • 多环境 YARN + Kubernetes
20 .shanjixi.inf@bytedance.com
21 .