免费POC, 零成本试错
FDE知识库

FDE知识库

学习大模型的前沿技术与行业落地应用


收藏

10倍参数增长、GPU推理落地:爱奇艺广告CVR模型的升级之路

发布日期:2026-08-06 12:12:31 浏览次数: 1708
作者:爱奇艺技术产品团队

微信搜一搜,关注“爱奇艺技术产品团队”

推荐语

爱奇艺广告CVR模型参数量10倍增长,突破CPU算力瓶颈,通过PyTorch+GPU推理实现精度与效率升级,赋能广告收入与用户体验。

核心内容:
1. 模型升级背景与算力瓶颈(参数量增长、原有链路极限)
2. PyTorch+GPU推理的技术优势(矩阵计算、生态成熟)
3. 框架迁移挑战及优化措施(差异点处理、AUC精度优化)

杨芳贤
53AI创始人/腾讯云(TVP)最具价值专家

01#

背景





过去几年,广告预估模型从“稀疏特征 + 轻量 MLP”的阶段,走向更大的 dense 网络、更复杂的特征交互和更长的用户行为序列。在广告预估中,CVR(转化率)模型的精度直接决定广告收入和用户体验。过去两年,我们的模型参数量增长了10倍,稠密计算量从5~8 MFLOPs跃升至60~70 MFLOPs,原有 TensorFlow + CPU 链路已逼近算力和成本极限,模型迭代空间出现瓶颈。


从计算特点看,这类复杂 dense 模型更适合 PyTorch + GPU。其优势体现在:

  • 矩阵计算优势:模型参数矩阵越来越大、序列越来越长、网络越来越深,核心计算会更多落到矩阵乘、batch matmul、归一化和向量化规约等高并行算子上。GPU 在矩阵计算、混合精度和大 batch 推理上更有优势;

  • 生态成熟:PyTorch 则提供了更贴近算法研发的动态图体验,以及成熟的 CUDA 算子、AMP/BF16、attention module、算子融合和模型导出生态,可以让复杂结构从实验到上线的链路更短。


行业和开源生态也在向同一方向演进。广告算法和基础架构 Jarvis 团队合作进行了本次框架升级。


02#

升级目标





本次升级的目标不是简单完成框架替换,而是让广告预估模型重新获得可持续迭代空间。我们选定 TorchRec [1] 作为迁移框架,构建 GPU 在线推理链路,让更大的 dense 网络、更复杂的特征交互和更长的用户行为序列赋能广告业务。


03#

挑战与解决方案





3.1 模型框架迁移与效果对齐

TorchRec 和 Tensorflow 框架在训练模式、模型参数配置、默认值处理以及训练流水线的构造有较大差别,因此,我们需要在现有的 Tensorflow 模型代码的基础上进行适配型改造

差异点

TorchRec

Tensorflow

训练模式

分布式同步更新模式,梯度回传采用 all-reduce 进行通信,即每一个 step 都进行一次全节点梯度更新。

分布式异步更新模式,sparse 参数每 N 步向 PS 节点推送、拉取最新参数,N 步之内仅在自己的 worker 节点进行参数更新。

参数配置

dense 参数和 sparse 参数需要更精细化控制参数。

沿用线上已有经验参数,无需刻意调参。

默认值处理

部分 api 默认值处理与 Tensorflow 不同,需要严格比对,包括特征服务、引擎等。

效率优化

为了提升 GPU 利用率,需要手动优化训练流水线,隐藏 IO 开销。

Tensorflow Estimator 提供优化后的数据读取 api,满足 CPU 计算需求。


