社区分享|TensorFlow Recommenders-Addons 开源啦!

TensorFlow Recommenders-Addons (TFRA) 是一个开源软件包,专注于解决大规模推荐模型的挑战。它包含 DynamicEmbedding 和 EmbeddingVariable 两个组件。DynamicEmbedding 解决了静态 Embedding 的内存浪费和特征冲突问题,通过分层表达稀疏参数和使用 ResourceVariable 实现动态伸缩。EmbeddingVariable 支持稀疏参数的动态新增与淘汰,提供增量 Checkpoint 功能,并兼容原生 TensorFlow API。这两个组件旨在提高推荐系统的效率和效果。
摘要由CSDN通过智能技术生成

发布人:戎海栋(腾讯微信看一看团队)、丁辰(阿里巴巴 PAI 团队)

 

背景与现状

推荐系统是机器学习的重要应用领域,能够根据用户偏好自动推送相关内容,比如展示商品,投放广告,推荐视频、新闻等多媒体内容等。

在推荐系统领域,Embedding 已成为处理 ID 类稀疏特征的常用手段,作为一种“函数映射”,Embedding 通常将高维稀疏特征映射为低维稠密向量,再进行模型端到端训练。

在 TensorFlow 框架中,全部以稠密 Tensor 为基本数据单元对数据进行计算、存储以及传输。TensorFlow 也基于稠密 Tensor 提供了静态 Embedding 机制,用于存储 Embedding 的 Tensor shape 固定为 [vocabulary_size, embedding_dimension]vocabulary_size 通常由 ID 空间决定,需要将其 Hash 映射到 vocabulary_size 范围内,在大规模推荐场景下,静态 Embedding 机制存在以下弊端:

  • 特征冲

特征 IDs 通常为字符串类型且规模庞大,这会导致初始 vocabulary_size 难以估计,如果 vocabulary_size 估计过小,则导致 Hash 冲突率增加,即不同特征可能查找到相同的 Embedding,造成特征冲突,影响模型效果:

图片

  • 内存浪费

如果 vocabulary_size 估计过大,则导致 Variable 会为大量永远不会被查找的 Embedding 预留资源,即内存浪费

  • 在线学习不友好

在线学习场景中,随着训练持续进行,新的特征不断增加,老的特征要不断淘汰,这与稠密 Tensor 的形状必须事先确定相矛盾:特征不能随训练任意增加,通过算法淘汰某些不重要的特征时,也无法单独释放该特征 embedding 占用的内存资源

  • 低效的 IO

推荐模型的更新过程具有稀疏性,即一段时间内训练更新的参数只占总量很少的一部分,但静态 Embedding 机制下,模型存取需要处理整个稠密 Tensor,这会带来极大的 IO 开销,难以支持超大模型训练

过去几年,工业界针对上述问题,在 TensorFlow 支持大规模推荐模型方面进行了大量探索,今天,我们很荣幸地推出 TensorFlow Recommenders-Addons (TFRA),这款开源 TensorFlow 软件包集成了相关优秀成果,使 TensorFlow 能够以更原生、更高效的方式支持 ID 类推荐模型的训练。相关成果已经过多家互联网公司真实商业场景的检验,实践证明,这些努力和进展大幅改善了这些企业实际业务的推荐效果,带来了真实的商业收益。同时我们也通过 SIG-Recommenders 维护并回馈给业界。

TFRA 目前包含两个独立组件,其中一个是 DynamicEmbedding 组件,一个是 EmbeddingVariable 组件,下面我们分别介绍这两个组件的原理和使用:

 

tfra.dynamic_embedding

(DynamicEmbedding组件)

tfra.dynamic_embedding 组件基于腾讯微信看一看团队戎海栋、张亚霏、程川等人 2020 年提出的稀疏域隔离方案实现,其设计目标如下:

  • 使 TensorFlow 可以训练 Keys-Values 数据结构(Hash Table)

  • 与 TensorFlow 原有功能有更好的兼容性,不改变算法工程师建模习惯

 

该组件具有如下优点:

  • 有效避免 Hash 冲突问题,保证特征无损,能有效提升模型效果

  • 内存动态伸缩,训练更省资源

  • 复用 TensorFlow 所有优化器和初始化器

  • API 与原 TF 的 

    tf.nn.embedding_lookup 等 API 同名且行为一致,学习成本低

 

2.1 实现原理及 API 设计

2.1.1 分层表达稀疏参数

推荐模型的稀疏参数通常存于 HashTable 中,但是 TensorFlow 优化器是为训练稠密 Tensor 而设计的,无

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值