稀疏场景高性能训练方案演变|京东广告算法架构体系最佳实践

近年来,推荐场域为提升模型的表达能力和计算能力,模型规模和计算复杂度大幅增加,同时,高规格硬件资源为模型迭代、算法优化带来了更大的机遇和挑战。为了应对模型规模和算力升级带来的存储、IO和计算挑战,京东零售广告技术团队基于新型硬件,充分利用硬件优势,提出新一代多机多卡全GPU计算全同步训练架构,参数通信基于GPU-RDMA硬件带来的高速带宽优势,采用集合通信方案,结合五级流水线并行训练模式,极大的提升了训练过程中数据通信交换效率。同时研发CPU-DRAM GPU-HBM二级参数服务器缓存训练机制,解决稀疏参数更新时带来的梯度过期问题,为稀疏大模型的落地应用提供了坚实的技术支撑。

一、前言

京东广告训练框架随着广告算法业务发展的特点也在快速迭代升级,回顾近几年大致经历了两次大版本的方案架构演变。第一阶段,随着2016年Tensorflow训练框架的开源,业界开始基于Tensorflow开源框架训练更复杂的模型。模型对特征规模和参数规模需求不断提升,大规模稀疏模型具有更强的表征能力,逐渐成为算法的主流趋势。但是Tensorflow在大规模稀疏参数的训练机制不完备,因此第一次最大能力升级是通过自研高性能参数服务器,支持超大规模TB级稀疏参数模型的建模能力以及基于此架构支持在线学习的能力。 第二阶段,随着用户行为序列建模、多模态建模、多目标等算法技术的发展,模型变得既宽且深,计算算力、通信性能和存储容量逐渐成为瓶颈。基于之前的方案虽然有可能通过扩大训练集群规模满足训练需求,但是在节点拓扑的复杂度、参数通信性能、集群稳定性和模型效果等多个方面都存在较大的问题。随着更先进的NVIDIA A100 等训练GPU硬件资源的出现,基于高性能GPU算力构建的新一代软硬深度结合的训练方案成为第二次架构演变的主要方向。接下来,本文将针对大规模稀疏场景,结合模型的发展趋势,详细介绍各阶段的训练方案。

二、持续演进的大规模稀疏场景训练方案

2.1 基于分布式参数服务器的TB级大规模稀疏场景训练方案

2.1.1 Tensorflow在大规模稀疏场景的局限性

随着业务规模和算法能力不断发展,训练样本规模扩展到百亿级,训练参数规模达到千亿级,为了提高模型训练效率和规模,业界通常采用数据并行和模型并行方式来进行分布式训练。由于Tensorflow采用静态Embedding机制来存储稀疏参数,限制了参数规模,对训练的效率和效果并不友好:

静态存储局限性:词表空间过小,hash冲突加剧;词表空间过大,浪费内存资源,难以支持大规模参数存储。

在线学习不支持:针对在线学习场景,无法淘汰不重要的特征,也无法单独释放该特征Embedding的内存,参数更新时效性成为瓶颈。

2.1.2 自研高性能参数服务器

为了解决静态Embedding的问题,我们通过自研动态Embedding的高性能参数服务器,将不同的Embedding映射到不同的内存空间,优化存储空间,支持大规模稀疏参数的高效存储,并考虑高并发读写场景,针对稀疏参数设计高性能二级检索方案,优化数据结构,减少并发读写冲突。

图1 动态Embedding参数服务器&训练架构

参数二级检索

▪一级参数分片,支撑分布式千亿甚至更大规模参数存储。

▪二级参数分桶,并行无锁读写,支撑数据并行模式下的高并发读写场景。

稀疏参数存储&训练

▪基于Map实现稀疏参数存储,支撑动态Embedding、增量导出等复杂功能。

▪稀疏参数延迟初始化,支撑特征准入&淘汰等复杂策略。

▪参数&优化器状态同构存储,支撑复杂优化算法(带一二阶动量)的高性能实现。

离&在线一体化设计

▪通用化服务接口&模型参数格式,一套核心框架服务离&在线场景,支持在线学习。

图2 动态Embedding高性能参数服务器实现设计

在2020年底广告实现了高性能参数服务器架构,2021年初在搜索广告场景构建了离在线一体实时在线学习闭环系统。性能方面,支持千亿参数规模,提升算法建模空间,对比TF原生PS训练性能提升25%,对比阿里DeepRec和腾讯TFRA,内存节省约15%至20%。效果方面,在搜索精排模型场景落地京东零售首个OnlineLearning架构,模型时效性从天级提高到分钟级。

