ICML 2024 | 面向第三代推荐系统:Meta提出首个生成式推荐系统模型
©作者 | 杨平安
研究方向 | 推荐算法
Highlight
特征序列化:将所有的 id / categorical 特征做成一个序列,丢弃所有的数值特征。并将召回和排序统一定义为序列建模任务。 模型结构:采用 HSTU(Hierarchical Sequential Transduction Units)结构,在 8192 长度的序列上相比于 FlashAttention2 实现了 5.3x 到 15.2x 的加速;采用 M-FALCON 算法分担计算开销,能够在相同的推理开销下,服务于 285x 复杂的模型,同时实现 1.50x 到 2.48x 的加速。 模型效果:在工业级别的推荐系统上,能够分别提升召回 / 排序阶段的在线指标 6.2% 和 12.4%。 验证了 LLM 中的 scaling law 也可能适用于大规模推荐系统。
推荐系统中的特征并没有明确的结构。通常包含类别特征和数字特征。 推荐系统使用不断更新的数十亿级的词汇表。相比之下,语言仅仅包含数十万级别的静态词汇。 计算成本是实现大规模序列模型的主要瓶颈。GPT-3 用 1-2 个月的时间在数千个 GPU 对 300B 的 token 进行了训练。而推荐系统需解决数十亿的日活用户和数十亿的内容信息,在一天内需处理的 token 比语言模型在一到两个月内要处理的要高几个数量级。
如何实现特征统一?
Categorical('sparse')特征:进行序列化 选取最长的时间序列(通常是将用户交互的 item 合并)作为主要的时间序列。 其余的特征是随着时间缓慢变化的时间序列,例如用户关注的创作者等。通过保留每个连续片段最早的条目来压缩这些时间序列,并将结果合并到主序列中。
Numerical('dense')特征:直接丢弃 这类特征变化更为频繁,从计算和存储的角度将这些特征完全序列化是不可行的。 这些数值特征是由类别特征聚合而来,而这些类别特征我们已经编码入了模型。
将召回和排序定义为序列建模任务
给定上文得到的时间序列 ,这些 token 对应的时间 ,如果 表示内容,则还有用户在 上的行为 。我们可以将召回和排序定义为序列建模任务,根据 mask sequence 将输入序列映射为输出序列 , 代表 没有定义。召回和排序阶段都以 causal masked autoregressive 的方式进行训练。这些输入 token 都来自一个动态词表 ,其中内容集合为 。
2.1 召回
监督信号并不一定是 ,因为用户对 不一定是正面反馈。 当序列的下一个 token 不是表示内容()的时候,。
2.2 排序
目前的推荐系统需要 'target-aware' formulation,即需要预测目标 和用户行为在早期进行交互。然而在经典的自回归模型中,交互通常发生得较晚(在 softmax 之后)。因此我们通过将主时间序列中的内容 和行为 进行交错来解决这个问题,形成 的序列(如果不考虑 ),在 action 的位置 。之后在表示内容的 token 后接神经网络进行多任务预测。
代表输出的 token 未定义,即不计算损失。这里 mask sequence 的设定的区别主要是由于召回和排序阶段的目标不同造成的。召回阶段的主要目标是根据之前的内容预测下一个内容,因此当序列的下一个 token 不是表示内容()的时候,。
而排序阶段的主要目标为对内容进行多任务预测(ctr、cr),因此在 action 的位置 ,在表示内容的 token 后接神经网络进行多任务预测;同时也可以利用自回归损失进行计算, 的下一个为 ,而 的下一个为 。这样在 的位置设置 mask=0 很合理。
训练方式是怎样的?
在目前流式计算的场景下以 self-attention 为核心的模型复杂度为 ,其中 是用户 的 token 数量, 是 embedding 的维度,隐藏层大小 。令 ,则计算复杂度为 。
模型结构
一些工程上的优化
5.1 利用稀疏性
5.2 增加稀疏性
使用随机长度(Stochastic Length, SL)算法,可以进一步提高用户序列的稀疏性。用户历史序列的一个特点是用户行为在时间上具有重复性,可以将输入序列按下面的规则进行截断。 是一个函数,从长度为 的原始序列中选取长度 的子序列。这种方法将 attention 的复杂度降低到 。
5.3 降低内存使用量
5.4 通过成本摊销扩大推理规模
推荐系统在推理时需要处理大量的候选信息,在排序阶段一般是万的量级。使用 M-FALCON 算法 ,将总共 个候选分为大小为 的 mini-batch 以利用编码器级 KV 缓存,并通过修改 attention masks 和 biases 的方式,同时处理 个候选。M-FALCON 算法使模型复杂度随候选数量线性增加,在推理资源不变的情况下,以 1.5 倍的吞吐量落地了复杂度 285 倍的模型。
实验效果如何?
模型参数:使用了 100B 的训练样本, 64-256 块 H100 。
召回:l=6, n=512, d=256 排序:l=3, n=2048, d=512
总结
更多阅读
#投 稿 通 道#
让你的文字被更多人看到
如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。
总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。
PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析、科研心得或竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。
📝 稿件基本要求:
• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注
• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题
• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算
📬 投稿通道:
• 投稿邮箱:[email protected]
• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者
• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿
△长按添加PaperWeekly小编
🔍
现在,在「知乎」也能找到我们了
进入知乎首页搜索「PaperWeekly」
微信扫码关注该文公众号作者