Pytorch 推出“TorchRec”:用于推荐系统 (RecSys) 的基于 Python 的 PyTorch 库

2022-03-07 17:18:43 浏览数 (1)

推荐系统 (RecSys) 是当今生产就绪型 AI 的重要组成部分,尽管您看一下 Github 不会知道它。与 Vision 和 NLP 等领域相比,RecSys 的大部分持续发现和开发都是在闭门造车的情况下进行的。对于探索这些方法或创建个性化用户体验的学术研究人员来说,该领域远未实现民主化。

RecSys 作为一个领域也是通过稀疏和/或顺序事件的学习模型定义的,这与其他 AI 领域有很多重叠。许多方法尤其是那些用于可扩展性和分布式执行的方法都是可移植的。RecSys 方法在全球人工智能投资中占很大比例;因此将它们封闭起来可以防止这笔钱进入更大的人工智能领域。

TorchRec是推荐系统的新 PyTorch 域库。该库包括标准的稀疏性和并行性原语,允许研究人员创建和实施尖端的定制模型。

到 2020 年年中,PyTorch 团队收到了很多关于开源 PyTorch 生态系统缺乏大规模生产质量推荐系统包的反馈。在寻找解决方案时,Meta 开发人员将 Meta 的生产 RecSys 堆栈作为 PyTorch 域库提供,并坚定地致力于围绕它构建生态系统。这使整个 RecSys 领域的研究人员和公司受益。Meta 的堆栈模块化并设计了一个完全可扩展的代码库,适用于各种推荐用例。

目标是从 Meta 的软件堆栈中提取必要的构建元素,以同时实现创造性实验和增长。

TorchRec 带有可扩展的低级建模基础和几个电池供电的模块。它从“双塔”([1],[2])架构开始,它具有不同的子模块,用于学习候选项目表示和查询或上下文。输入信号可以是浮点“密集”特征和高基数分类“稀疏”特征的组合,需要训练大量嵌入表。数据并行性(重复计算的“密集”组件)和模型并行性(将巨大的嵌入表分布在多个节点上)是此类系统的有效训练所必需的。

  • 诸如嵌入袋和锯齿状张量之类的建模原语使创建具有混合数据和模型并行性的大规模、高性能的多设备/多节点模型变得简单。
  • RecSys 内核具有 FBGEMM 优化,包括对稀疏和量化操作的支持。
  • 分片器可以使用多种技术对嵌入表进行分片,包括数据并行、逐表、逐行、逐表行和逐列。
  • 模型分片计划器可以自动为模型构建最佳分片计划。
  • 流水线通过重叠数据加载设备传输(复制到 GPU)、设备间通信(输入 dist)和计算(前向、后向)来提高速度。

性能扩展

TorchRec 具有适用于规模化 Recommendations AI 的尖端架构,它为 Meta 的一些最复杂的模型提供支持。它被用来训练一个 1.25 万亿参数的模型,该模型在 1 月份上线,一个 3 万亿参数的模型即将上线。这应该表明 PyTorch 可以解决业界最复杂的 RecSys 挑战。社区中的许多人告诉我们,分片嵌入很麻烦。TorchRec 在解决这个问题上做得很好。

不幸的是,使用公共数据集提供大规模基准是有问题的,因为大多数开源标准太小而无法大规模展示性能。

开源和开放技术的优势是多方面的。Meta 正在向 PyTorch 社区提供最先进的 RecSys 包,希望许多人能够为其开发做出贡献,允许进行新的研究并协助众多企业。

Github:

https://github.com/pytorch/torchrec

参考:

https://pytorch.org/blog/introducing-torchrec/

0 人点赞