建设初期,TorchRec 模型与线上 Tensorflow 模型有接近 1pp 的 AUC 差异。借助 AI 工具和TorchRec 源代码,定位多个因素并进行关键优化:


  1. 模型参数初始化:例如,稠密层权重采用与 TensorFlow 一致的 Glorot 均匀初始化;稀疏 Embedding 采用 uniform unit scaling 策略。

  2. 调用统一 api 时的默认值差别:例如,多值稀疏特征在 embedding 聚合时,TorchRec 的默认聚合参数 sum,需要修改为 mean 以对齐期望的聚合方式。

  3. TorchRec 损失函数与优化器参数设计:鉴于PyTorch 分布式框架的梯度平均池化的同步更新模式,损失函数在 batch 维度调整为需使用 mean 方法聚合。此外,模型还对稀疏参数与稠密参数的优化器做了拆分。使用更加稳定、学习率设置更低的 AdamW 优化器,并且通过基准学习率缩放,补偿 global batch 的扩大导致的优化步长差异。

  4. GPU 初始化设置:Tensorflow Estimator 采用了 master 节点初始化参数,worker 节点加载参数的方案;PyTorch 分布式框架每个 worker 节点独立初始化参数,故需要人工设定配置,保证初始化参数的一致性。


至此,TorchRec 模型离线 AUC 效果成功打平线上,消除框架间的效果差异,为后续稠密模型 scaling up 升级奠定基础。

3.2 稠密参数建模

打平效果后,我们开始对模型本身做升级——这就是 scaling up 的核心。推全的转化率预估模型自上而下分为三层:特征输入层、特征交互层与多任务预测层。交互层借鉴 HyFormer [2] 提出的 Query Decoding 与 Query Boosting 思路,将长序列行为与非序列异质特征纳入同一骨干网络;预测层采用 MMoE 的多任务专家结构。

图 1 给出 CVR 模型整体架构,包括数据流与模块划分,便于对照下文各小节阅读。


3.2.1 特征输入层


特征输入上, 分为两类:

  • 序列特征: 用户历史交互序列 S=[s1,s2,…,sT],每个交互行为由 item ID、action type、timestamp、side info 经过 embedding 层后 concat 来表示。

  • 非序列特征: 包含用户特征、Item 特征和上下文特征, 并将这些特征各自经过Embedding后再concat


序列侧由三组用户行为组成:实时点击、点击空间与离线转化序列。组内多列拼接后再经小型网络映射到统一隐空间。为降低查表开销,三组序列共用底层 ID 嵌入表,一次查表即可取出全部子特征,再按组组装为定长序列表示。

此外,由于差异化场景下样本分布的显著差异,故训练时采用 EPNet 进行多场景建模,最终输出一个多域感知的非序列 embedding。

3.2.2 特征token化

不同于 RankMixer[3],我们对于非序列 token 的 tokenization 方法如下:

这种将 embedding 空间划分为多个头的方式可以保持表示多样性,使模型能够在不引入过度结构复杂性的情况下捕获异构特征语义。这样得到的X=[x1,x2,…,xN]将作为接下来的非序列 token 与序列特征进行交互。

三条行为序列则各自经过 SwiGLU 网络映射至同一隐式空间,使不同来源、不同维度的序列可在同一注意力语义下交互。

3.2.3 特征交互层

图 2 - Query Decoding 模块结构

为了兼顾线上推理的算力约束与复杂的特征交叉需求,参考Hyformer [2],我们将特征交互层拆解为 Query Decoding 与 Query Boosting两个阶段,数据流清晰可控。

并行输入准备:对齐两类特征的语义空间。交互层首先需要将异构的输入拉齐到同一维度。对于非序列特征(用户、Item、上下文),我们并未采用简单的向量拼接,而是将其 Embedding 在隐空间上切分为 N 个独立 Head。这种多头化的 Tokenization 方式,能以极低的额外参数量保留特征的语义多样性,让不同 Head 在后续交互中自动分化出差异化的信息角色(如部分侧重场景环境,部分侧重长期兴趣)。

与此同时,三条用户行为序列(实时点击、点击空间与离线转化)各自独立经过 SwiGLU 网络映射至上述同一隐空间。这里选用 SwiGLU 而非自注意力,是考虑到广告序列的相邻事件依赖较弱,而 SwiGLU 以线性复杂度完成逐位置变换,在长序列场景下远比自注意力的平方复杂度更适合线上预算。