2.2 基于高性能算力的全GPU训练方案

2.2.1 分布式参数服务器方案的局限性

为了精细刻画用户的行为,捕捉用户的兴趣变化,推荐系统模型进入到更深层次的序列化、多模态建模。推荐领域模型建模逐渐发展到以一定规模Transformer结构结合大规模Embedding为主,抽象结构则是中等规模稠密参数 + 大规模稀疏参数,对模型训练架构的存储、计算、IO等方面都提出了更高的要求。虽然可以通过更大的参数服务器规模 + 更大的数据并行规模来提升整体训练集群吞吐,但该方案存在一定局限性:

▪参数服务器规模仅能满足大规模Embedding稀疏模型,但是针对Transformer等稠密模型无法分片,会导致模型训练性能&效果显著下降;

▪训练节点规模急剧扩大到上百,导致通信拓扑复杂,训练稳定性下降,梯度过期问题加剧;

▪大量参数IO使得参数服务器与训练节点之间的参数传输成为通信性能瓶颈。

图3 分布式参数服务器存在的问题

随着Nvidia推出新一代NVIDIA A100 80GB SXM GPU服务器,伴随NvLink、IB网络等GPU-RDMA硬件加持,相较P40,在存储容量(显存640GB、内存1~2TB、SSD10+TB级别)、通信性能 (由PCIe总线提供的32GB/s升级到NVLink卡间互联的600GB/s的高速带宽,多机之间通过IB网络采用RDMA进行通信,通信带宽相比于TCP而言,从1G/s 提升到50G/s)以及计算能力(从12TFLOPS升级到156 TFLOPS) 都有质的突破。更高算力的硬件资源为模型迭代和优化带来了更大的机遇,同时也给训练架构设计带来了更大的挑战,基于高性能GPU算力构建的新一代软硬深度结合的训练方案成为第二次架构演变的主要方向。

2.2.2 基于高性能算力的全GPU训练方案

如何把分布式训练中上百个节点的复杂拓扑结构,融入到高算力GPU的一体化方案中,实现千亿甚至更大规模参数在GPU上的高性能计算,在业界是一个比较有挑战的问题,在新一代训练架构的落地实践中我们主要面临三个核心挑战:

存储挑战:不同于传统NLP、CV几十G模型规模,推荐领域大规模稀疏模型通常在几百G以上,远超单显卡80G显存上限,需要设计一种新的参数存储和计算策略;

IO挑战:大规模稀疏参数、稠密参数的拉取与计算为训练集群带来极高的IO需求,需要设计一种新的交互式策略,实现卡与卡间,机与机间参数高性能通信;

算力挑战:CPU的算力性能限制了推荐模型的规模与计算复杂度,需要设计一种新的训练并行策略,实现CPU与GPU的算力均衡。

结合对业界方案的调研以及广告推荐算法的业务场景特点,我们设计了基于高性能算力的全GPU训练方案:基于GPU-HBM+CPU-DRAM两级交叉缓存来实现全参数的GPU存储计算,结合GPU-RDMA集合通信技术突破大规模参数训练的通信瓶颈,同时构建CPU&GPU异构的分布式流水线并行训练框架,实现了CPU和GPU计算算力的最大化协同。

图4 基于高性能算力的全GPU训练方案

基于GPU-HBM和CPU-DRAM的两级交叉参数服务器,实现稀疏参数的跨域存储。GPU作为一级缓存有效利用GPU高带宽、高算力的优势,极大提升训练吞吐,CPU作为二级缓存有效利用CPU内存的高容量、易扩展的优势,提升参数的规模上限。该方案可以进一步扩展SSD固态硬盘,形成HBM-DRAM-SSD的三级参数服务器方案,支撑更大规模万亿参数级别的高性能训练。

图5 GPU-HBM+CPU-DRAM 两级交叉存储方案

基于GPU-RDMA集合通信的全参数同步训练范式。在参数通信方式上:参数的拉取方式相比于传统的分布式参数服务器架构,由CPU-to-CPU的TCP通信升级为GPU-to-GPU的RDMA通信,带宽吞吐量实现了数量级的显著提升(1GB/s->600GB/s)。在参数更新方面:通过AllReduce、AllToAll等集合通信技术,实现全参数同步训练范式,保证模型效果。基于上述能力,框架一体化设计实现了参数交互&参数训练的最佳配速。

