特征交叉 —— RankMixer 精读笔记

文章链接:https://arxiv.org/pdf/2507.15551

机构:字节

发布时间:2025.07

参考文献:

Copyright (c) Wang-Luning. All Rights Reserved.

推荐系统的scaling面临如下挑战:

RankMixer是一种硬件感知的、专为推荐系统设计的类transformer特征交互模型架构,希望在GPU上能够大幅提升MFU和计算吞吐,同时保持强大的特征交叉能力。具体而言,其保留了transformer的高并行度,同时将二次复杂度的attention模块换成了一种多头的、无参数的token-mixing模块,来提升特征交叉的效率和效果。另外,RankMixer通过Per-token FFNs来实现对于各个特征和交叉特征的子空间使用独立的参数进行建模,避免高强度特征信号淹没低强度特征,其中的每个FFN可以进一步扩展为MoE来提升模型参数规模。

RankMixer模型最大可达1B的大小,实现了推荐系统的scaling up,且相比于传统的特征交叉模块可以将MFU从4.5%提升到45%。其提供的token mixing模块和PFFN的思想在后续很多做特征交叉或统一建模的工作中被作为基础设施来使用。

 

特征的Tokenization

原始输入中包含的用户特征、候选物品特征、序列特征(用户历史序列特征)、和候选物品等交叉特征等会被转化为若干长度不一embedding向量。如果每个特征都分配一个专属的embedding的话,数百个特征就会产生数百个tokens,使得每个token分配的计算都是小块的,导致重要特征难以充分被建模,GPU利用率也会降低。而如果token数量太少又会导致难以表示多样化的特征空间,可能会使得少量主导的特征盖过了其他特征。

因此,RankMixer采用了一种折中的办法:按照语义将特征分成若干组(例如将用户画像类的若干特征),然后将每个组中的各个特征的embedding连接成一个向量ei,总共N个组embedding连接起来成为一个超大向量:einput=[e1;e2;,eN]。希望最终总共产生数量适中的T个tokens(也可以看出T个heads,用来代表多个特征子空间)作为模型输入,则将einput均匀切成T段,每一段再通过一个线性层映射成token的维数RD,即可得到一个含有T个维数为D的token的序列用于模型输入:X0RT×D。每个token xiRD可以涵盖一组类似的特征的语义。

image-20260220135358829

模型结构:

模型总共由L个RankMixer block堆叠而成,用于处理输入的长度为T的序列X0RT×D

输入序列在每个block中首先经过Token Mixer进行特征交叉融合,然后经过PFFN来独立处理各个token。和transformer一样,这两个模块也都含有短接。第n1个block的总体变换如下:

Sn1=LN(TokenMixing(Xn1)+Xn1)Xn=LN(PFFN(Sn1)+Sn1)

最后一层的输出X0沿序列长度方向做平均后即可得到模型的输出,它可以进一步被用于预测多种任务目标。