写点什么

Angel:深度学习在腾讯广告推荐系统中的实践

  • 2020-10-27
  • 本文字数:5166 字

    阅读完需:约 17 分钟

Angel:深度学习在腾讯广告推荐系统中的实践

导读: Angel 是腾讯自研的分布式高性能的机器学习平台,支持机器学习、深度学习、图计算以及联邦学习等场景。Angel 的深度学习平台已应用在腾讯的很多个场景中。所以今天会为大家介绍 Angel:深度学习在腾讯广告推荐系统中的应用实践,介绍的内容会围绕着下面几点展开。


  • Angel 机器学习平台

  • 广告推荐系统与模型

  • 模型训练和优化

  • 优化效果

01 Angel 机器学习平台

1. Angel 机器学习平台架构


Angel 机器学习平台是腾讯自研的基于传统 Parameter Server 架构的高性能分布式的机器学习平台如图 1 所示,详细架构图如图 2 所示。它是一个全栈机器学习平台,支持特征工程、模型训练、模型服务、参数调优等,同时支持机器学习、深度学习、图计算和联邦学习等场景。已经应用在众多业务如腾讯内部广告、金融和社交等场景,吸引了包括华为、新浪、小米等 100 多家外部公司的用户和开发者。



Fig1 Angel 机器学习平台



Fig2 Angel 机器学习平台架构图


Angel 机器学习平台设计时就考虑到了很多问题,首先是易用性,Angel 机器学习平台编程接口简单,可快速上手使用,支持训练数据和模型的自动化切分,减少用户的干预,简单易用。然后是可扩展性方面,Angel 提供了 PsFun 接口,继承特定的类可实现自定义参数更新逻辑和自定义数据格式和模型切分方式等。之后是灵活性,Angel 实现了 ANGEL_PS_WORKER 和 ANGEL_PS_SERVICE 两种模式,ANGEL_PS_WORKER 模式下模型的训练和推理服务由 Angel 平台自身的 PS 和 Worker 完成,这种模式主打速度。而 ANGEL_PS_SERVICE 模式下,Angel 只启动 Master 和 PS,具体的计算交给其他计算平台(如 Spark,TensorFlow)负责,Angel 只负责提供 Parameter Server 的功能,主打生态来扩展 Angel 机器学习平台的生态位。Angel 通信模式支持 BSP、SSP、ASP 等通信协议,满足各种复杂的实际通信环境的要求。最后是稳定性,Angel 的 PS 容错采用 CheckPoint 模式,Angel 每隔一段时间会将 PS 承载的参数写入到分布式存储系统中,如果某个 PS 实例挂掉,PS 会读取最后一个 CheckPoint 重新进行服务。Angel 的 Worker 容错方面,如果 Work 挂掉,Master 会重新启动一个 Work 实例,该实例会从 Master 上获取挂掉时参数迭代信息。Angel 的 Master 任务信息也会定期存储到分布式存储系统中,如果 Mater 挂掉,会借助 Yarn Master 重启机制重新拉起一个 Master 并加载信息从之前的断点开始任务。Angel 还有有慢 work 检测机制,如果某个 Work 运行过慢其任务会被调度到其他的 Work 上进行。


Angel 机器学习平台任务提交执行简单,具体步骤如图 3 所示,进入 Cient 后,启动一个 PS 实例,该 PS 会从 Client 端加载模型,之后 Client 会启动多个 Work,Work 会加载训练数据开始训练和学习,push 和 pull 会进行参数的拉取和更新,训练完成后将模型存入指定的路径。



Fig3 Angel 机器学习平台提交执行流程图


Angel 机器学习平台在代码结构设计上做了很多的抽象,这样的设计方式可扩展性强,整个结构主要分为四层如图 4 所示。核心层(Angel-Core)是基础层,主要包括 PSAgent、PSServer、Work、Network 和 Storage 等。机器学习层(Angel-ML)提供基础数据类型和方法,同时用户可根据 PsFunc 定义自己的方法把私有模型接入。接口层(Angel-Client)可插拔式扩展,支持多种用途比如接入 TensorFlow 和 pyTorch 等。算法层(Angel-MLLib)提供了封装好的算法如 GBDT、SVM 等。



Fig4 Angel 机器学习的代码结构


2. Angel 机器学习平台在深度学习方向上的拓展和应用