CPU&GPU异构的分布式流水线并行训练框架,将模型按CPU密集型子图(重逻辑)与GPU密集型子图(重计算)进行分图,部署于CPU&GPU异构集群进行分布式分图训练,在发挥各自硬件算力优势的同时,解决CPU与GPU算力不匹配的问题,达到算力均衡。同时构建多级流水线并行训练模式,使训练集群整体IO、计算吞吐最大化

图6 CPU&GPU异构的分布式流水线并行训练框架

多机多卡算力水平扩展:基于上述核心能力,借助 IB 网络,进一步实现单机多卡到多机多卡的算力水平扩展,训练加速比达到1.85+,做到业界领先。

三、总结与展望

综上,新一代基于高性能算力的全GPU训练方案,在广告多个业务线进行了落地实践:推荐首页CTR模型规模从30G扩展到130G,资源0增长的情况下,训练性能提升55%,并通过技术迁移仅一个月时间将技术方案复用至商详、中长尾信息流核心位置,实现模型规模百G的突破,算法迭代效率提升400%,助力推荐、搜索等核心业务线取得显著的效果收益。

算法在不断的迭代发展,硬件也在不断的推陈出新,广告训练框架也在持续的演变,我们正在规划设计下一代算法架构体系,其最显著的特点就是算法、算力、架构的深度融合以及在线、离线一体化的设计方案。算法架构体系建设是一个充满挑战的新的技术领域,需要不断探索、学习和创新。我们欢迎对此感兴趣的同事联系我们一起加入讨论,共同探索解决方案,汇集智慧,共同成长。让我们携手应对挑战,共同开拓这一前沿领域,为技术创新和团队发展贡献我们的热情与智慧。

作者:京东零售-广告研发部-算法应用组

来源:京东零售技术 转载请注明来源

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/659511.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决WindowServer2022关于EDGE浏览器识自签证书问题

1、证书颁发机构服务打开MMC控制台 添加证书、证书模板 2、复制证书模板

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Gauge组件

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Gauge组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Gauge组件 数据量规图表组件,用于将数据展示为环形图表。 子组件 无…

Unity_Visual Effect Graph

Unity_Visual Effect Graph Unity可视化特效渲染虽不及Unreal Engine,然也还是吊打一众其他引擎的,粗浅整理一波吧,需要深入研究的点实在是太多了。 按照常规包管理方式安装Visual Effect Graph插件: 安装之后,示例文件夹中自带资源,拖入场景即可: 场景只是资源的显…

SOLIDWORKS Simulation 2024增强新功能

SOLIDWORKS 2024 新功能前瞻| SOLIDWORKS Simulation 功能增强 • 性能增强功能 • 壳体的接合交互 • 网格性能 • 欠约束实体检测 • 增强型轴承接头 • 收敛检查图解 • 去耦合混合自由体模式 • 复制算例时排除网格和结果 • 新增在网格化后及分析完成后自动保存模…

C++语法学习

一、字符串 1.字符与整数的联系--ASCII表 0~9 :48~57 A~Z:65~90 a~z:97~122 字符与数字之间转换: 1.1字符转数字&#xff1a; 字符转数字&#xff1a; char c A;cout << c-A << endl; //输出0cout << (int)c << endl; //输出…

Vue学习笔记14 --自定义hook函数/toRef/provide/inject等

9.自定义hook函数 什么是hook&#xff1f;—— 本质是一个函数&#xff0c;把setup函数中使用的Composition API进行了封装。 类似于vue2.x中的mixin。 自定义hook的优势: 复用代码, 让setup中的逻辑更清楚易懂。 10.toRef 作用&#xff1a;创建一个 ref 对象&#xff0c;其…

软件压力测试:探究其目的与重要性

随着软件应用在各行各业中的广泛应用&#xff0c;确保软件在高负载和极端条件下的稳定性变得至关重要。软件压力测试是一种验证系统在不同负载条件下的性能和稳定性的方法。本文将介绍软件压力测试的目的以及为什么它对软件开发和部署过程至关重要。 验证系统性能的极限&#x…

防火墙双向NAT配置

目录 拓扑需求 配置配置服务器映射配置NAT策略配置访问外网的NAT 配置安全策略 测试 拓扑 需求 分公司内部的客户端可以通过公网地址访问到内部的服务器 主要配置区域 配置 测试之前记得开启服务器的服务 配置服务器映射 配置NAT策略 源地址和目的地址同时转换 配置访问…

C++文件操作(2)

