限时领|《AI 百问百答》专栏课+实体书(包邮)! 了解详情
写点什么

为什么推给我的广告都是我想要的?腾讯多模型特征工程解析背后奥秘

  • 2019-04-23
  • 本文字数:4947 字

    阅读完需:约 16 分钟

为什么推给我的广告都是我想要的?腾讯多模型特征工程解析背后奥秘

大数据与深度学习的应用,我们每个人随口都能说上来两个,像淘宝的精准推送,互联网广告的精准投放等等,这些都是大数据与深度学习结合的产物。


在当前 AI+Big Data+Cloud Computing 的时代里,极大促进了人群的精准画像以及广告的精准投放,但是如果没有一个完整的体系架构,这些技术无法通过相互弥补来更大化的优化问题。为了系统化地解决广告系统在初选、精选阶段上多模型优化中对特征数据的需求,腾讯建设了统⼀的特征工程平台。


本次 InfoQ 采访到了腾讯广告特征工程负责人李彪老师,通过对行业的深入剖析,全方位阐述了特征生产、存储和计算等功能当前技术背景下的实现方法与重要性。同时,李彪老师还将会在此次 QCon 广州 【广告系统实践专题】带来多模型特征工程系统化解决方案的相关演讲。


专访内容

1、腾讯当初做这个“统一的特征工程平台”的原因是什么,基于怎样的设计理念?请详细解释下“广告业务多模型特征工程”是一款怎样的产品。


广告系统是流量方、广告主与平台方之间三方博弈的激烈区域,为了平衡三方的利益,当今广告系统都在追求千人千面的广告体验,即精准投放并展示用户感兴趣的广告。在这个过程中,广告业务系统就需要实现精准的广告定向,同时还需要做好广告排序逻辑,并且要从系统性能的角度出发,将广告排序分为初排和精排两个阶段。在每个阶段中都会存在较多的模型,如广告定向阶段有人群扩展模型、自动定向模型、用户兴趣定向模型等,初排阶段有轻量级点击率预估模型(litectr)、轻量级转化预估模型(litecvr)等等,精排阶段有点击率预测模型、转化率预估模型、用户体验负反馈模型等等。


从机器学习模型角度出发,参考 Google 的 D. Sculley 在文章《Hidden Technical Debt in Machine Learning Systems》上所写到,在生产环境下将一个机器学习模型应用到业务上并发挥作用,纯粹应用到机器学习(文章里面用的是 ML Code)的只是很少的部分工作,还存在很大部分的工作在处理特征数据的生产、存储、预处理、模型训练、评估和发布等,因此最近诞生了 SysML 这么个方向。


结合机器学习和系统方面的内容,Google 推出的 TensorFlow Extended (简称 TFX)系统,Facebook 推出了 FBLearner Flow 系统,Uber 搭建了米开朗琪罗系统,Apple 公司也在 Sigmod 2019 上发表了一篇《Data Platform for Machine Learning》的论文。


如上面所述,当然可以是根据每个模型所负责的方向单独来搭建一套机器学习系统,但是对于一个广告业务来说,重复造轮是最浪费资源的行为,并且在性能优化上无法从全局角度考虑。因此腾讯统一建设了一套面向整体广告业务的机器学习平台。其中特征工程平台是机器学习平台下与特征相关的子系统,包括数据的接入、清洗、存储、预处理以及使用等,可以理解为解决了 TFX 系统里 Pre-Trainer 部分的工作。


2、随着大数据、机器学习等技术的快速发展,广告投放正在变得越来越精准,这些技术在腾讯广告业务多模型特征工程中得到了怎样的应用,技术亮点有哪些?


特征工程平台,或者也可以称作机器学习服务的数据平台,解决的是为各个模型(不论是广告定向、广告初排还是广告精排)在处理机器学习模型时所需要的数据研发平台,能够快速满足模型对特征数据的需求迭代。


