找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2277

积分

0

好友

321

主题
发表于 21 小时前 | 查看: 0| 回复: 0

近日,XAI(前身为Twitter)在GitHub上开源了其推荐系统的核心算法实现 x-algorithm。这个开源项目展示了其推荐系统的完整流程,包含召回、排序与重排三大模块,但并未设置粗排环节。

项目地址为:https://github.com/xai-org/x-algorithm

整个系统的设计思想非常强调端到端,其排序核心是一个经过改造的 Transformer 模型,以实现对用户所有行为序列的建模。

召回环节

召回阶段主要由两部分组成,召回后的物料会进行混合,并经过常规过滤(如过滤已读内容)。

  1. 关注人推文召回:这部分由Rust语言实现的工程系统负责,具体细节未在代码库中详细展开。
  2. 推荐推文召回:从百万级别的物料库中,使用双塔模型(EBR) 进行召回。这里有一个显著亮点:其用户塔直接复用了排序阶段的模型,从而天然地完成了对用户行为序列的建模。整个推荐系统仅依赖这一路EBR召回,相较于业内动辄几十甚至上百路的召回策略,显得极其精简。

排序环节

排序模型被称为“Grok-1推荐版”,它是在Grok-1的基础上修改了注意力(Attention)机制范围而得到的 Transformer 模型。这个模型实现了对平台上所有用户行为的序列建模,其设计有三大特点:

  1. 全自动特征工程:所有特征均由模型自动生成,没有任何手动构造的特征。
  2. 多目标建模:模型有15个输出目标,既包括对点赞、转发等正向行为的建模,也包含对负向行为的建模。
  3. 高效的多用户多候选集推理:这是该系统最大的亮点之一。传统排序模型通常采用 point-wise 方式,即每个批次的每行数据对应一个用户的一个候选物料。而XAI的方案是,在一个GPU推理时间窗口(例如100ms)内,将N个用户及其各自召回的一批候选物料(candidates)组成一个批次进行推理。在模型中,为一个用户召回的所有候选物料作为一个序列输入。关键之处在于,在计算注意力时,同一个用户的不同候选物料之间不进行相互关注(attend),从而保证了它们之间的打分相互独立。这相当于巧妙地利用了Transformer的序列建模架构,实现了类似 target attention 的独立打分效果,极大地提升了推理效率,使得原本被认为低效的Transformer模型得以在生产环境中高效落地。

重排环节

重排阶段相对常规:对排序模型输出的多行为预测分数进行加权求和,得到一个综合排序分。之后会进行多样性控制等业务策略调整。

总结与心得

通过对该开源项目的分析,我们可以总结出以下几点核心实践与思考:

  1. 高效Transformer落地实践:通过多用户、多候选集在一个批次内进行推理,并利用修改后的注意力机制避免候选物料间相互影响,成功地将Transformer模型应用于大规模生产推荐系统,解决了其推理效率的瓶颈问题。
  2. 极致的端到端设计:系统追求极简,特征工程完全自动化,召回路径高度统一(仅EBR一路),减少了大量人工干预和子系统堆叠带来的复杂性。
  3. 对内容质量要求极高:该系统的召回和重排环节设计相对简单,这意味着它对平台原始物料库的质量有极高的依赖。可以推断,其百万级的物料库经过了严格的筛选和过滤,保留了最优质的内容,才能支撑起如此简练的模型架构。

总的来说,XAI开源的这套推荐算法为我们提供了一个在大规模社交平台上应用前沿深度学习模型(特别是Transformer)的实战范例,尤其在模型推理效率优化和系统端到端设计方面,具有很高的参考价值。对推荐算法感兴趣的朋友,可以在 云栈社区开源实战板块找到更多相关的深度分析和项目讨论。




上一篇:DeepSeek V4架构猜想:从NSA到DSA的演进与基于层间相似度的Indexer优化思路
下一篇:Nexus 社区版两大关键变更:组件数与请求量限制收紧,数据库迁移至 PostgreSQL/H2
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-23 23:12 , Processed in 0.268177 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表