文件操作&#xff08;2&#xff09; 1.二进制模式读取文本文件2.使用二进制读写其他类型内容3.fstream类4.文件的随机存取文件指针的获取文件指针的移动 1.二进制模式读取文本文件 用二进制方式打开文本存储的文件时&#xff0c;也可以读取其中的内容&#xff0c;因为文本文件…

【Oracle云】OCI DevOps Services 构建自动化流水线 (2) - 创建 Build Pipeline CI 流水线

在软件开发的生命周期中&#xff0c;持续集成&#xff08;Continuous Integration, CI&#xff09;是确保团队协作、代码质量和交付效率的关键环节。 OCI DevOps Services 作为 Oracle 云原生 CI/CD 服务&#xff0c;为开发者提供了标准的CI/CD平台&#xff0c;支持构建自动化的…

Vue学习总结

声明&#xff1a;本文来源于黑马程序员PDF讲义 双向绑定&#xff1a; 修改表单项标签&#xff0c;发现vue对象data中的数据也发生了变化 双向绑定的作用&#xff1a;可以获取表单的数据的值&#xff0c;然后提交给服务器 事件绑定 v-on: 用来给html标签绑定事件的。需要注意…

Zookeeper分布式队列实战

目录 Zookeeper分布式队列 普通方式实现 设计思路 具体实现 使用Curator实现 具体实现 注意事项 Zookeeper分布式队列 常见的消息队列有:RabbitMQ&#xff0c;RocketMQ&#xff0c;Kafka等。Zookeeper作为一个分布式的小文件管理系统&#xff0c;同样能实现简单的队列功…

从零学习Linux操作系统 第二十三部分 系统中火墙的管理及优化

1 、实验环境设定 第一台主机需要两个网卡 另一台主机一个网卡桥接到VMnet0上 第一台主机保证能够和windows保持连接 设定第一块儿网卡能够与Windows连接 设定第二台主机能够与第一台主机连接 二、火墙中的基本名词及知识 火墙就相当于是一个表格&#xff0c;这个表格里写…

svn 安装路径

SVN客户端安装&#xff08;超详细&#xff09; 一、SVN客户端安装 1、下载安装包地址&#xff1a;https://tortoisesvn.net/downloads.html 此安装包是英文版的&#xff0c;还可以下载一个语言包&#xff0c;在同界面的下方 一直点击下一步&#xff0c;直到弹出选择红框 然…

3. Mybatis的XML配置文件(重点)

目录 1 Mybatis的XML配置文件 1.1 XML配置文件规范 1.2 XML配置文件实现 1.3 MybatisX的使用 2. Mybatis动态SQL 2.1 什么是动态SQL 2.2 动态SQL-if 2.2.1 条件查询 2.2.2更新 2.3 动态SQL-foreach 2.4 动态SQL-sql&include 1.mybatis入门 2.mybatis基本操作 1…

AI智能分析+明厨亮灶智慧管理平台助力“舌尖上的安全”

春节是中国最重要的传统节日之一&#xff0c;在春节期间&#xff0c;人们聚餐需求激增&#xff0c;餐饮业也迎来了高峰期。在这个时期&#xff0c;餐饮企业需要更加注重食品安全和卫生质量&#xff0c;以保证消费者的健康和权益&#xff0c;明厨亮灶智慧管理成为了餐饮业中备受…

基于单片机温度控制系统的研究

摘 要&#xff1a;笔者基于单片机的温度控制系统&#xff0c;从单片机选择、传感器选择、系统框架设计等方面概述了单片机的温度控制系统内涵&#xff0c;分析了其运行原理&#xff0c;列举了单片机温度控制系统设计的实操方法&#xff0c;从硬件系统、软件系统、温度检测方法…

springboot144基于mvc的高校办公室行政事务管理系统设计与实现

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

二叉搜索树操作题目:删除二叉搜索树中的结点

文章目录 题目标题和出处难度题目描述要求示例数据范围进阶 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;删除二叉搜索树中的结点 出处&#xff1a;450. 删除二叉搜索树中的结点 难度 5 级 题目描述 要求 给定二叉…

Ubuntu Linux 下安装和卸载cmake 3.28.2版本

一、安装cmake 1.首先&#xff0c;先从cmake官网下载cmake-3.28.2-linux-x86_64.tar.gz 2.用FinalShell 等文件上传工具&#xff0c;将这个压缩包上传到 虚拟机的某个路径去&#xff08;自选&#xff09; 3. cd /usr/local/bin/&#xff0c;然后创建cmake文件夹&#xff0c;…