腾讯特征工程平台的建设目标有:


  1. 简单易用,业务快速迭代。从模型方的角度来看,模型方同学使用特征数据时不用了解特征数据如何接入、数据存储在哪里、如何存储的、数据是如何去获取到的等等背后的逻辑,只需要简单地声明下我需要什么样的特征数据即可,如只要简单地配置说我需要特征 ,特征工程平台就会根据这个配置,在离线训练时生成包含这些特征的训练样本集,在线预测时会生成对应的预测输入。

  2. 保证数据质量。机器学习里最经典的一句话叫做"Garbage In, Garbage Out",因此为了保证模型的正常工作,就必须要保证输入模型数据的正确性。输入模型的数据主要分为两种,一种是离线训练用的 Training Data,一种是在线预测用的 Serving Data,需要时刻关注 Serving-Training Data 之间的 Skew(偏差),以及 Training Data 或者 Serving Data 的 Drift(漂移)。同时在如何避免、解决 Skew 问题上一直以来都存在着较大的挑战,我们也采取了各种措施来解决避免这块的问题,并取得了不错的成绩。

  3. 系统高性能,节约成本。最近的机器学习模型,特别是深度学习,由于网络结构复杂,网络参数非常多,为了保证模型的效果,通常需要海量的特征数据来进行模型训练。因此我们需要对特征数据的存储、计算等方面进行不断地优化并提升系统的吞吐量,从而节约成本。


当前腾讯建设了统一的前文统计特征生产框架、广告素材特征生产框架、特征仓库、训练样本生产框架以及在线特征服务等等众多完善的系统,初步实现了上述的三大目标,并在数据存储、数据访问计算以及任务管理调度方面做了大量有意义的优化。


3、腾讯广告业务多模型特征平台,在架构层面有着怎样的考量,包括特征生产、存储、离线训练和在线预测上的计算与调度等等?


从架构上,从下往上分为基础设施层、特征生产层、特征存储层、特征计算层以及最上层的特征应用层(即各个模型方)。特征工程平台主要是特征生产层、特征存储层和特征计算层,并在这三层之上提供了公共的任务调度模块和监控告警模块



  • 基础设施层,基于腾讯的大数据基础设施,包括 TDW 系统里的 Spark/HDFS/HBase/Hive/TDBank(类似于 Kafka 一样的消息队列系统),以及自研的 KV 系统 Marvel,列式存储格式 Dragon 以及 OLAP 引擎 Pivot。

  • 特征生产层,在底层基础设施上,存在有搭建了统一的前文统计特征生产框架 CF2 和广告素材特征生产框架 TerraStore

  • 特征存储层,基于特征生产层产生的特征或者其他团队所生产出来的特征(如语义特征、Embedding 特征等等),通过特征注册纳入到特征仓库里,然后根据后续特征计算层的需要,将特征仓库里的特征同步到离线训练需要的 KV 系统和在线预测所需要的 KV 系统,同时也提供了元数据管理、数据质量校验等功能。

  • 特征计算层,为模型方在调研环境提供特征补录、生产环境提供训练样本生产和在线预测提供预测输入等功能,并做到模型方只需简单配置就可以完成这些功能操作。

  • 特征应用层,即使用了特征计算层的各个模型。

  • 公共模块,在特征生产层、特征存储层以及特征计算层里开发了统一的任务调度系统–Hotwheels,对 Training/Serving Data 检测的 Skew/Drift,以及对数据质量进行校验熔断的监控告警系统 Eagle Eye。


4、在当前互联网“一切求快”的效率面前,特征的选择以及上线可以说非常的重要,但是面对大体量的数据规模,开发者不得不将很多的精力放在数据的接入、存储以及访问上,导致整体项目的进度滞后。那么腾讯特征工程平台是如何帮助开发者提升特征上线效率的?还请结合具体的功能实例或案例进行说明。


对的,上文也提到了建设特征工程平台的三大目标中最主要的就是"简单易用,业务快速迭代",因此对于模型方来说,根本不需要关注数据接入、存储和访问等与大数据研发相关的问题,只需要简单配置下就可以完成在离线特征调研和特征上线,极大提升了特征上线的效率。


举例下,以 litectr 为例,假设现在用了如下的 $f_1, f_2, \cdots, f_m



