文章链接:https://arxiv.org/pdf/2602.06563
机构:字节
发布时间:2026.02
Copyright (c) Wang-Luning. All Rights Reserved.
本文为RankMixer团队推出的升级版RankMixer-v2,主要是针对原始的RankMixer存在的一些问题进行深入优化,从而将模型做的更大、更深,其分别在离线和在线场景下部署了15B和7B规模的模型。
TokenMixer尽管实现了效率和效果的平衡,成为了很多推荐系统的backbone,但其仍存在如下缺点:
次优的残差设计:为了保证经过Token Mixer后的输出可以和原始输入做残差连接,必须使mixing后的token数量
不纯的模型架构:由于推荐系统的迭代更新不是一蹴而就的,因此即使采用了RankMixer作为了backbone,仍存在很多遗留的碎片化的memory bound算子,使得总体的MFU仍然难以提升。
深层模型的梯度更新不充分:RankMixer采用了稀疏MoE来优化推理成本,为了确保各个expert的充分训练采用了稠密训练+稀疏推理的设计,这就导致训练成本仍非常高。另外,使用ReLU产生门控分数使得推理时很难预测每个token的激活专家数量t
特征的Tokenization:
总体上和RankMixer类似,也是将特征进行分组后映射为维数相同的tokens。为了更好地捕捉全局信息,借鉴BERT中的[CLS] token,进一步设计了一个global token来聚合全局信息,它由所有特征的embedding连接后的大向量通过一个MLP映射后得到。这个global token会被连接到正常token序列的开头,从而形成模型输入
模型结构:
Mixing & Revert模块:
Token Mixing操作会改变序列长度。原始的Token Mixer层输入长度为
为了去除这一限制,一个自然的想法就是对mix后长度和维数都产生了变化的token序列加一个“恢复”(revert)操作,使得其在进入下一个block之前恢复到原始的张量形状。具体而言,在token mixer接收长度为
Per-token SwiGLU:
将RankMixer中的Per-token FFN优化为Per-token SwiGLU(pSwiGLU)。扩展到MoE后,相应地展为MoE SwiGLU,也即每个expert是一个SwiGLU网络。另外,给每个token的MoE网络中添加一个共享专家(注意只是token自己的MoE网络中的共享专家,不和其他token共享),从而获得了LLM中它对于训练稳定性和模型效果的优势。
在路由分数生成上,由于ReLU导致expert激活数量不可控,因此这里又改回了softmax+top-k的路由机制。由于softmax的归一化会使得有些专家SwiGLU梯度更新不充分,因此额外添加一个常数
其他改进:
将LayerNorm换成RMSNorm来减轻计算压力,将post-norm换成pre-norm来防止梯度不稳定问题。
改进了SwiGLU中的W_down权重的初始化方差,使得
除了每个block的短接外,额外设置一些横跨多个block的短接(一般横跨2-3层,如下图左所示)来强化信息流动,用于解决低层的梯度消失问题,并由于能够让低层特征更好地传递到深层因此可以加快低层的收敛。需要注意的是,最后一层通常不加跨层的短接,因为最后一层的作用是提取高度抽象的特征来用于后续的分类任务,因此如果混入低层信息的话可能会扰乱这种抽象。
另外,还加了一个辅助loss来使得低层学会如何估计高层特征的偏移,从而增强它们的特征表达能力,避免低层的不充分训练。其将低层输出的logits和高层输出的logits结合来计算一个联合loss。
在系统部署上,针对该模型的特性定制了MoE算子、token并行策略,以及使用了FP8 PTQ等。