来源:互联网 更新时间:2026-07-17 13:57
淘宝闪购爆品团排序模型近期完成了一次关键升级,从传统的DLRM架构全面切换到Token-Based的RankMixer架构,实现了模型规模与效果的双重突破。这次升级的核心不是简单增加一个局部模块,而是对模型主干进行了系统性的重构,并围绕新架构对负采样、多任务学习、序列建模等关键环节进行了深入的消融实验。
经过多期迭代,模型规模从85M扩展到107M,再到243M,并在爆品团频道页取得了稳定的线上收益。以下是本次升级的核心结论与详细实践。
近年来,NLP领域通过Scaling Law确立了“大规模参数 + 稠密计算架构”的技术路线。相比之下,搜推广排序模型中仍有不少系统沿用DLRM类范式:稀疏特征、人工交叉、多个异构模块层层叠加。
爆品团线上旧排序模型也是类似路径。Embedding和Sequence层之后,模型继续串联EPNet、多层PLE、Task Specific Net、Task Bias Net、ResFlow Tower等模块。这里的ResFlow是组内提出的一种多任务交互结构,核心思想是在不同任务Tower的每一层之间传递残差信息,让CTR、Item CTCVR、Shop CTCVR等任务在逐层建模时保持信息流动,而不是只在底层共享或在最后独立预测。
这些模块各自解决过局部问题,但放在一起之后,系统开始呈现几个长期成本:
所以,这次重构的目标不是“继续补模块”,而是把主干换成更适合规模化的统一结构。
新模型保留原有Embedding和Sequence部分,将序列和非序列特征聚合后的表示concat,再切割成指定维度的Token。之后,Token进入多层RankMixer,最后接3个独立任务的Task Tower,也就是MMCN,分别预测CTR、Item CTCVR和Shop CTCVR。
可以把这次升级理解成:从“人工设计多个特征交互模块”,转向“用统一Token主干自动学习高阶组合”。
RankMixer Block主要由两个部分组成:
下面这张图展开到Block内部:Token Mixer负责跨Token混合,PerToken FFN负责每个Token内部的非线性变换。后续实验也围绕一个问题展开:哪些结构值得作为主线继续放大,哪些只是局部有效,哪些在当前规模下还不适合。
结构消融部分按决策顺序展开:数据怎么用,多任务怎么训,Token怎么切,主干怎么放大,Tower怎么接。
爆品团业务正负样本极度悬殊,尤其是CTCVR目标。初期尝试过随机负采样,负样本采样比例为0.1,但AUC明显下降。
最终采用的方案是保留全量负样本,并配合Loss加权,也就是正样本加权、负样本降权,最终AUC提升约0.1%。
随机采样的问题在于,它容易丢失与正样本相似的难负样本,影响排序边界学习;同时也会改变训练集正负比例,破坏真实分布,影响概率校准。
Loss加权的优势则是:保留足够多的负样本,让模型继续接触Hard Negatives;同时在不破坏样本分布的前提下,平衡正负样本梯度贡献。
小提示:对于以AUC为核心指标的排序任务,负样本不是简单噪声。与其粗暴采样,不如保留信息,再用Loss权重调节梯度。
爆品团频道页同时优化Shop CTCVR、Item CTR和Item CTCVR。多任务学习的难点不只是“多几个Loss”,而是不同目标的数据密度和收敛速度都不一样。
我们尝试了ESMM约束和GradNorm。
ESMM的问题是CTCVR梯度会反向传播到CTR Tower,改变CTR特征表示,使CTR学到的特征混入CTCVR目标。
因此,这里最终更偏向GradNorm:它不改变模型结构,主要通过动态权重缓解任务学习节奏不一致的问题。它的收益比较明确,但代价也明确,训练GFLOPs约翻倍。
当前模型仍是两段式结构:先做序列建模,再将序列输出合入非序列Token中继续建模。
我们尝试用其他结构替代原MHA和EAT Based Target Attention。
这组实验说明,序列层不是换得越新越好。在当前实验中,收益最稳的是在原Attention后增加Gated Attention。
Tokenization决定了特征如何进入RankMixer,也会影响信息损失、参数量和收敛难度。
实验结论很直接:Auto-Split最差,Pad-Split基本持平两类Group-wise,差异在万分位量级。考虑实现复杂度,我们选择Pad-Split做后续迭代。
小提示:Pad-Split能奏效,原因在于RankMixer的核心是Token-Mixing。初始Token的语义边界不是唯一关键,Mixer后续可以继续打乱、重组并学习有效组合。
Token切割粒度也会影响效果。原始allconcat padding后维度为5120,我们比较了32 × 160和16 × 320。结论是适当增大Token Dim、减少Token数量效果更好,AUC +0.14%。这里收益大概率来自PerToken-AFFN参数量和计算量的Scaling Up。
RankMixer层数是Scaling Up的重要方式之一。
从结果看,4层是当前比较明确的收益点;6层仍有提升,但边际收益已经下降。由于当前使用PostNorm,对过深结构不够友好,因此6层之后没有继续扩层验证。
实验里还有一个有意思的现象:代码实现中曾经无意间丢失了Mixup后的Add & Norm,后续补回后效果反而下降,AUC -0.2%。
我们的解释是,Mixup会重组各位置Token的语义,混合后的表示与原位置残差不一定对齐。直接相加可能稀释跨Token混合信号,甚至引入噪声。
PerToken FFN负责Token内部的信息变换,也是RankMixer中最直接影响参数量和计算量的部分之一。这里我们比较了FFN、AFFN、SwiGLU和Soft MoE等方案。
以FFN D→2D作为baseline,核心结论如下:
因此,当前Dense方向里,SwiGLU适合作为低成本替换,AFFN v2适合有额外计算预算时使用。
Sparse MoE我们尝试了多种结构,包括Shared Router + Shared Experts、PerToken Router + Shared Experts、Shared Router + PerToken Experts,以及PerToken Router + PerToken Experts。
但在当前16 Token、专家数量和样本规模设定下,还没有观察到明显Scaling Law,也没有超过Dense AFFN。
最优配置是Shared Router & Experts、E=16、Top2、H=4/3D、aux=0.01,对应77M参数、1.9 GFLOPs,但仍不如线上AFFN,也不如同资源下的SwiGLU D→4/3D。
小提示:Sparse MoE并不是加上就一定涨。对于推荐场景,Token数量、位置语义、专家容量、路由稳定性和样本规模都很关键。当前阶段,Dense仍然是更稳的主线;后续如果Token数量和样本量扩大,可以重新探索Sparse MoE。
RankMixer Block后,如何把输出送入Task Tower,也做了对比。
我们比较了三种方式:Mean Pooling对Token维度做平均;Task-Specific Attention Pooling为不同任务使用不同Attention Pooling;Flat Concat则保留完整RankMixer输出,让Task Tower自己降维。
最终训练效果是:Mean Pooling < TSAP < Flat。
吞吐量验证里还有一个反直觉结果:TSAP + 小Task Tower的参数量和计算量更小,但RT增加约5ms,吞吐量从100降到80。相比之下,Flat + 大Task Tower更适合GPU计算。这说明FLOPs、参数量和线上RT/吞吐量并不总是强正相关。
Task Tower输入为RankMixer Flat后的向量。这里我们对齐层数和降维比例,比较了MLP、ResFlow MLP和字节侧常用的MMCN结构。MMCN虽然没有公开论文,但在业界推荐排序实践中认知度较高,核心是通过多路交叉增强Tower内的特征交互。
MMCN的4-head结构包括:2个head做互相交叉,1个head与原始输入交叉,1个head引入domain信息或自身表示作为交叉项。它在当前RankMixer Flat输入下收益最明显。
继续扩大MMCN维度也能看到Scaling Up现象:
这也呼应了Flat输入的优势:保留完整Token表达后,Task Tower仍有继续扩维的空间。
下面先放页面侧核心收益,便于快速建立整体印象。
这一期先验证RankMixer主干是否值得替换旧模型。
从结果看,模型参数量增加,但计算量下降,离线和线上都有正收益。
二期重点转向结构效率:在模型规模和推理计算量基本稳定的前提下,调整Token切分,并用GradNorm处理多任务学习节奏问题。
这一期重点不是单纯放大,而是在吞吐量、训练成本和多任务学习之间重新找平衡。
三期回到Scaling Up主线,继续增加RankMixer层数和Task Tower维度。
此外,RankMixer 243M也上线到超抢手业务:
这说明RankMixer 243M的收益并不只局限于爆品团单一场景。
这次实践后,我们对排序模型Scaling Up的理解更清晰了一些:它不是简单堆参数,也不是继续叠局部模块,而是要让模型主干、计算形态和任务Tower都更适合放大。