本文作者李健针对京东广告的业务场景,分享了在 GPU 吞吐和低延时优化方面的实践工作。
李健:17 年加入京东广告研发部,在算法架构方向深耕 7 年,先后参与了两代京东广告模型系统的架构建设。主导了大规模稀疏模型训练 &推理等能力建设,助力多项算法创新落地,并多次获得京东零售级别奖项。目前作为广告算法架构方向架构师,带领团队建设新一代广告异构算法架构体系。
01 京东广告场景介绍
京东广告业务场景包括推荐首页的信息流和搜索场景,主要面向 C 端用户,面临百万 QPS 高并发访问压力。为了保障广告展现效率与用户体验,广告系统需要毫秒级响应能力。在算法建模方面,推荐领域模型由浅层大规模离散 DNN 发展到以 Transformer 为主的深层神经网络,参数从百 GB 扩展到 TB 级,算力需求增长了数十倍。目前我们使用 TensorFlow 进行建模训练与推理,其算子级建模和静态图建模方式保证了离在线一致性和算法实验的快速迭代。
面对日益增长的复杂业务需求,我们采用 GPU 专用计算设备提升系统算力,但具体实践中面临许多挑战:
-
CTR 模型的高稀疏性特点容易导致 I/O 瓶颈。
-
超大规模稀疏参数模型容易超出显存承载上限。
-
推荐场景的特征计算占用大量 CPU 资源,导致 CPU 与 GPU 资源调度争抢,使得整体利用率释放不充分。
接下来将分享我们在训练和推理场景中是如何解决这些问题的。
02 京东广告训练场景 GPU 优化实践
首先介绍京东广告训练场景 GPU 优化实践。这个场景主要以吞吐为第一优化目标,在这个背景下,GPU 优化面临三个主要挑战:
1. 存储挑战
在推荐领域,模型主要以大规模稀疏参数为主,规模通常会达到千亿级别,存储量可达 TB 级别。即使是 H800 这种高规格 GPU,其显卡显存上限也只有 80G,并且这种 HBM 类型的存储资源价格昂贵。完全将大规模稀疏参数承载在 GPU 上,是一个性价比很低的方案。为解决这个问题,我们采用了多机多卡的训练模式,并外挂了自研的 CPU 稀疏参数服务器,利用价格相对较低且易扩展的 CPU-DRAM 内存来扩展模型的承载能力。
2. 计算挑战
在推荐领域,用户行为特征解析、用户与广告物料的特征交叉等占有很大比重,且计算同样占用大量资源。但由于这些计算重业务逻辑,目前只能由 CPU 进行推理,导致 CPU 与 GPU 资源争抢,算力分配不均。为解决这个问题,我们研发了一种 CPU 与 GPU 异构混合部署的分布式流水线并行训练架