1、腾讯广告基于Flink的实时特征平台建设宋奇腾讯大数据工程师特征平台概述特征计算和存储未来规划特征平台概述1.1 烟囱式特征链路的问题特征开发难繁杂的工程事务,浪费业务团队的人力,妨碍他们在特征数据本身的探索和调研特征应用难特异特征链路对大部分人而言是黑盒,特征含义模糊不清,模型选择和应用特征的效果全凭运气特征管控难特征链路运行状态未知,特征数据分散、规范各异,管控和维护难度高1.2 特征平台:数据和模型的中间桥梁目标:把数据快速、高效、正确地应用于模型1.3 腾讯广告-特征平台整体示意图Flink数据流特征生产Stream任务流特征组1流特征组2管控系统生产系统TDW 算子Lake算子IO类
2、算子序列算子统计算子生产类算子分析算子预览算子调试类算子DSLNotebook规划器批计算引擎优化器流计算引擎规划器优化器批量特征实时特征存储系统特征发布离线存储在线存储离线分析质量检测更多算子特征补录MarvelX-StorIceberg数据湖特征服务样本工程模型预测模型训练血缘追踪:数据 特征 模型DAG执行AdCache特征抽取特征抽取Label Joiner123Flink数据流特征生产Batch任务批特征组1批特征组24任务控制:版本发布、实例运维数据管理:特征回滚、质量检查特征计算和存储2.1 流批一体的特征计算 Python DSL可交互、声明式 DSL,降低特征开发难度2.1
3、流批一体的特征计算 Python DSL特征接口层统一,中间层解耦,执行层分引擎适配,降低业务理解与应用特征的难度特征业务场景算子库序列特征统计特征内容理解特征Match特征PV过滤数值分段2.1 流批一体的特征计算 Python DSL窗口统计特征(批场景)目标群体在广告上近 60 天,180 天内的曝光数优化:增量聚合,资源开销降低 70%用户根据业务诉求修改时间参数,平台负责流批引擎选择与解释优化2.1 流批一体的特征计算 Python DSL窗口统计特征(流场景)目标群体在广告上近 1小时,2小时内的曝光数优化:分片状态复用,资源开销降低 90%用户根据业务诉求修改时间参数,平台负责流
4、批引擎选择与解释优化2.2 实时内容理解特征计算场景优化业务举例:商品特征是广告侧的重要特征,如果广告创建时未关联商品库,需要对创意素材(图片、视频、落地页)做内容理解后,关联到最相似的商品 ID,再在商品库检索得到商品类目、商品属性等信息作为特征值痛点:实时串联调用各个算法模型(如语音识别、图片OCR、视频抽帧)生产内容理解类特征在工程上缺乏一个成熟易用的解决方案,但特征诉求越来越大2.2 实时内容理解特征计算场景优化挑战点:异步执行+状态管理+算子隔离调度依赖管理、容错重试、平滑请求(削峰填谷)、服务缓存、异常服务节点降级 2.2 实时内容理解特征计算场景优化1.使用 Flink Asyn
5、cIO 对大量外部服务进行异步调用2.把广告流水与 DAG 节点的大状态托管给 Flink Keyed State 管理3.实时收集运行时信息对 DAG 进行动态裁剪,确保质量参差不齐的节点间不会互相影响,避免 Flink反压异步 DAG 计算引擎2.2 实时内容理解特征计算场景优化使用同一套 DSL 描述,一致易用的交互式开发体验用户也使用统一的 Python DSL 描述内容理解特征的生产逻辑(如预处理、后处理、模型调用等),和常规的统计、序列等特征生产一样的开发体验2.3 流批一体的特征存储特征数据存储的挑战点1.生产来源多样,近千个数据源同时更新2.更新方式多样,Upsert/Repl
6、ace/Append3.查询模式多样,如增量数据实时在线发布、变化数据分钟级异常回滚、全量数据统计分析等4.版本管理灵活,以年为单位的版本回溯、回滚、修正和回补2.3 流批一体的特征存储特征存储的业务诉求Iceberg 社区版/腾讯内部版本PaimonHudi主键 Upsert部分列更新上千特征(上千列),每个特征有自己的版本,单独更新高并发写入多特征生产流同时更新一张表多模式查询分支化管理与演进记录与管理上百个特征版本分支,并支持对任意历史版本进行更新演进容易定制化扩展现有的数据湖技术能较好地契合大部分特征存储的需求,但无法同时满足,出于扩展性和腾讯大数据生态的兼容性两方面考虑,使用 Ice