美团外卖生成式推荐精排MTGR


美团外卖生成式推荐精排MTGR

仅用于站内搜索,没有排版格式,具体信息请跳转上方微信公众号内链接

在工业推荐系统中,深度学习推荐模型(DLRM)已经使用了近十年,通常输入包括大量精心设计的手工特征,如用户画像、历史行为序列、交叉特征(点击、购买等),深度学习时代不断扩展user序列特征,加强与candidateitem的targetattention交互以提高模型性能。
然而,DLRM在扩展方面存在两个显著缺点:
1)随着用户行为的指数增长,传统的DLRM无法高效处理整个用户行为,通常诉诸于序列检索或设计低复杂度模块进行学习,这限制了模型的学习能力;
2)基于DLRM的扩展在训练和推理方面的成本与候选数量约线性正相关(如图1特征concat后的MLP模块)。
对于生成式推荐GRM,近期的研究指出其具有出色的可扩展性。有两个关键因素:
1)GRM直接对完整的用户行为链进行建模,将同一用户下的多个曝光样本压缩成一个,显著减少了计算冗余,同时允许进行端到端的更长序列编码;
2)GRM采用了具有高效注意力计算的Transformer架构,使模型的训练和推理能够满足工业推荐系统的要求。
然而,GRM严重依赖下一个token预测,需要移除候选item和user之间的交叉特征,会严重损害模型的性能,无法通过扩大规模来弥补。
如何构建一个既能利用交叉特征以确保有效性,又具有GRM可扩展性的排序模型呢?
本期我们介绍美团外卖的解法–MTGR。
如图2所示,交叉特征被设计为候选item的一部分特征塞进序列中了。训练时,候选item的这些特征按用户在特定窗口内聚合,推理时按请求聚合。其中,Seq特征一般是天级别,实时序列特征RT按另一个特定窗口内互动时间的顺序排列用户的所有实时互动item。通过将候选item聚合到一个样本中,复用user特征,极大地减少了训练样本的数量,MTGR通过仅执行一次计算并为所有候选item生成分数,节省了大量资源。
对于用户特征U中的标量特征,每个特征自然地转换为一个单独的token;对于序列特征,每个item被视为一个token,多个属性得到embedding后经MLP模块集成为最终的itemembedding,候选item同理。都变成维度统一的embedding后,就可以用selfattention做交互了。(这里的token不要当成nlp里的词表,item那么多是塞不进一个词表里的,这里是精排打分,所以我们当成是一个featureembedding更合适)
受HSTU的启发,MTGR使用堆叠self-attention层和encoder-only架构进行建模。与LLM类似,输入的token序列逐层处理。不过,在自注意力块中,输入序列X首先通过groupLN进行归一化,同一域(例如,U)的特征形成一个组,groupLN是确保不同域的token在自注意力之前具有相似的分布,并对齐不同域的不同语义空间。
由于按user聚合了样本,实时特征可能导致特征穿越。MTGR针对这个问题改进了mask策略,设置了3条规则:
离线序列特征Seq对所有token可见。
实时序列特征RT的可见性遵循因果关系,其中每个token仅对出现在其之后的token可见,包括候选token。(说明实时序列特征需要保留每个item的交互时间便于样本处理)
候选token(C,I)仅对自己可见。
图2(c)展示了动态MASK的一个例子。行中的白色块表示某个token能够使用其他token的信息,而列表示该token对其他token是否可见。对U和S使用全注意力,从“age”到“seq2”形成一个白色正方形。对于“rt1”到“rt2”,我们假设“rt1”出现得比“rt2”晚,因此,从“rt1”到“rt2”构建了一个白色块在上三角,表示“rt1”能够使用“rt2”的信息,而“rt1”对“rt2”不可见。此外,“target2”和“target3”假设出现在“rt1”之前,导致“rt1”对它们不可见。“rt2”出现在“target1”和“target2”之前,但出现在“target3”之后。因此,“rt2”对“target3”不可见,而“target3”出现在所有“rt”之前,导致它无法使用“rt”的信息。
MTFR基于魔改版的TorchRec实现,在100多个GPU上运行时,训练吞吐量基于原始TorchRec提高了1. 6-2. 4倍。与DLRM基线相比,每个样本的前向计算中实现了65倍的FLOPs,而训练成本几乎保持不变。关键优化点有:
动态哈希表。TorchRec使用固定大小的表来处理稀疏embedding,这不适合大规模工业流式训练场景。首先,一旦静态表达到其预设容量,就无法实时为新user和item分配额外的embedding。虽然在这种情况下可以使用一些默认embedding,或者可以使用一些逐出策略来消除“旧”ID,但模型的准确性将被降低。其次,静态表通常需要预先分配超过实际需求的容量,以防止ID溢出,这不可避免地导致内存利用效率低下。为了应对这些挑战,实现了一个基于哈希的高性能嵌入表,在训练过程中动态地为稀疏ID分配空间。采用了解耦的哈希表架构,将键和值存储分离到不同的结构中。键结构维护一个轻量级的映射表,包含键及其对应的embedding向量的指针,而值结构存储embedding向量以及逐出策略所需的辅助元数据(例如计数器和时间戳)。这种双结构设计实现了两个关键目标:(1)通过仅复制紧凑的键结构而不是庞大的嵌入数据来实现动态容量扩展,以及(2)通过将键存储在紧凑的内存布局中,同时适应可能稀疏的键分布,优化键扫描效率。
embedding查找。embedding查找过程采用All-to-all通信进行跨设备embedding交换。采用两阶段ID唯一操作,在ID通信前后减少冗余ID,以避免设备之间的重复embedding传输。还设计了一个特征配置接口,以实现自动表合并,这可以减少embedding查找操作的数量,从而加快进程。
负载平衡。在推荐系统中,用户行为序列通常呈现出长尾分布,其中只有少数用户拥有长序列,而大多数用户拥有短序列。这导致在固定batch_size(缩写为BS)进行训练时出现显著的计算负载不平衡。一种常见的解决方案是使用序列打包技术,将多个短序列合并成一个较长的序列。然而,这种方法需要仔细调整MASK,以防止在注意力计算过程中不同序列相互干扰,这在实现上可能相当麻烦。美团的直接解决方案是引入动态BS。每个GPU的本地BS根据输入数据的实际序列长度进行调整,以确保相似的计算负载。此外,调整了梯度聚合策略,根据每个GPU的BS对其梯度进行加权,以保持与固定BS一致的计算逻辑。
其他优化。为了进一步提高训练效率,通过使用三个流:复制、分派和计算,最大化并行性。具体来说,复制流从CPU将输入数据加载到GPU,分派流根据ID进行表查找,计算流处理前向计算和反向更新。例如,当计算流执行批次T的前向和反向传递时,复制流同时加载batchT+1以掩盖I/O延迟。在完成批次T的反向更新后,分派流立即启动批次T+1的表查找和通信。此外,采用bf16混合精度训练,并开发了一个精心设计的基于cutlass的注意力内核,类似于FlashAttention,以加快训练过程。
实验
基线。对于DLRM,在序列建模中比较了两种方法:基于序列检索的SIM和用于原始长序列的端到端建模(E2E)。在扩展方面,比较了DNN、MoE、Wukong、MultiEmbed和UserTower。MoE使用4个专家,每个专家包含与基础DNN复杂度相同的网络。Wukong和MultiEmbed被配置为与MoE具有相同的计算复杂度。UserTower使用一组可学习的queries,并在用户行为上插入一个qFormer层和另一个MoE(16个专家)模块。UserTower的计算复杂度是MoE方法的三倍,但在推理期间,它可以为同一个用户的多个预测item共享这种计算,从而降低推理成本。它在美团的场景中取得了良好的效果。MTGR采用E2E来处理所有序列信息。此外,如表2所示,设置了三种不同的规模来验证MTGR的可扩展性。
消融实验里,值得注意的是移除交叉特征后,性能指标显著下降,甚至抵消了MTGR-large相对于DLRM的优势,突显了交叉特征在实际推荐系统中的关键作用。
图3展示了MTGR的可扩展性。可以看出,MTGR在不同超参数下表现出良好的可扩展性。此外,图3(d)展示了性能与计算复杂度之间的幂律关系。垂直轴表示相对于最好的DLRM模型UserTower-SIM的CTCVRGAUC指标的增益,而水平轴反映了与UserTower-SIM相比的计算复杂度的对数倍数。
在线AB比较的基线是UserTower-SIM,它已经持续学习了2年。使用过去6个月的数据来训练MTGR模型(数据量显著低于DLRM模型)。
在CTCVRGAUC方面,超过了过去一年所有优化的累积增长。该模型已经在美团外卖场景中全面部署,训练成本与DLRM相等,推理成本降低了12%。
附录
https ://arxiv. org/pdf/2505. 18654
进技术交流群请添加AINLP小助手微信(id:ainlp2)
请备注具体方向+所用到的相关技术点
关于AINLP
AINLP是一个有趣有AI的自然语言处理社区,专注于AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括LLM、预训练模型、自动生成、文本摘要、智能问答、聊天机器人、机器翻译、知识图谱、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLP小助手微信(id:ainlp2),备注工作/研究方向+加群目的。


文章作者: ZejunCao
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 ZejunCao !
  目录