深度学习常用的分布式计算范式有两种,分别是 MPI ( 基于消息模型的通信模式 ) 和 Parameter Server,如图 5 所示。这两种范式均在 Angel 平台上有实现,对于 Parameter Server 范式的实现如图 6 所示,Angel Work 可通过 Native C++的 API 接口接入常用的深度学习的 OP 如 PyTorch 或者 Tensorflow 等,在训练的起始端 Angel PS 会把模型 Push 到每个 Worker 上,Worker 会加载到对应的 OP 上进行训练,每次训练完成后会将梯度信息回传到 PS 上进行融合,以及应用优化器得到更新的参数,完成后又会分发到每个 Worker 上,重复上述过程直到训练结束,最终将模型保存到指定路径。这种方案 Angel PS 提供了一个梯度 PS 的控制器,来接入多个分布式的 Worker,每个 Worker 上可以运行一些通用的深度学习框架例,这种方案 PyTorch 版本的工作我们已经完成,并已经开源了(PyTorch on Angel)。另外一种是 MPI AllReduce 范式如图 7 所示,这种范式梯度信息是通过 AllReduce 方法进行融合的,在这种范式的实现上,Angel PS 是一个进程控制器,会在每个 Work 上拉起一个进程,这个进程可以是 PyTorch 或者是 Tensorflow 等进程,这种范式对用户侵入少,用户开发的算法不需要太多的修改即可接入到 Angel 平台进行训练。



MPI 范式



Parmeter Server 范式


Fig5 深度学习领域分布式计算常用的两种范式



Fig6 Parameter Server 范式在 Angel 上的实现



Fig7 Allreduce 范式在 Angel 上的实现

02 广告推荐系统与模型

1. 腾讯的广告推荐系统


腾讯大数据示意图,如图 8 所示,在线业务的数据如微信游戏等会通过消息中间件实时地传递到中台系统,中台系统包括实时计算、离线计算、调度系统和分布式存储,这些数据有的会进行实时计算有的会进行离线计算,数据的应用也是从消息中间件中获取其需要的数据。



Fig8 腾讯大数据平台


腾讯的推荐广告推荐系统业务分层如图 9 所示,用户发送一个请求后会去拉取用户地画像特征,之后会对广告库的广告进行一个初步地排序和打分,打分之后会提取用户地特征信息,同时将广告库的 ID 数量降为百级别,在这个百级范围内会有一个精细的排序,完成后将广告推送给用户。整个推荐系统面临着下面的几大挑战,首先是数据来源多样化,数据既有线上数据也有历史落盘数据。其次是数据的格式多元化,包括用户信息、Item 信息、点击率和图像等数据的多元格式。然后是增量数据多,用户请求频繁,广告库也在不断更新中。最后是训练任务多元化,整个推荐系统涉及到粗排、精排、图像检测和 OCR 等任务。为了解决上述问题,我们在精准排序任务上开发了一整套的软件框架"智凌"(基于 TensorFlow)来满足训练需求。



Fig9 腾讯广告推荐系统


"智凌"框架结构如图 10 所示,该框架最底层 C++ core 封装了 MQ receiver 和深度学习框架的一些 OP 类,最典型的是 TensorFlow 的 dataset 类,通过封装 tensorflow 的 dataset 类来提供从 MQ 获取数据的能力。数据抽象和处理在 C++和 Python 上完成。然后是深度学习的 framework(tensorflow)层提供各种深度学习的库。最后是具体的应用模型如 DSSM、VLAD 和一些图像算法的模型等。"智凌"软件框架具有算法封装完整、开发新模型较快、数据和算法隔离解耦较好、预处理逻辑方便修改和更新及兼容性好等优点,但同时对于 Tensorflow 框架侵入性修改多、单机多卡性能差、多机分布式不支持、算法和 OP 层面优化不够完全等缺点。图 11 是"智凌"在基础数据上的训练流程图,从图中看到从消息中间件中读取数据到本地的 DataQueue 中,DataQueue 给每个在 GPU 节点上的模型分发 Batch 数据然后进行训练,训练完成后读取到 CPU 进行梯度融合和备份然后分发给各个 GPU 进行再训练,这种设计是面向单机结构的设计,CPU 去实现梯度的融合和优化器的功能,CPU 资源消耗大,这种设计很不合理,针对这种情况我们做了很多的优化后面会向大家介绍。



Fig10 "智凌"框架结构



Fig11 "智凌"在基础数据上的训练流程图


2. 腾讯的广告推荐系统中的模型


DSSM 增强语义模型如图 12,在这里我们用该模型来计算用户和推荐 ID 之间的相关性并在此基础上计算用户对给定推荐 ID 的点击率,相关性和点击率计算公式分别是:




DSSM 模型较为简单,分为 Quey Id 和 Item Id 并表达为低维语义向量,然后通过余弦距离来计算两个语义向量之间的距离。通过模型计算 Query 和 Item 之间的相关性,打分最高点就是我们要推荐的 Item, 广告推荐系统中的 DSSM 模型要支持以下一些新的需求点:


  • ID 类特征维度亿级别;

  • 变化快,每周有 25%是新条目,支持增量训练。