Query Decoding:以非序列为“问句”,检索序列信息。该模块本质上是为每个非序列 Token 提供“向历史行为提问”的能力,可类比 Transformer 解码器的交叉注意力层:

  • Query(查询)的构造:针对每一组序列,我们将 N 个非序列 Token 与该序列的均匀池化向量拼接,送入一层 FFN 生成 1 个全局 Query Token。三条序列的 FFN 参数相互独立,以保留点击、空间、转化三类行为间的天然差异性,最终共生成 S=3 个 Query。

  • Key/Value(键值)的供给:直接由上述经 SwiGLU 编码后的序列隐状态担任。


随后,3 个 Query 与序列的 K/V 执行交叉注意力计算。在此过程中,我们特别调整了注意力温度系数,对点积结果进行缩放以防止 Softmax 退化为 One-hot 极值。这保证了注意力权重的“有效秩”维持在高位——通俗来说,就是让每个 Query 都能平滑地从多步历史行为中吸收信息,而非过早锁定在极少数行为上,从而提升训练的稳定性。

Query Boosting:全量 Token 的深度融合与语义校准。交叉注意力之后,我们并未直接输出,而是将上一步得到的 3 个序列解码 Token 与原始 N 个非序列 Token 合并,共计 (N+3) 个 Token 一同送入 Token Mixer 模块。借鉴 TokenMixer-Large [4] 的思路,该模块执行“解构(Split)→ 融合(Mixing)→ 重构(Reverting)”三步:

  • Mixing 阶段让所有 Token 两两充分交互,打破非序列与序列的边界,实现全局信息融合;

  • Reverting 阶段则将混合后的表示映射回与原 Token 语义对齐的空间,确保后续残差连接时特征不发生语义错位。


灵活的 Scaling Up 潜力。该特征交互层支持像 Transformer Decoder 一样堆叠多层。考虑到线上推理时延与机器成本的 ROI,当前推全版本仅使用 1 层。但离线实验表明,当我们将层数从 1 层加深至 2 层时,离线 AUC 可获得超过千分之一的稳定提升——这为我们后续在算力充裕时继续纵向加深网络、充分释放 GPU 红利留下了明确的迭代空间。

3.2.4 预测层

预测层使用PLE+MLP预估头的结构,分别预估不同场景的pCVR值。其中,PLE由3个为单层全连接层的专家网络组成,预估头则由两层带非线性激活函数的全连接层组成。

在具体推全方案中,我们采用以下核心超参配置:Token 隐层维度 token_dim=128,特征交互层堆叠 1 层,非序列 Token 数量 N=13,序列解码 Token 数量 S=3,单条用户行为序列长度 T=50。该配置下的离线 AUC 相对基线模型提升 0.4 个百分点(pp)。

在此基础上,我们已规划明确的 Scaling Up 路线:后续算力继续扩充后,将沿“更宽的 Token 隐层维度、更深的特征交互模块堆叠、更复杂的序列 Token 建模”三个方向并行推进,持续挖掘模型在 GPU 算力下的性能上限。

3.3 模型导出

TensorFlow 生态提供了成熟的 SavedModel 导出与 Serving 方案,而 PyTorch/TorchRec 模型的导出则面临更多挑战,难点主要来自稀疏/非定长特征中的 offset(偏移量)、序列长度等动态维度信息。训练时,这些信息通常以 Python 原生数据结构(如 list、dict)参与计算图构建,在 Python 环境中运行一切正常,但导出后容易被固化为计算图中的 int/string 常量。一旦线上请求的 batch size、特征组成或序列长度发生变化,这些固化常量便可能与真实输入不一致,轻则导致推理结果错误,重则使导出产物体积膨胀、版本更迭困难。

