🙋🏻♀️编者按:本篇是支付宝体验科技推出的第一篇客户端相关文章,后续将持续分享该领域的技术干货。
传统的数据特征获取方式在时效性、丰富度、易用性等方面存在一些挑战,而端具备天然的分布式,能实时感知用户操作动线与时空环境信息,可以有效解决这些问题。本篇中,蚂蚁集团客户端开发工程师朱木、问墨将为大家蚂蚁超实时端特征中心的建设和实践,欢迎查阅~
支付宝端智能特征的挑战
近年来,随着人工智能技术的快速发展和应用,帮助业务取得了显著的效果提升。有这么一句话在业界广泛流传:数据和特征决定了机器学习的上限,大规模搜索、推荐、广告算法模型的特征输入常常引入用户行为、时空、设备等特征,在用户意图建模上扮演着重要角色。但是传统的数据特征获取方式存在以下几个方面的挑战,为后续效果提升带来较大挑战:
- 特征时效性:
- 传统的行为数据获取使用埋点,埋点上报到云端,通常有分钟级别延迟。
- 服务端通过实时计算引擎解析,存在任务延迟,导致实时特征进一步延迟。
- 特征丰富度:
- 缺少滑动等更加细粒度的用户行为数据。
- 埋点之间关联性不足,各个行为之间的关联基本通过 userid、itemid 等字段,诸如各页面之间的行为轨迹等数据难以准确获取,导致行为关联的数据较为缺失。
- 特征易用性:
- 对于埋点数据方案,任何埋点改动都需要依赖客户端发版或者业务发布,迭代周期长,研发效率低,
- 同时缺乏对用户行为、设备、时空等特征的统一维护,带来了使用上的不便。
- 特征计算资源:
- 在目前的数据链路中,全量用户行为关联时,需要对多个数据进行聚合,这在云端是非常消费资源的,尤其是实时数据流的聚合。
由于端具备天然的分布式,能实时感知用户操作动线与时空环境信息,可以更好的解决上诉问题,在这样的背景下,我们建设了蚂蚁超实时端特征中心,承载着提供丰富、准确、实时特征的使命。
整体架构
整体架构含括了端特征生产、端特征回流、端特征监控三部分:
端特征生产:定义了标准的特征生产流程,包含数据采集、特征加工、集成发布环节;提供性能好、扩展性高、动态化强、覆盖度全的特征采集计算能力;通过特征研发脚手架和产品化能力,支撑业务低成本研发。
端特征回流:在特征使用时,以采集任务为连接器驱动场景内特征数据采集、回流、使用的工作流程。支持全域用户行为作为触发时机,使用提供的毫秒级延时的网络请求夹带和秒级延时的 DataHighway 通道,采集指定特征进行实时回流存储,并通过端特征服务提供便捷、高并发的特征查询能力。
端特征监控:平台围绕着计算成功率、执行性能、回流时效性等维度建设了实时监控告警机制,保障业务和客户端的稳定运行。
方案简介
端特征生产
数据采集
随着支付宝的不断发展,APP 业务研发已经具备了 Native 、H5 、小程序等多种技术栈。为了精准的刻画用户行为,采集的数据需要满足采集覆盖全、数据准确性高等方面的要求。UEP 统一事件处理针对不同的技术栈采用动态切面、事件 Hook 、动态注入、集成内置等技术手段实现数据的自动化采集。当前已经实现了全域用户行为的采集能力,包括了访问、点击、曝光、滚动、输入、播放等行为。
特征计算
通过端上流式计算 + Python 脚本计算的有机结合,实现了特征高性能计算和动态下发的能力。
流式计算:对于序列、统计类型的行为特征,端上自研了轻量级的流式计算框架,解析动态下发的 DSL 语言,可以针对端数据进行切分、拼接、取参的操作,以及计次、求和、平均值、序列等多种聚合计算,在使用时,提供毫秒级的获取能力。脚本计算:对于复杂类的计算,通过端上脚本引擎执行。考虑到对于算法同学技术栈的友好性、主流开源库复用性等因素,我们在移动端上提供一个轻量、高性能且保持原生使用体验的 Python 虚拟机,通过脚本的动态下发,支持算法特征的快速迭代。配套的 Python 研发调试工具,提供了真机部署、断点调试、日志查看、数据mock等能力提升研发效率。算法使用脚本,一方面可以进行多路数据聚合、item加权等规则计算;另一方面支持端模型推理,端模型具备低延时、节省云端算力、保护隐私等显著优势,推理结果作为云端策略或模型特征输入,对于用户的实时理解起到了很好的帮助。通过端特征的计算能力,对于行为特征,除了传统的序列、统计特征、来源特征等,我们还支持了 App 级、场景级、页面级的全域用户行为特征,更加全面描述用户意图。对于复杂规则计算或者模型推理特征,通过预计算达到特征使用时毫秒级的获取能力。
端特征回流
在特征回流使用时,以采集任务为连接器驱动场景内特征数据采集、回流、使用的工作流程。整个链路包含了三个核心模块:端特征中心、触发事件、回流通道通道。支持用户从端特征中心勾选特征列表,基于全域用户行为作为触点,使用提供的毫秒级延时的网络请求夹带和秒级延时的 DataHighway 通道进行特征回流存储,并通过云端特征服务提供便捷、高并发的特征查询能力。
特征中心
研发好的特征会统一沉淀到端特征库,配置采集任务时,从特征中心勾选特征,由端特征服务 MaiFeature 统一提取特征。经过端智能团队和各业务团队的共同建设,目前已经沉淀了搜推广、支付、会员、智能金融等场景 200+ 特征,覆盖了设备、时空、用户行为、高阶意图等级等类别。
事件触发
特征回流时机和云端特征消费时数据的实时性息息相关,回流频率过高则会影响移动端性能以及增加云端计算存储压力,回流频率过低则会带来时效性不足的问题。因此我们建设了全域用户行为事件触发机制,根据每个业务的消费时机,设定自己业务的触发时机,满足时效性、性能等方面的要求。目前事件分为三类:单一事件:页面打开、页面关闭、按钮点击、内容曝光、网络请求发送等。复杂事件:通过端事件实时流式计算,匹配用户行为链路,满足条件时触发。意图事件:基于端模型计算产出的各类意图事件,例如访问意图、闲事意图、流失意图。
回流通道
我们提供了实时,准实时两条上报链路,分别为网络请求夹带和 DataHighway 。两条链路的设计初衷主要是基于支付宝 App 用户行为与算法业务场景的特性考虑,主要包括:1、网络请求夹带对于业务特定的特征快照类数据,业务需要基于这些特征做实时的推荐召回展示、并且该特征是该业务特有的,这种场景对时效要求非常高,而且特征数据较小,我们推荐使用夹带方案,将特征数据跟业务请求数据一起发送到服务端。在没有夹带能力之前,业务如果要传递一些特征信息就必须进行接口改造,并且每个业务需要根据自身特点做相应的改造,研发成本高和迭代周期长。作为改善,网络通道侧设计了网络请求夹带方案。在端侧我们提供了基于拦截机制的夹带特征方案,屏蔽了业务手动改造接入及对发版的依赖,提高了接入效率;同时网关侧,在接收到夹带数据后,会在全链路中进行数据的透传,避免了下层链路层层携带传递的改造成本。
2、DataHighway对应一些通用的特征数据,比如用户的行为时序,很多业务方都需要复用这些特征;同时这种特征数据尺寸比较较大,且实时性要求接受一定妥协。我们推荐使用 DataHighway 的旁路链路进行上报,这个链路复用行为采集上报链路。在云端将日志网关跟 DataHighway 系统打通,DataHighway 将特征数据写入数据存储供云端特征服务消费。由于是异步链路,对于主链路的影响也较小。
端特征监控
特征监控的核心目的有两个:1、保障业务的稳定性运行:特征的质量和模型推理的准确性息息相关。部分特征在生产时依赖业务绑定的内容 itemId 等信息,如若业务变动导致数据无法获取,则会导致模型的计算准确性大大降低。2、保障客户端的运行体验:端特征生产会占用部分端资源,特征计算耗时过长、客户端无效计算、多场景特征重复回流,都会对客户端运行体验造成一定的影响。基于以上背景,我们着手建立以下几个维度监控:特征血缘关系:描述业务和特征依赖关系,包含采集依赖和云端特征使用情况。一方面,发现特征重复上报问题,推动业务架构升级,实现多场景的特征联动;另一方面针对云端已下线的特征,任务及时下线,避免端侧无效计算占用资源。特征质量监控:通过特征值抽样上报,一方面,针对异常波动,及时发现问题并推动业务优化;另一方面,定期对抽样数据进行巡检,与各类离线数据进行比对,发掘数据质量缺陷。特征耗时监控:提供每个特征值的运行耗时以及端特征整体计算运行耗时,以此数据为指导,不断推动业务优化和端智能计算能力的升级。
展望
实时端特征已经在支付宝内多个重要场景得到使用并取得显著效果,但是为用户带来智能化、数字化服务是一个长期的探索之旅,过去一年只是万里长征的第一步,随着越来越多的团队在进行智能化、数字化的建设,我们也对于实时端特征中心提了几点展望:1、提效能:各业务特征诉求都非常具有共性,我们正在搭建 LowCode 端特征研发平台,通过抽象通用特征模板,统一编排能力串接,实现完整的特征生成逻辑,让大家更加专注于业务效果和创新之上。2、挖深度:通过端侧挖掘更高价特征,助力用户理解和服务理解。3、扩场景:结合业务场景诉求,提升端智能平台对外服务化能力,建设深度融合的场景方案,能够让各个业务场景用的快、用的好。