美团搜索:推荐:⼴告场景训练引擎实践

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 美团搜索/推荐/广告场景训练引擎实践 ⻩军 美团机器学习平台 2023年11月
2. 美团深度学习推荐系统模型训练挑战 • 大规模稀疏参数 • 个数从几百—>几千,增⻓了近10倍 • 总参数量从几亿—>百亿,增⻓了10~20倍 • 如何更加灵活、高效的存储大规模稀疏参数? • 海量的样本 • 训练样本从到百亿—>千亿,增⻓了近10倍 • 如何保障业务能在1天内完成训练? • 模型复杂度 • 越来越复杂,模型单步计算时间增⻓10倍以上 • 如何在复杂度持续提升的情况下,仍然能保障系统的性能? • 大规模集群部署 • 大规模集群运行时,会遇到慢机和宕机 • 如何自动处理异常,保障系统的稳定运行? 2
3. 目录 • CPU训练框架实践 • GPU训练框架实践 • 大规模集群部署 • 未来展望 3
4. TensorFlow PS分布式训练架构 分布式训练流程 开源TensorFlow扩展能力[1] 对于大流量业务,一次训练实验,从几个小时增⻓到了几天 [1] TensorFlow 1.x版本 4
5. Profling工具链 • 自动化实验框架 • 问题分析工具链 • TF原生是单步采样,不支持全局监控 • 抽象实验过程(数据、模型、参数) • TF原生指标太粗,未展示通信算子全链路耗时 • 自动采集各类监控指标 • 全链路细粒度埋点,与公司原CAT打通 • 自动化、多轮次实验并生成报告 工欲善其事,必先利其器 5
6. 系统分析1 总参数增⻓10~20X 稀疏特征个数增加10X 单次请求压力变大 PS需要更多内存 需要扩更多PS 通讯压力 PS并发压力 训练样本扩大10X 通过扩展Worker加速 模型计算增加10X 总访问请求压力 单位算力吞吐降低 通讯压力 PS并发压力 不优化要扩更多Worker 核心负载: 1.通信压力 2.PS并发压力 横向扩展PS堆资源,看来起可以解决问题? 6
7. 系统分析2 2.5 2.375 2.25 2.125 训练流程关键点: 1.worker单步训练需要和所有PS通讯同步完成 2 10 20 30 40 50 PS数量 扩展PS到一定数量单步训练时间增加 2.worker每一步训练顺序执行 3.整个训练过程要执行上百万、上千万步 核心原因:链路延迟超过加PS算力并发收益 核心挑战:有限PS实例下的分布式计算优化 7
8. 高性能弹性稀疏参数 大规模稀疏参数使用tf variable弊端: 1.参数大小需要提前设定,带来巨大的空间浪费 2.不支持动态伸缩,无法支持Online Learning 我们的方案: 1.基于HashTable实现了自动弹性伸缩参数,避免开辟冗余空间 2.支持自动分片,分布式存储,解决参数存储扩展性问题 3.API设计上保持与社区版本兼容,用户接入成本低 解决大规模稀疏参数高效存储问题 大规模稀疏参数的HashTable方案 8
9. PS架构的训练吞吐优化1 • PS负载均衡优化 • 所有稀疏参数和大的稠密参数自动、均匀的切分到每个PS上 • 解决了原生Adam优化器,β参数全局热点的问题(复制+冗余计算) • 单实例PS并发优化 • 核心数据结构HashTable选用了高并发的tbb::concurrent_hash_map • 基于内存池化的方式优化HashTable的内存管理 Adam优化算法 HashTable内存优化 9
10. PS架构的训练吞吐优化2 • 通信优化 • 通信协议:使用更高效的通信协议rdma • 聚合通信:合并稀疏参数+对应的动量+对应低频过滤计数器的通信 • 计算和通信的重叠 • 在整个训练过程,通信和计算会相互等待,延迟时间占比48%(如下图) • 参数查询、参数训练、参数更新串行逻辑流水线化,但会影响算法精度 • 只处理影响小&通讯占大头的稀疏参数(95%+通讯),且控制并行步数、让算法精度控制在接受范围内 计算等待通讯时间 通讯等待计算时间 10
11. 整体优化效果 分布式扩展性从1百 worker->上千 worker 大规模训练同资源吞吐提升2倍以上 支持公司1年样本1天内完成训练 多层次、多⻆度深度定制的TensorFlow 11
12. 目录 • CPU训练框架实践 • GPU训练框架实践 • 大规模集群部署 • 未来展望 12
13. 为什么要做GPU训练? • 领域SOTA模型越来越复杂[1],业务模型单MatMal计算,3年耗时占比增⻓26% • 优化的TensorFlow CPU训练架构,CPU使用率已经90%以上,很难有压榨空间 • 大规模分布式异步训练,并发太大,可能会有损算法效果(和模型强相关),在学术界也属于难题 [1] In 2020 ACM/IEEE 47th Annual International Symposium on Computer Architecture (ISCA) 13
14. 为什么要做GPU训练-续? GPU核心数多90倍,访存带宽快10倍 经过三代产品迭代,多卡带宽增⻓9倍 多级存储体系(性能、容量、成本的权衡) 经过8年的迭代,网络带宽提升16倍 新硬件迭代带来的红利:1台GPU服务器可以支撑大多数业务日常算力需求 14
15. 系统演进策略 目标:原生TF接口上,支持TB级模型的分布式GPU训练架构,相比CPU性价比提升到2倍以上 系统演进策略:按照需求覆盖面,逐步交付,每代架构可演进 1.0架构:单机多卡100G模型 2.0架构:单机多卡TB模型 3.0架构:分布式TB模型 15
16. 系统分析 CPU分布式负载 系统关键负载 分布式CPU方案 算力 读取样本耗费大量的CPU 模型计算已经把当CPU打满 存储 大模型参数通常需要几TB存储 内存:几十TB 网络 ~1000Gbps CPU:几千核 ~1000Gbps GPU单节点负载 单机GPU方案 CPU:96核 GPU核:8 x 6192 CUDA Core GPU显存:8 x 80GB 内存:TB级 SSD:几十TB级 8 x 100Gbps 迁移新方案硬件面临问题 核心计算需要尽量都切换到GPU 上,否则GPU服务器的CPU会成 为瓶颈 单机GPU显存和内存无法承载大 模型参数 需要用好多网卡 核心挑战:基于硬件特性,打造软硬一体的架构 16
17. 1.0 整体架构 保持开源组件设计范式 核心模块相互解耦 数据模块:自研数据分发模块,支持NUMA亲和性,多网卡数据下载 计算模块:每张GPU卡启动一个TensorFlow训练进程执行训练 通信模块:每个节点启动一个Horovod进程来进行卡间通信 17
18. 1.0 系统流程 • 参数存储 • 大规模稀疏参数切分到多卡上 • 小的稀疏参数+稠密参数每张卡都存一份 • 不同特征流程 • 大规模稀疏参数:通过all2all同步ids,embedding values和梯度 • 小的稀疏参数:通过allgather同步梯度 • 稠密参数:通过allgather同步梯度 第一版:GPU的SM利用率只有10%~20% 相比CPU没有太大优势 18
19. 1.0 系统优化1 • 数据IO Pipeline • 样本拉取:NUMA亲和性 + 多网卡加速,数据分发进程和TF进程zerocopy传输数据 • 特征解析:通过SIMD指令集提升TFRecord解析速度(后升级到列存orc,大大减少这部分耗时) • MemcpyH2D流水线:基于tf prefetch实现了PipelineDataset,提前把Host数据(Pinned Memory)拷⻉到GPU显存 • 硬件调优:在网络传输优化方面,开启LRO(large-receive-offload)、TC Flower的硬件卸载、tx-nocache-copy等特性, 提升网络带宽17%。内存延迟和带宽优化方面,尝试了3种NPS配置,综合业务场景和NUMA特性,选择了NPS2,此外, 结合其他BIOS配置(例如APBDIS,P-state等),可以将内存延迟降低8%,内存带宽提升6%。 端到端训练吞吐提升40% 19
20. 1.0 系统优化2 • CPU的计算迁移到GPU • 耗时较⻓(计算密集型),传输数据量较大(访存密集型)的CPU算子,需要实现GPU版本算子 • 实现了最关键的稀疏参数的GPU计算(HashTable表操作相关,耗时占比40%以上),GPUHashTable的计算量并不大,核 心收益是GPU的访存带宽是内存的10倍 • GPU上的计算跑得更快 • 高频算子手工优化,获得更高性能(如:Unique、DynamicPartition、Gather等) • 普通算子编译优化(自动重写算子,提升计算和访存效率),获得较优性能 • 利用Tensor core硬件特性,使用半精度甚至INT8加速 不同特性tensor core的性能 利用好GPU高算力、高访存带宽优势 20
21. 1.0 系统优化3 进一步合并通信数据,减少通信次数,同时减少Kernel Launch次数、提升访存带宽 更亲和GPU的通信模式,训练吞吐提升85% 21
22. 2.0 整体架构 继续保持开源组件设计范式 复用了1.0架构的核心工作 用户接口与1.0架构保持一致 自研高性能异构参数服务器组件 1.基于外置独立进程,MQ做控制面、共享内存做数据交换的设计 2.支持内存、内存+SSD的混合存储模式 22
23. 2.0 关键演进 增加异构参数服务器执行链路后,增加了CPU和SSD的操作 4级流水线->7级流水线 23
24. 3.0 整体架构 支持多种存储模式的多机多卡 全显存模式:直接通过Horovod完成多卡之间的数据交换 异构存储模式:稀疏参数通过BoosterPS完成数据交换,稠密参数通过Horovod 24
25. 3.0 关键演进 direct all-to-all Hierarchical all-to-all 利用Horovod的分组通信,优化通信传输 25
26. 业务落地 • 系统完备性 • 支持了GPU训练的各种类型任务(包括:train/eval/predict) • 支持CPU和GPU训练出来的模型相互导入 • 支持了1~N卡的训练,同时针对1,2,4卡的任务还进行了专项优化 • 封装了代码模板,可以支持CPU和GPU任务,一行代码进行切换 • 训练效果 • CPU是异步训练,GPU是同步训练,且GPU训练batch size要大很多,模型需要重新调参 • 为了方便调参,把所有参数的聚合方式都修改成了统一(求平均) • 用Linear Scaling Rule的原则指导调整学习率 • 业务上线效果 • 目前已经在美团大规模上线,相比业务CPU训练,性价比提升到:2~6倍 • 2.0架构相比1.0架构,上线业务性能损耗在5%以内 • 3.0架构多机扩展性,上线业务近线性扩展到128卡 26
27. 目录 • CPU训练框架实践 • GPU训练框架实践 • 大规模集群部署 • 未来展望 27
28. 自动故障恢复1 • 任务自动异常诊断 • 自动采集各类子任务各阶段执行速度 • 根据内置策略判断那些任务异常 • 针对慢机策略 • 容忍范围内:动态分配数据处理任务 • 超过容忍范围:杀掉慢机上的任务,重新调度任务 动态数据分配流程 28
29. 自动故障恢复2 • 完备的恢复机制 • 自动重新组网,如果是PS异步训练支持worker实例级恢复 • 自动数据进度的checkpoint,数据和模型的checkpoint恢复一致性保障 细粒度任务恢复 完备的任务恢复(数据+模型) 29
30. 目录 • CPU训练框架实践 • GPU训练框架实践 • 大规模集群部署 • 未来展望 30
31. 未来展望 算法 框架 芯片 Machine Learning Systems Pathways? 31
32. Q&A
33. 招聘:机器学习基础架构工程师/专家 邮箱:huangjun03@meituan.com 更多技术干货 欢迎关注“美团技术团队”

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