作者:卓立、日涉、谨持

一、背景

大规模信息检索一直是搜推广领域的核心问题之一,而基于任意复杂模型的检索方案无疑是业界重要的迭代方向之一。近年来,阿里妈妈展示广告Match团队与预测引擎团队专注于从算法与工程角度推动工业级大规模检索技术的研发,我们在基于任意复杂模型的检索方向上积累了一定经验并取得了不错的业务效果,现整理发布NANN(Neural Approximate Nearest Neighbor,以下简称NANN)并对外开源,希望通过社区的协同创造力,共同推进该领域的发展。

本文介绍的NANN源自阿里妈妈展示广告Match团队研发的二向箔算法体系,该方案在保留复杂模型召回能力的同时,将索引学习和模型训练解耦,提供了轻量化的任意复杂模型召回解决方案。NANN基于Tensorflow,提供了性能benchmarking工具以及完整的由模型训练至在线deployment的demo。

该方案由阿里妈妈技术团队自研,已在阿里巴巴集团内部其他业务进行推广上线,在典型的搜索、推荐、广告场景均取得了显著的业务收益。

本文将围绕NANN核心功能及算法体系更新进行简要介绍,欢迎大家试用和交流讨论。

二、核心功能介绍

NANN代码库基于原生TensorFlow框架实现了高性能的二向箔算法在线检索服务。同时对于NANN算法的训练、索引结构构建、离线效果及在线性能评测、部署等流程提供了详细的示范。

该开源代码库的主要优点可以分为模型训练、性能优化和用户友好性三方面:

2.1 模型训练

  • 任意复杂模型:模型训练与索引构建解耦,因此对模型结构几乎没有任何限制,也避免了索引和模型训练绑定带来的高额训练负担。

  • 对抗训练:我们采用对抗训练来保证复杂模型下的优越检索性能。

此外,我们还提供了预训练模型和格式转化后的测试数据集,以方便大家试用及验证。

2.2 性能优化

  • 高效检索:我们使用TensorFlow Custom Ops实现了HNSW检索过程。就在线检索而言,重写后的HNSW检索比Faiss原生版本更加高效。

  • 运行时优化:我们支持GPU Multi-Streaming with Multi-Contexts,这极大地增强了并行性。

  • 编译优化:我们支持Dynamic Shape下的XLA加速能力,并利用缓存等手段提升了just-in-time(JIT )编译效率,最终使得NANN整个检索过程可以充分利用XLA加速。

  • 图级优化:我们针对推荐、搜索和广告领域中常用的一些常见的模型结构,基于TensorFlow Grappler提供了一些图级优化。

2.3 用户友好性

  • 原生TensorFlow:NANN的后端服务和前端实现完全基于TensorFlow生态系统。

  • 模型推理和检索解耦:训练-检索解耦使得用户能专注优化深度模型,无需额外考虑检索流程。

  • 性能测试:我们提供了一个简单的基准测试工具,可用于分析延迟、吞吐量等推理性能。

环境搭建、模型训练、部署等更多细节详见开源库。

https://github.com/alibaba/nann

三、算法体系更新

我们去年在《TDM到二向箔:阿里妈妈展示广告Match底层技术架构演进》这篇文章里介绍了初版的二向箔算法体系。在文章末尾的展望部分,我们也提到图索引构建中采用的 L2 距离度量与在线检索采用的模型打分之间存在不一致,这会导致检索精度会随着模型结构变复杂而大幅降低。为此,我们在训练过程中加入了一个对抗训练辅助任务,大幅减轻了相似性度量之间异质性的负面影响,有效提高了检索精度。

具体来说,在内部数据集(Industry)和开源数据集(User Behavior)两个数据集上,随着User侧和Target侧的交互越来越多,虽然检索recall (recall-retrieval)提升明显,但同时与全量打分recall(recall-all)之间的差距(  )也越来越大。

我们认为该现象主要是因为模型打分的非线性随模型复杂度的增加而大幅提升。在双塔模型(two-sided)下,模型打分函数与target embedding  为线性关系,因此L2距离近的target embedding对应的模型打分也相近,最终表现为检索损失很低,在Industry和User Behavior两个数据集上分别为0.35%和0.74%;而在结构最复杂的attention模型(DNN w/attention)下,一旦给target embedding  加上微小的扰动,模型打分可能会发生剧烈的变化,因此检索精度损失大幅升高。为此,我们在模型训练中加入了如下辅助函数来控制模型打分的平滑性:

其中  为用户,  为该用户的正、负样本集,  表示用户  和target  的模型打分,  为模型打分  在target embedding  处对抗梯度方向的微小扰动。

加入对抗训练可以在不损失全量打分recall的情况下大幅降低复杂模型的检索损失,从而大幅提升检索性能。

四、总结展望

从模型角度看,加入对抗训练的二向箔算法体系真正做到了任意复杂模型下的高精度、高性能大规模KNN检索。我们将该方案整理开源,为社区提供了一套轻量级的支持任意复杂模型的大规模召回解决方案,该项工作相关工作论文已发表在CIKM2022。期待大家试用和体验,如遇问题,也欢迎与我们讨论。

五、关于我们

