RankMixer: Scaling Up Ranking Models in Industrial Recommenders
Jie Zhu, Zhifang Fan, Xiaoxie Zhu, Yuchen Jiang, Hangyu Wang, Xintian Han, Haoran Ding, Xinmin Wang, Wenlin Zhao, Zhen Gong, Huizhi Yang, Zheng Chai, Zhe Chen, Yuchao Zheng, Qiwei Chen, Feng Zhang, Xun Zhou, Peng Xu, Xiao Yang, Di Wu, Zuotao Liu
cs.IR
2025-07-21
字节跳动提出RankMixer,用无参token混合与独立FFN把抖音排序从1600万参扩到10亿,MFU从4.5%拉到45%,全量使用时长涨1.08%,延迟仍约14毫秒。
工业推荐排序想跟着大模型一起扩参,约束却完全不同:延迟卡在十几毫秒,QPS 极高,账单按机器数算。线上还在用 CPU 时代留下的特征交叉模块,DCN、FM、手写交叉特征拼在一起,在 GPU 上多半是 memory-bound。Model FLOPs Utilization(MFU,实际浮点运算占硬件峰值的比例)经常只有个位数。抖音主端线上基线是 1580 万稠密参数,MFU 4.47%,延迟 14.5 毫秒。把这种结构直接加宽加厚,收益很小,有时还是负的。
RankMixer 要回答的问题很具体:不增加推理延迟的前提下,能不能把排序模型的稠密参数扩两个数量级。
输入按业务语义聚成若干特征组,拼成一条长向量,再切成 T 个定长 token。token 太多数会把每个 token 的容量切碎,太少又退化成一条大 MLP。100M 规模用 T=16、宽 768、2 层;1B 规模用 T=32、宽 1536,仍是 2 层。扩宽、加层、加 token 数,离线效果几乎只跟总参数量走,跟 LLM 那条经验接近。宽一些的矩阵乘法 MFU 更高,所以最终配置偏向加宽而不是加层。
每个 RankMixer 块两步走。
再往上,把每个 token 的 FFN 换成 Sparse MoE。普通 Top-k 路由会把专家预算均摊到信息量很低的 token 上。RankMixer 用 ReLU 门加 L1 惩罚,让信息量大的 token 激活更多专家;训练时走 dense、推理时走 sparse(DTSI),避免专家饿死。稀疏到 1/8 激活时,这条组合几乎保住 1B 稠密模型的 AUC,吞吐大约翻倍。
离线数据来自抖音两周日志,日更万亿级样本、三百多个特征。AUC 涨 0.0001 就算稳定显著。
| 模型 | Finish AUC 相对增益 | 稠密参数 | FLOPs/Batch |
| DLRM-MLP | 0(基线 0.8554) | 8.7M | 52G |
| Wukong | +0.29% | 122M | 442G |
| RankMixer-100M | +0.64% | 107M | 233G |
| RankMixer-1B | +0.95% | 1.1B | 2.1T |
Skip 上 100M 版 +0.86% AUC、+1.33% UAUC;1B 版 +1.25% / +1.82%。消融里拿掉 token mixing 掉 0.50% AUC,把 per-token FFN 改回共享 FFN 掉 0.31%。
线上把 16M 的 DLRM+DCN 换成 RankMixer-1B,参数约 70 倍、FLOPs 约 20.7 倍,FLOPs/参数比降 3.6 倍,MFU 从 4.47% 拉到 44.57%,再叠 fp16,延迟从 14.5ms 到 14.3ms。抖音主端活跃天数 +0.29%、使用时长 +1.08%、完播 +1.99%、点赞 +2.39%;低活用户活跃天数 +1.74%。广告侧 AUC +0.73%、广告主价值 ADVV +3.90%。反向实验观察到 8 个月增益还没收敛。
这篇把「推荐模型扩不上去」拆成一笔硬件账:FLOPs/参数比降 3.6 倍、MFU 拉 10 倍、半精度再翻一倍峰值,70 倍参数才能塞进原来的延迟预算。对做工业排序的人,可复用的是 token mixing 替代 attention、按子空间拆 FFN、以及先把算力利用率拉上来再谈 scaling law。它是渐进改进,但改进打在抖音 Feed 全量,不是实验室小表。
序列建模仍是外挂(论文引用同事工作 LONGER),RankMixer 只管稠密特征交叉。tokenization 依赖人工语义分组,组得不好会直接伤效果。Sparse MoE 的 10B 路径只在离线稀疏度曲线上成立,全量上线的是 1B 稠密版。全部数字来自抖音内部日志,没有公开数据集对照,跨产品可迁移性只能看广告那一组。低活用户增益最大,也可能是基线在冷启动上更弱,不一定等于模型更「懂」长尾。