Fig12 DSSM 模型


VLAD/NetVLAD/NeXtVLAD 等模型我们主要用来判断两个广告之间的距离关系,传统的 VLAD 可以理解为一个聚类合并的模型,其向量计算公式为:



NeXtVLAD 如图 13 则通过将 ak符号函数变成一个可导函数来得到一个更好距离效果,NeXtVLAD 的向量计算公式为:



其中,



Fig13 NeXtVLAD 模型


YOLO V3 如图 14 是图像处理模型,在这里我们将其应用在 OCR 业务最前端做初检,它的特点是图片输入尺寸大(608*608,1024*1024),也因此 YOLO 模型的 Loss 部分占据比较大的计算。



Fig14 YOLO V3 模型

03 模型训练和优化

1. 数据流优化


前面的介绍中我们知道"智凌"软件框架是单管道数据流,现在我们将其优化为多管道如图 15 所示,即通过多机多数据流来解决单机 IO 瓶颈问题。原来的单管道数据中会有 DataQueue,如果数据流很大会对 IO 造成很大的压力,优化为多对管道后为每一个训练进程 GPU 定义了一个 DataQueue,通过这种分布式方法来有效解决 IO 瓶颈问题。这种情况下的管理工作是通过 Angel PS(AllReduce 版本)进程控制器来进行管理的。



Fig15 "智凌"的多管道结构


2. Embedding 计算优化


Embedding Lookup 过程常会碰到如果在 hash 之前进行 SparseFillEmptyRows 操做会对空行填充默认值,增加过多的字符串操做,优化后我们先做 hash 操做然后再做 SparseFillEmptyRows 操做,去除耗时过多的字符串操作 ( 百万级别 ),节省 CPU 算力来提升 QPS,此优化单卡性能约有 6%的提升。


3. 模型算法层面优化


YOLO 的 Loss 计算量较大,我们对其进行了特殊的优化。YOLO 模型有三个 Feature map 层,传统寻找正负样本的时候,真正的 Bounding box 会在 Feature map 上会做一个遍历比较,先横向遍历然后再纵向遍历,遍历的过程中寻找 Feature map 点和 Bounding box IOU 最大的值作为正样本。因为图像的 size 很大,所以 Feature map 也很大,这使计算 Loss 耗时过长。计算 Loss 优化方法如下,由于 x 轴方向上的块和 y 轴方向上的块关于对角线对称,所以我们计算 Feature map 和 Bounding box 的 IOU 的时候按照中轴线对角点方向进行遍历如图 16 所示。先计算对角线方向上的的块,然后再计算每个 feature map 块两边的块。这种优化方法可减少大量的计算量。另外,在某个点上向两边遍历所有的 Feature map 块的时候有一些计算技巧特点,比如往右上开始遍历的时候,x 轴与 y 轴是关于对角线对称变化的,我们可以预估这种变化,从而有意识地去寻找最大的 Anchor 位置,然后丢弃其他信息,通过这样的优化方法也可以大量的减少计算量。我么通过上述方法优化了 Loss 计算之后单卡性能有约 10%的提升。



Fig16 YOLO V3 优化示意图

04 优化效果

通过在模型层面和数据层面的优化,以及 Angel 平台应用到整个控制流程中,DSSM 的单卡性能有 33 倍的提升,VLAD 有 22 倍的提升,YOLO 有 2.5 倍的提升如图 17 所示。图 18、19、20 是详细测评结果,它们有三种类型的测试模式,分别是训练数据通过 TDbank(腾讯自研的 MQ 系统)线上拉取(时延包括网络传输、数据 packing 等);本地数据读取,训练数据预先存放本地磁盘(时延包括磁盘 IO,数据映射预处理);Benchmark 模式训练数据放内存(时延仅包括数据映射预处理)。从图 18 中看到 Benchmark 不考虑数据读取前的延时基本能把整个系统计的算能力跑满这是一个准线性地提升。考虑到实际的数据是从 MQ 中读取,在 1 卡中提升不大 TPS 为 3000 多,2 卡 QPS 为 4000 多,两机两卡 TPS 达到 6000 多,所以随着多机越多,训练性能达到线性的提升, VLAD-CTR 模型的测试具有相同的结果。YOLO V3 优化后 1 机 1 卡有 2.5 倍的性能提升,1 机 8 卡有 7.2 倍的提升。



Fig17 优化后的性能提升结果



Fig18 优化后的 DSSM-CVR 模型性能提升结果