f_n$,litectr 的模型方可以采取如下的步骤:


  1. 先到特征仓库里看下 这个特征长什么样,数据的分布情况如何。

  2. 初步判断特征 有效果,再到特征仓库里看下这个特征在其它模型上的应用情况如何,包括离线调研时对模型业务的效果如何,上线之后线上 ABTest 的效果如何等。

  3. 其他模型使用特征 有效果的话,那么就可以开始发起离线调研任务。使用特征计算层里的特征补录模块的功能,只需要简单的配置下,在 litectr 中已存在包括 个特征的训练样本数据集上,再增加特征 ,生产出来包括有 个特征的训练样本数据集,然后将之前的只有 个特征的训练样本数据集和新增了 的训练样本数据集一起给到模型训练模块去训练,并通过离线评测模型的效果(如离线 AUC 等等)来评估新增特征 的效果。

  4. 在离线评测新增特征 效果不错,那么由特征工程平台里通过数据同步模块将特征仓库里的特征 发布到离线训练所需要的 KV 库和在线预测所需要的 KV 库里去。当前这里是假设特征还没有被其它模型所使用的情况下,若其它模型已经在生产环境中使用了,这一步是可以省略掉的。

  5. 在训练样本生产数据流里增加配置需要特征 和对应的特征抽取逻辑(若没有定制化的操作,可以使用系统默认的特征抽取器),然后就可以得到包括有 的训练样本数据了;同样也一样在在线预测模块里增加配置需要特征 和对应的特征抽取逻辑即可。从而完成了整个特征的上线操作,开启 ABTest 阶段,若效果非常不错的话,将这个特征全量从而完成了一次特征上线的迭代

  6. 在生产环境里使用起来了之后,我们自动会在监控报表系统 Eagle Eye 里增加了对 Training/Serving Data 的 Skew/Drift 的监控报表。


5、这样一套特征工程平台在实践的过程中有遇到过哪些挑战?对后续的业务有何参考价值?


遇见了很多的在大数据研发方面的挑战,这里简单举例下:


  1. 如何解决 Training/Serving Data 的 skew 问题,能否全部通过落地日志的方式来解决呢?落地日志会带来哪些弊端呢?

  2. 在技术栈里用到了 HBase 来作为 KV 存储系统,但是在海量存储和大并发下 GC 是瓶颈,如何来解决这块的问题来提升性能?

  3. 存在有海量的特征数据,使用什么文件格式能满足业务的需求并且节省存储成本?

  4. 由于有很多模型同时在一个平台里执行,如何解决多租户问题,如何保证任务管理分发的高可用和时效性?


通过一系列的努力,腾讯特征工程已经全部解决了上面的一系列问题。关于大数据研发的经验,特别是在存储、访问计算等领域内的经验,是完全可以同时应用到其他的业务上的,另外任务管理分发那里,这是一个通用的系统,可以推广在任何的业务使用上。


6、最后可以根据自身长期积累的研发经验来总结一下,如何做才能在广告系统中最大化数据的价值?


广告系统是一个典型的以数据为驱动的业务,数据在广告业务上的价值有如下几个方面:


  1. 广告定向(Targeting),即大家常说的精准广告定向,从广告主的角度来说这种方式能够有效触达潜在用户人群;从用户的角度来说,看到的广告都是自己所感兴趣的,而不会产生厌烦的情绪。

  2. 商业智能(Business Intelligence),基于 OLAP 等系统分析数据并输出报表,为各方提供决策所需要的数据。

  3. 机器智能(Machine Intelligence),即类似于特征数据一样,将数据应用到模型上,来提升模型的预测效果。


特征工程平台主要是将数据以特征的形式来通过机器智能来体现价值,模型预测效果好的话可以提升类似于广告点击率等业务指标,从而使得用户观看体验、广告主的 ROI、平台方的 RPM 都会往有益的方向发展,也极大发挥了数据的价值。


7、开源是现在的一大趋势,我们特征工程平台会有开源的想法吗,还是已经有了开源的动作?


当前腾讯的特征工程平台同各个模型方结合的都比较紧密,后续会先将与业务关联并非紧密的部分提炼出来,如列式存储系统、任务管理分发系统等,之后会考虑先在腾讯内部的开源系统进行开源,然后根据反馈情况再考虑到业界开源,一起建设好简单易用、高性能、高可用的特征工程平台。

嘉宾介绍

10 年+ 研发和广告系统架构设计经验,先后负责过广告检索系统、⽤户画像系统,最近一直负责特征⼯程平台建设,解决广告业务中多模型对特征的存储、计算方⾯的问题,致力于通过⼤数据研发解决机器学习中数据⼯程问题,提升模型优化的效率和效果,发挥数据的价值。对大数据研发、分布式存储计算、深度学习系统建设有着浓厚的兴趣。