为解决这一问题,我们将训练链路与推理链路解耦,在推理链路中提前将前向计算逻辑固化为静态计算图。具体做法是:将模型版本间保持固定的信息——如 Embedding 权重、特征到 Embedding 表的映射关系、Pooling 方式等——作为模型配置随图一同保存;而将每次请求均可能变化的 meta 信息(如序列长度、特征偏移量、样本数量等)显式定义为 Tensor 输入,由原生算子在运行时动态计算。如此一来,导出的计算图不再依赖 Python 对象或导出时的固定 shape 样例,从根本上保证了线上推理的鲁棒性与正确性。

3.4 推理性能优化

在模型的初版 GPU 推理链路中,我们保留了较多原始 PyTorch 执行路径,压测结果显示,单位资源下的吞吐量与时延收益均低于预期。随后,我们对推理过程进行了详细的性能剖析(Profiling),识别出 CPU/GPU 数据搬运、稀疏参数查表、变长序列处理、稠密网络计算以及请求合并等关键环节存在明显瓶颈,并逐一进行了针对性优化。

3.4.1 数据搬运 — 批量拷贝与 GPU Buffer 复用


线上请求进入服务时,大量特征最初驻留在 CPU 内存中。若对每个输入单独执行拷贝,或在 CPU 与 GPU 之间反复进行 reshape、concat 及用户特征展开等操作,数据搬运本身便会成为新的性能瓶颈。我们的优化思路是:在 CPU 侧完成批量的 concat 操作,统一搬运至 GPU 后再进行展开处理,同时尽可能复用已分配的 GPU 显存缓冲区(buffer),从而显著减少冗余拷贝与临时张量的产生。

3.4.2 Sparse 查表 — 合并小算子,减少 Kernel Launch 开销

广告预估模型通常涉及大量 Embedding Lookup、Pooling、序列补齐以及稀疏张量转稠密张量等操作。若这些操作逐个独立执行,将产生大量细碎的小 Kernel 和中间张量,导致 GPU 计算资源难以充分发挥。我们的优化方案是:将多组 Embedding 查表、User/Item 特征对齐、变长序列处理等逻辑合并至更少的 GPU 算子中,从而显著减少 Kernel Launch 次数与中间结果的写回开销,让稀疏侧的计算模式更贴近线上推理的真实数据布局(如按需访问、减少冗余补齐),进一步提升执行效率。

3.4.3 Dense 计算 —  TensorRT 图优化与 BF16 推理

复杂dense网络的主要计算集中在矩阵乘、归一化、激活函数和 attention/sequence block 上,这部分适合交给 TensorRT 做图优化、算子融合和 kernel 选择。在线上可接受的精度范围内,我们引入 BF16 推理,降低显存带宽和计算开销;同时通过动态 profile 覆盖不同的 batchsize 和序列长度,支持模型在各种输入 shape 下高效运行。

3.4.4 Kernel 调度 — CUDA Graph 捕获与重放

TensorRT Engine 虽然已经大幅优化了稠密计算部分的效率,TensorRT Engine 虽然已经大幅优化了稠密计算部分的效率,但推理过程中的输入输出张量绑定、显存分配与释放、执行上下文切换以及 CUDA Kernel 的逐个发起(Launch),仍会带来可观的调度开销和时延抖动。为此,我们按 batch bucket 复用执行上下文和显存 buffer,并用 CUDA Graph 将稳定的 kernel launch 序列捕获下来,在后续请求中直接重放,减少 CPU 侧逐个发起 kernel 的调度成本。最终的目标是让 GPU 的算力尽可能多地用在模型前向计算本身,而非消耗在运行时编排上。

3.4.5 请求合并 — Triton Server 的 User/Item 混合批处理

为了提升 GPU 利用率,我们会将多个线上请求聚合成一个批次(Batch)后再送入 GPU 计算。然而,在线广告请求与标准的深度学习推理请求存在一个关键差异:为节约网络带宽和减少计算图中的冗余操作,每个广告请求通常仅包含 一个 User 的特征 与 多个候选 Item 的特征,即 User 侧与 Item 侧在数量上天然不对齐。标准推理框架原生不支持这种 “User Batch + Item Batch” 的混合语义,无法直接合并请求。

