embedx 是基于 c++ 开发的、完全自研的分布式 embedding 训练和推理框架。它目前支持 图模型、深度召回模型和图与排序、图与召回的联合训练模型等。
embedx是腾讯 AI 领域开源协同项目,获得过开源协同优秀奖、微信最具技术价值文集奖等,经过近 3 年的迭代,已经趋向稳定和成熟,在设计和开发的过程中,参考了业界开源项目的大量经验,现将其开源反哺业界,希望该项目能持续的进行迭代。
项目链接请参考:https://github.com/Tencent/embedx
01
项目特点一: 效率高
大规模图引擎:我们设计并实现了支持十亿节点、千亿边的大规模图引擎,以 op 形式提供了包括 random walk、negative sampling 和 neighbor sampling 等多种分布式采样接口。通过层次化采样解决分布式负例采样一致性、拒绝采样解决动态随机游走效率低、partial sum解决异构的邻居采样等问题大幅的提升了分布式采样的效率。
高性能计算引擎:基于 deepx_core 实现神经网络计算,deepx_core 提供了能自动求导的静态图引擎,该引擎支持一百余个 op, 它具备大规模稀疏、高性能、跨平台等优点。目前 deepx_core 已经对外开源,请参考 https://github.com/Tencent/deepx_core。
我们的解决方案的性能普遍是开源框架的数倍,机器节省 30%-60%。
02
项目特点二: 模型多
丰富的模型:支持训练十亿级节点、千亿级别的图模型如 deepwalk、graphsage 等、支持训练百亿级样本、百亿级特征的深度召回模型如 youtubednn、dssm 等,创新性的提出并支持训练图与深度学习的联合建模模型如 图与排序的联合建模模型 graphdeepfm、图与召回的联合建模模型 graphdssm 等。
模型创新:通过解决深度模型与图模型在排序、召回等场景中的两阶段使用方式带来的优化目标不一致等难题, 在公司内首次落地了图与排序、图与召回等模型的离线训练与在线推理,在业务中取得了不错的效果。
我们沉淀了推荐、搜索、风控等领域内累计近 20个常用的模型。
03
项目特点三: 实时性
实时流程:为捕获用户的实时行为,我们搭建了分钟级的online learning流程,即从实时数据流消费、召回实时训练与推理(基于embedx)、排序实时训练与推理(基于deepx_core), 全流程在分钟级内生效!
流程改进:在分钟级的online learning流程中,通过模型参数增量导出解决了模型训练结束后导出的效率问题,通过模型参数异步更新解决了复杂模型在线推理的效率问题,通过重要性采样纠偏实时样本的偏移分布解决了效果问题。
我们的解决方案具备全流程分钟级的实时能力,在多个推荐业务成功落地。
04
项目应用
embedx 累计支持公司 12 个业务、 30 多个团队使用、上线百余次,收到合作团队多封邮件认可反馈。我们帮以下重要产品落地使用了 embedx, 并取得了性能和效果双丰收:微信看一看、微信视频号、微信搜一搜、微信支付、微信安全、腾讯新闻、应用宝、QQ 音乐、JOOX 音乐、腾讯课堂、领航平台和腾讯黑产打击等。
写在最后
站在巨人的肩膀上才有了现在的embedx,它的高性能一部分来自于高效的计算引擎 deepx_core,它的代码质量受到团队 leader kimmy 的严格要求。
自 2019 年下半年启动一直保持核心开发 2~3 人的规模,我们先后攻克了图模型和深度召回模型的分布式训练、模型小时级、分钟级训练、在线推理和端到端模型创新等难题。 感谢以下开发者 yuanhang、chuan、 joyce、 hill、 tinkle 、kimmy、zhenting、yuanqing、brian、yandong、yalong在不同时间做出的贡献。
最后介绍下我们团队,我们是微信搜索应用部算法平台团队,引用 deepx_core 开源时的一段话来再次表达我们对代码和系统的认知,“我们把代码和系统视为艺术,我们推崇小而美的系统,我为我们的工程师文化和艺术品而骄傲”。未来我们将开源更多项目,敬请期待。
https://github.com/Tencent/embedx
(点击文末阅读原文直接访问)
请给项目 一个 Star !
欢迎提出你的 issue 和 PR!
国内镜像地址:
https://git.code.tencent.com/Tencent_Open_Source
(登录后才能访问公开项目)
腾讯工蜂源码系统为开源开发者提供完整、最新的腾讯开源项目国内镜像