阿里妈妈展示广告Match团队多年来致力于大规模检索技术。经过团队同学多年的努力与沉淀,发展并迭代了如TDM、JTM、BSAT以及NANN等多项核心检索技术。近年来,阿里妈妈展示广告Match与阿里妈妈预测引擎团队深度合作,逐步从算法单一视角迭代演变为算法与工程双视角迭代。在阿里妈妈预测引擎团队异构计算技术能力的加持下,进一步释放模型迭代的天花板。同时,从业务及算法视角反哺阿里妈妈预测引擎团队,进一步扩展了妈妈预测引擎团队技术能力的通用性。

相关链接

开源地址:

https://github.com/alibaba/nann

相关论文:

CIKM 2022 | Approximate Nearest Neighbor Search under Neural Similarity Metric for Large-Scale Recommendation

https://arxiv.org/pdf/2202.10226.pdf

代码开源!阿里妈妈展示广告Match底层技术架构最新进展相关推荐

  1. TDM到二向箔:阿里妈妈展示广告Match底层技术架构演进

    ▐ 1. 背景 随着整个互联网行业的发展,各大互联网公司作为服务提供商,积累了越来越多能够服务用户的优质内容,如电商领域的各类商品.视频领域丰富的视频.直播等.而随着信息量的爆炸,算法技术作为连接内容 ...

  2. 阿里妈妈展示广告预估校准技术演进之路

    来源:DataFunTalk本文约6500字,建议阅读15分钟 本文将介绍校准算法在阿里妈妈展示广告中的应用和演进,将从背景介绍.校准算法演进.工程实践以及总结展望四个方面展开介绍. 分享嘉宾:黄思光 ...

  3. 阿里妈妈展示广告召回之多场景建模算法

    丨目录: · 摘要 · 背景 · 方法 ·  实验分析 · 总结 · 参考文献 1. 摘要 工业推荐系统通常拥有多个业务场景,并需要同时为这些场景提供推荐服务.在召回阶段,从大量商品库中选出的个高质量 ...

  4. 阿里妈妈展示广告引擎动态算力再探索:面向业务收益的机器自适应调配

  5. 阿里妈妈展示广告粗排:面向链路一致性优化的端到端序学习模型

  6. 阿里妈妈品牌广告中的 NLP 算法实践

    导读:本次分享的主题为阿里妈妈品牌广告中的 NLP 算法实践,主要内容包括: 1. 品牌广告业务模式与技术架构的简要介绍 2. NLP 算法在品牌搜索广告中的实践,以两个具体的算法问题展开:品牌意图识 ...

  7. 阿里妈妈品牌广告价值建模

    丨目录: · 背景 · 价值衡量体系建设 · 模型技术探索 · 总结&展望 · 参考文献 ▐ 背景 阿里妈妈品牌广告通过高品质的展示资源位为广告主提供优质营销服务,帮助广告主提升其在客群中的品 ...

  8. 阿里妈妈搜索广告CTR模型的“瘦身”之路

    前言 随着号称"地表最强"的千亿参数规模GPT-3模型在 NLP 领域横扫各大数据榜单,大力出奇迹的暴力美学似乎成为了大数据场景建模的不二法门.搜索.推荐和广告场景的 CTR 模型 ...

  9. 2篇CIKM详解阿里妈妈搜索广告CTR模型如何低碳瘦身

    作为<阿里妈妈搜索广告CTR模型的"瘦身"之路>的姊妹篇,本文将结合团队发表的 CIKM 2021 两篇论文,详解我们在模型瘦身之路上的延续性思考与实践.姊妹篇已经总结 ...

最新文章

  1. 未启用当前数据库的 SQL Server Service Broker
  2. kaggle机器学习 入门
  3. 50 个 Bootstrap 插件
  4. #51CTO学院四周年#感谢有你,一路相伴
  5. 百度工程师带来干货分享,助你转型AI应用工程师!
  6. java面试题 垃圾回收机制 GC BAT面试题系列 基础篇(十四)
  7. uniapp全局数据(全局url、全局openId)
  8. SQL Server 数据库之视图
  9. 怎么从视频中提取音频文件?
  10. IBM Verse On-Premises 1.0.7发布
  11. 于宙:我们这一代人的困惑
  12. 分布式一致性协议:拜占庭将军问题
  13. 自己手写一个RPC,实现远程调用功能(基于netty、反射和代理)
  14. 什么是云仓一件代发?电商物流云仓,新疆云仓
  15. echarts柱状图顶部与柱体中同时显示数值
  16. MongoDB配置复制集和分片!!!
  17. [ROS2] map_server加载地图文件的三种模式
  18. 12对胸椎对应体表标志_第一节 胸部的体表标志
  19. 记事本不好用?Sublime中文版等着你
  20. 什么是NLP思维逻辑层次

热门文章

  1. JAVA基础 :数据类型
  2. Linux配置MySQL远程访问权限
  3. 共轭函数两个性质的证明
  4. MyBatis之Base64加密数据源
  5. Python之base64加密解密
  6. 丁鹿学堂:前端http面试总结,状态码详解
  7. 临床试验数据的标准化之路,究竟还有多远?
  8. 关于springboot整合mybatisplus中找不到数据库中的表的问题
  9. ant jmeter 原理_Ant+Jmeter自动化接口测试
  10. 笔耕不辍,学习习惯?兴趣爱好?源于对真知的热爱?