为此,我们在 Triton Server 推理服务层补齐了这部分能力:服务能够区分用户侧特征与物品侧特征,分别按照各自的维度逻辑进行拼接,同时通过请求级别的标识符保留 User 与 Item 的一对多关联关系。在计算图中,我们采用“尽可能延迟(Lazy)”的策略,将 User 特征的复制(Repeat)操作尽量后置,直至与 Item 特征拼接的前一刻才执行。这样做既保证了批量推理的吞吐优势,又最大程度减少了中间张量的显存占用与计算冗余。

3.4.6 调优自动化 — 大模型辅助的性能调优 Workflow

在算子开发过程中,我们采用了基于大模型实现测试/规格驱动开发(TDD/SDD),提高代码的可维护性,大幅提升开发速度。并实现了 Develop/Debug/Test/Profiling/Monitor Agent 协同 workflow,自动定位推理瓶颈并持续优化,实现性能调优自动化工作流,人工调优耗时减少 50%,满足模型推理高吞吐、低延迟要求。


04#

成果




4.1 业务指标
  • CVR 模型:收入+3.42%,RPM+2.81%,点击数+1.91%,转化数 +7.22%,深层收入 +2.28%。

  • DCVR 模型:收入+1.60%,RPM +1.21%,点击数+1.01%,转化数 +0.25%,深层收入 +2.37%。

4.2 推理效率
  • 机器成本减少15%,超时率从0.15% 降至0.03%。


05#

未来展望




本次框架升级为广告预估模型的长期演进打开了新的算力空间。我们将在模型结构、推理优化和平台化三个方向持续深耕:

  • 模型结构:GPU 框架释放出的算力红利,将直接用于扩大稠密(Dense)参数规模,引入更强的序列建模能力(如更长时序依赖、多兴趣表征)、更复杂的注意力结构(如轻量级多头自注意力)以及更深层次的多任务学习体系。未来,CVR、DCVR 等核心模型可以围绕更精细的用户行为理解、更细粒度的转化目标拆解和更充分的特征交叉结构持续演进。

  • GPU 推理优化:持续挖掘 GPU 算力潜力,重点推进算子融合(进一步减少 Kernel Launch 次数)、混合精度推理(如 INT8 量化探索)、动态批次处理(Dynamic Batching)、Embedding Cache(高频特征的显存驻留)以及多模型混部与资源弹性调度等方向,在保障时延的前提下持续提升单卡吞吐能力。

  • 平台化:将本次迁移过程中积累的模型结构规范、导出工具链、性能调优方法论和 Triton 服务配置模板,沉淀为一套可复用的 TorchRec GPU 训推一体化框架。后续新模型接入时,仅需在框架内配置模型结构即可完成训练、导出与上线,接入工作从“系统工程”简化为“配置化接入”,大幅提高算法的迭代效率。


53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询

扫码登录
登录即表示您同意《53AI网站服务协议》
服务协议

欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。

在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。

一、 定义

本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。

会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。

知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。

二、 账号注册与登录

登录方式:本网站支持以下登录方式,您可根据实际情况选择:

微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。

手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。

账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。

实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。

未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。

三、 服务内容与规范

知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。

服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。

禁止行为:您在使用服务时不得实施以下行为:

利用技术手段批量爬取、下载、转存知识库内容;

将知识库内容用于商业目的或未经授权地向第三方传播;

干扰本网站正常运行或侵犯其他用户合法权益;

发布违法违规信息或从事违反公序良俗的活动。

四、 知识产权声明

权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。

有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。

侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。

五、 个人信息保护

我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。

您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。

您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。

六、 免责声明

内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。

不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。

第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。

七、 违约责任

如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。

如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。

八、 法律适用与争议解决

本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。

因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。

九、 其他

本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。

本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。

我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。


已查阅