NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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:深度学习在腾讯广告推荐系统中的实践


公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2020-10-27 14:002185

评论

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

五种JavaScript 中的高级异常处理方法

这我可不懂

JavaScript

APP开发者的得力助手:Mobpush六大功能助力实现精准推动服务

MobTech袤博科技

智能推送

英特尔为先进科技注入AI动力,帮助客户赢在AI时代

E科讯

Serverless 数仓技术与挑战(内含 PPT 下载)

Databend

10分钟设置免费海外远程桌面

亚马逊云科技 (Amazon Web Services)

Waves 14 Complete for Mac(后期混音效果全套插件)v2023.08.09激活版

mac

苹果mac Windows软件 Waves 14 Complete 后期混音效果全套插件

技术分享| anyRTC音视频混流技术解析

anyRTC开发者

音视频 视频会议 音视频混流 图像合成 音频合成

低代码助力企业数字化转型

高端章鱼哥

低代码 数字化转型

再也不担心没有测试币了,PandaBridge跨链桥随时兑换无压力

加密先生

跨链桥

私有云有哪些特点,与公有云有什么关系

青椒云云电脑

私有云

推送翻车名场面——Mobpush的推送修改/撤回帮你避免翻车

MobTech袤博科技

观测云产品更新 | 优化日志数据转发、索引绑定、基础设施自定义等

观测云

可观测性用观测云

DaaS到底是什么 为什么越来越多人在用云桌面办公

青椒云云电脑

云桌面

传统私有云系统存在哪些问题

青椒云云电脑

私有云 云厂商

中国私有云未来演进方向

青椒云云电脑

私有云

入门指南:GPU云服务器用途一览

青椒云云电脑

云服务器

数据库OpenTenBase和操作系统OpenCloudOS获信通院Oscar开源尖峰奖

Geek_2d6073

文心一言 VS 讯飞星火 VS chatgpt (98)-- 算法导论9.3 4题

福大大架构师每日一题

福大大架构师每日一题

iOS应用程序数据保护:如何保护iOS应用程序中的图片、资源和敏感数据

基于云服务器 EC2 的云上堡垒机的设计和自动化实现

亚马逊云科技 (Amazon Web Services)

自动化 Amazon EC2

学生PC怎么选?云电脑 不买高价硬件也能畅享高配

青椒云云电脑

云电脑

私有云架构设计原理

青椒云云电脑

云厂商

有一个新工具,能让程序员变成高手,优雅撸它!

树上有只程序猿

低代码 应用开发 JNPF

元服务助力肉牛产业供应链创新发展,解决“最后一公里”难题

最新动态

卡奥斯第二届1024程序员节正式启动!

Openlab_cosmoplat

1024 1024程序员节 程序员节

语音识别技术:现状、前景与挑战

来自四九城儿

虹口有数丨上海市虹口区“一网统管”新解法

浪潮云

云计算

智能时代的“发动机升级”:数据中心十年之变

脑极体

数据中心

选择MobPush的三大理由

MobTech袤博科技

智能推送

2023年前端流行什么技术和框架了?

互联网工科生

vue.js 前端框架 vue3.0

开源协同创新,加速云计算应用

华为云开源

开源 云原生 前端 华为云 低代码前端

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