Fig19 优化后的 VLAD-CTR 模型性能提升结果



Fig20 优化后的 YOLO V3 模型性能提升结果

05 总结

今天主要和大家分享了三部分的内容,第一部分内容是介绍了腾讯的 Angel 机器学习平台和其在深度学习方向上的拓展和应用,第二部分的内容是介绍了腾讯广告推荐系统的特点和常用模型,最后一部分的内容介绍了 Angel 深度学习在腾讯广告推荐系统中的应用,模型训练和优化,以及取得的效果。


今天的分享就到这里,谢谢大家。


作者介绍


郭跃超,腾讯应用研究员


郭跃超,毕业于北京大学,主要研究方向是异构加速计算,分布式系统的设计开发和优化,语音/NLP 等领域的算法优化等。目前在腾讯主要负责 Angel 平台的深度学习方面的新技术研究,开发和业务场景的落地应用。


本文来自 DataFunTalk


原文链接


Angel:深度学习在腾讯广告推荐系统中的实践


2020-10-27 14:002714

评论

发布
暂无评论
发现更多内容

Amazon Q | 融会贯通的 AI 开发助手来了!

亚马逊云科技 (Amazon Web Services)

人工智能 re:Invent 生成式人工智能 Amazon Q Amazon CodeCatalyst

克魔助手:方便查看iPhone应用实时日志和奔溃日志工具

mac电脑强大电脑风扇转速管理:Macs Fan Control Pro激活码中文版

胖墩儿不胖y

Mac软件 电脑风扇软件 风扇转速软件

淘宝API与大数据技术在电商行业的应用研究

技术冰糖葫芦

API

MES系统中的标准工时管理

万界星空科技

低代码 低代码开发 低代码平台 mes 低代码云MES

记录一次RPC服务有损上线的分析过程

京东科技开发者

Topaz Video AI for mac(视频增强和修复工具) 4.0.8完整激活版

mac

苹果mac Windows软件 Topaz Video AI

The Next Generation of Apache Flink

Apache Flink

大数据 flink 实时计算

语音数据集:推动智能语音技术发展的关键驱动力

来自四九城儿

ubuntu20.4服务器安装mysql社区版并开放3306端口

百度搜索:蓝易云

MySQL 云计算 Linux ubuntu 运维

火山引擎边缘云获“2023边缘计算年度领航企业”及“最佳CDN创新企业”等多项荣誉

火山引擎边缘云

CDN 边缘计算 边缘云 CDN技术

软通咨询助力某新能源头部企业迈向高效数智化时代,塑造行业新典范

软通咨询

数据智能 数字化咨询

语音数据集:探索、挑战与应用

来自四九城儿

万界星空科技MES系统中的工时管理

万界星空科技

MES系统 mes 工时管理 万界星空科技 工时管理系统

将 Python 和 Rust 融合在一起,为 pyQuil® 4.0 带来和谐

Swift社区

rust Python Monad

软件开发

Geek_8da502

Solana 生态铭文跨链桥 Sobit 是何神圣?其场外白名单已达到1200U

西柚子

在Mac上,按Command-X键无法剪切怎么办?

mac大玩家j

Mac软件教程 好用的软件分享

如何在敏捷项目中实现高效测试?

敏捷开发

项目管理 敏捷开发 测试左移 测试自动化 bug管理

知识图谱技术在金融领域的分析和应用

悦数图数据库

图数据库 知识图谱

【Linux】硬件性能测试工具安装。

百度搜索:蓝易云

云计算 Linux 运维 服务器 云服务器

全球校园人工智能算法精英大赛-AIOT应用赛项圆满落幕

AIRIOT

人工智能 IoT AIOT

ETLCloud X 明道云实现无缝数据连接

RestCloud

数据同步 ETL 明道云

创新驱动数字经济发展,融云获评「2023 数字经济隐形独角兽」

融云 RongCloud

数字化转型 数字经济 办公 融云 政企

IPQ6000 IPQ6010 VS IPQ5018|A Comprehensive Comparison: Evaluating Wallys' WiFi 6 SoCs Offering

wallyslilly

IPQ6010 IPQ6000 ipq5018

TI 专访 Merlin Protocol:构建在比特币网络上的资产适配协议

TerpLayer

万界星空科技智能制造平台的工时管理系统

万界星空科技

MES系统 mes 万界星空科技 工时管理系统

淘宝API和天猫SKU API在推动电子商务创新中的作用研究

技术冰糖葫芦

API

做好数据管理体系 发挥企业数据乘数效应

用友BIP

数据

Angel:深度学习在腾讯广告推荐系统中的实践_AI&大模型_DataFunTalk_InfoQ精选文章