5 月 25-28 日,QCon 全球软件开发大会广州站,李彪老师将会现场进行【广告业务多模型特征工程系统化解决方案】相关内容的分享,通过简要介绍广告系统如何使用模型特征优化业务指标以及特征工程平台的架构等内容,为现场观众讲解如何系统化地解决多模型的特征共享等问题。


感兴趣的同学扫描下方二维码或点击阅读原文可了解大会详情,当前正处于 9 折阶段,咨询可致电鱼丸:13269078023(微信同号)。



链接:https://2019.qconguangzhou.com/presentation/1502


2019-04-23 17:217210
用户头像
佘磊 策划编辑

发布了 50 篇内容, 共 22.4 次阅读, 收获喜欢 76 次。

关注

评论

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

2021预备秋招:Java面试必看的1000道面试解析,助你通过大厂面试

Java 程序员 架构 面试 后端

技术干货 | 应用性能提升 70%,探究 mPaaS 全链路压测的实现原理和实施路径

蚂蚁集团移动开发平台 mPaaS

压测 网关 移动开发 mPaaS

脱钩!打工人都觉得香的Java程序员306道面试秘笈,爆肝

Java~~~

Java spring 架构 面试 微服务

五分钟搞定Docker安装ElasticSearch

咔咔

Docker 死磕Elasticsearch

八家知名大厂联合手写的Java面试手册刚上线!竟就到达巅峰?

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

不愧是阿里内部“SpringCloudAlibaba学习笔记”这细节讲解,神了

Java 程序员 架构 微服务 计算机

Python代码阅读(第22篇):从源字典映射出新字典

Felix

Python 编程 Code Programing 阅读代码

【Google Cloud】「Contact Center AI」引领我们走向高度智能客服的时代

码界西柚

话题王者 8月日更 Contact Center AI Google Cloud

良心!鹅厂强推的SpringCloud、Nginx高并发编程

Java~~~

Java nginx spring 架构 面试

MySQL到ClickHouse的高速公路-MaterializeMySQL引擎

华为云数据库小助手

sql GaussDB dba 华为云数据库 DAS

别再找我给你重启程序啦!让你supervisor帮你搞定

Java 程序员 架构 后端

GitHub惊现!全网首份开源的深入理解JVMG1GC的算法与实现手册

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

封笔之作!阿里P8手写的Java高手是怎样练成的原理方法与实践笔记

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

千金难求!火遍GitHub的这份阿里Java面试汇总已上热搜

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

vivo全球商城时光机 - 大型促销活动保障利器

vivo互联网技术

电商平台 优惠券 亿级架构设计 促销系统

牛皮了!华为世界顶级Linux大牛总结出了3788页进阶笔记

Java~~~

Java Linux 架构 面试 运维

阿里P8整理出SQL笔记:收获不止SOL优化抓住SQL的本质

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

阿里被转载上100W次的Java面试题教程!已助我拿下9家大厂offer

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

爆料!前华为微服务专家纯手打500页落地架构实战笔记,已开源

Java~~~

Java spring 架构 面试 微服务

Github上标星250k的阿里Java面试复盘手册,看完竟如此的无敌?

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

阿里内部流传的JDK源码剖析手册!GitHub已获上千万的访问量

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

在GitHub发布秒获百万访问!就凭这份Java程序性能优化实战笔记?

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

Github惊现神作,这份算法宝典让你横扫各大厂算法面试题

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

IM技术分享:万人群聊消息投递方案的思考和实践

JackJiang

即时通讯 IM 群聊

2W字!详解20道Redis经典面试题!(珍藏版)

Java redis 架构 后端 计算机

阿里五位大佬总结操作系统+程序员必知硬核知识离线版pdf火了

Java~~~

Java 架构 面试 操作系统 网络

反向压力

程序员鱼皮

架构 系统设计 大前端 后端 实时计算

Vue进阶(八十五):vue-router Hash模式跳转及懒加载

No Silver Bullet

Vue 路由 8月日更

卧 底 人 类 高 质 量 A I 公 司

白洞计划

啥?阿里DBA团队总监把MySQL 性能调优 金字塔,写进了800页笔记?

Java~~~

Java MySQL 数据库 架构 面试

宇宙级计算机大佬吐血整理出2224页计算机系统文档(离线版)

Java~~~

Java 架构 面试 TCP 操作系统

为什么推给我的广告都是我想要的?腾讯多模型特征工程解析背后奥秘_架构_佘磊_InfoQ精选文章