【CSDN 编者按】我有时候会很好奇手机 APP 为什么总能把我想看的东西推送给我,比如外卖点啥、出去游玩时住哪个民宿更划算。我猜想大概是 APP 里存在一种东西,能够根据我的日常习惯总结归纳出一套模型之类,当我再次打开 APP 时,那些东西就出现在我眼前……
背景
在遇到危险的时候,人类和其他动物都会通过神经反射活动来保护自己。神经反射是不自主的应激反应,不需要大脑参与就能产生。比如手碰到尖锐的钉子或滚烫的水杯,会不由自主地缩回去。这与日常需要大脑思考的行为不同,它的发生非常的快,远远超过大脑思考的速度。
云端计算就好比大脑,端智能就好比神经反射,它把算法模型的预测能力和训练能力搬到了手机上。虽然运算能力没有那么强大,但是对照传统的模型预测方式而言(服务端运行),端智能具备以下几个优势:实时性:通过端智能可以在端上完成模型的训练与预测,包括特征的处理。这些信息可以用于端上模型实时预测或云端上报,而这仅仅需要毫秒级的延迟;
个性化:端上支持更丰富的数据采集,而这部分数据可能并不适合上报云端,需要在端上消费,如手势操作、传感器数据等。结合端上训练能力,做到“千人千模”;
安全隐私:安全是永远不变的话题,欧盟的 GDPR《通用数据保护条例》对数据安全控制尤为严格,大量的数据仅限于在端上处理;
节省服务端算力:将原本在服务端的计算迁移到端上,在提升实时性的同时也为服务端节省了算力资源。
端智能在旅行场景中的价值
在旅行的决策消费场景中,用户很多时候并没有一个明确的“旅行意向”。一般来说,大部分人的旅行意向都是在逛逛、对比中逐渐清晰。而在过程中,我们需要快速捕捉用户意向,从海量的旅行商品中,推荐最合适当下用户意向的。通过端智能,我们能够理解用户的瞬时需求,生产实时的端侧用户画像,并通过跨行业交叉的方式挖掘用户的深层次需求,结合毫秒级的实时数据给用户更精准的旅行宝贝推荐和展示。飞猪端算法的数据采集一直依赖 UT 埋点体系和服务端自身的埋点体系。但这存在埋点上报延迟时间较长,信息不全等的问题,这也就导致很多用户的瞬时兴趣被错过。引入端智能就是为了弥补这个短板。集团在端智能领域已经有很多积累,包括 MNN 引擎框架、围绕端智能搭建的 walle 框架等等。飞猪并没有那么多资源投入,同时也是为了防止重复造轮子,在基础能力方面,我们尽可能使用手淘已有能力。并与飞猪原有技术架构相融合,挖掘创新场景,在有限的投入下带来巨大的业务价值。去年,我们仅仅接入了 behaviX 数据仓储能力,与算法同学合作将<信息流实时推荐>项目推广到整个飞猪。今年,除了原有的 behaviX,我们又引入了集团一系列端智能能力,包括:behaviR:用户行为决策中心,能够匹配用户的单点行为或者行为链路,从而做出响应;
MNN:AliNN 升级版,提供了端上模型运行能力;
Python VM:端上 Python 运行能力,让逻辑部分可动态下发,创造无限可能;
walle:在端侧将 MNN、AliML、python VM 等能力串联起来,结合 walle 云端平台做任务的下发和配置;
与此同时,我们要将这些新兴能力与飞猪技术体系相融合,为业务创造更多价值。2020 年双十一,飞猪在很多场景应用了端智能。端智能运算次数达 3 亿+次,其他业务场景,包括<信息流实时推荐>项目在信息流场景提升 GMV 4%以上,酒店搜索实时排序提升酒店间夜 2% 以上等等。
飞猪端智能体系建设
我们主要围绕四个方向进行:端智能基建、数据化&工具化建设、DML云端平台建设和业务能力支持。
实时数据通道:由于 Highway 数据通道不对外提供支持,我们决定使用 walle 提供的数据通道。但是 walle 的数据通道完全是实时流,上传到 iGraph 后无法被用来做离线训练。因此我们与数据团队合作,在 walle 的基础上建立了飞猪的实时数据体系,由数据同学通过 blink 将实时流回传到 odps,算法可用来做离线训练。在实时性上,可做到秒级体验,与 UT 实时通道互为补充。
方案如下:
端侧调试工具:为了方便业务开发者更好的调试,我们开发了端侧的端智能调试工具,包括配置下发初始化,模型下载和任务实时结果查看等。界面如下:
结合 Walle 调试平台和 MNN 工作台,可以为开发者带来更好的调试体验。数据监控:除了 walle 平台提供的监控外,我们新增了飞猪相关的业务埋点,包括任务运行结果,模型大小,数据采集情况等等,并将这些数据生成了飞猪端智能运维大盘,会在 DML 平台部分详细介绍。MNN 工作台:MNN 工作台是手淘开发的一套端智能开发工具,功能非常强大。其中的调试能力帮助我们节约了几倍的开发时间。我们也是集团最早一批接入 MNN 工作台的 BU,并在集团内推广。另外其内置的模型能够帮助我们快速实现很多能力且无需接入 SDK,如 OCR 等等。能力升级&接入:本次升级涉及到大量的 SDK 升级和引入,包括 BehaviX 的升级、BehaviR 的引入、Walle 的引入、AliNN 到 MNN 的替换等等。引入过程中出现了很多版本不匹配以及冲突的问题。另外由于飞猪自建 Router,导致 BR 出现无法获取页面 leave 时机等问题。埋点体系打通:BX 数据需要手动埋入。为减少对业务的侵入,我们在埋点中间层统一完成了 BX 数据的写入封装,支持包括页面 PV、Leave 事件、点击事件和曝光事件的默认采集。对于业务性较强的 scroll 事件,也封装了上层接口供业务使用,埋点对应关系。接入过程中我们发现 H5 页面的 SPM 有时会存在 5 位的情况,所以也在中间层统一了规范。事件调度&监听:底层任务回调统一监听,并提供上层注册机制。同一个任务可存在多个接收方,为未来飞猪端智能通用任务提供基础。且制定了飞猪数据返回规范,通过调用 fliggy-kit 提供的 API 可保证数据的一致性。Fliggy-kit:功能强大又全面的 Python 工具包。目前只提供了一些必要的能力,S2 会不断完善,并沉淀用户在端上的一些通用特征,为 RTUS 提供支持,也可直接在端上消费。DML 平台是与前端团队配合开发的一个端智能平台。
目前集团端智能涉及到的平台较多,包括 walle 平台、dai 平台、orange 平台以及一些尚未对外开放的平台。DML 平台通过一个配置平台完成包括埋点、触发点、业务模型等一系列的配置工作。通过对业务的 python 结果进行统一化收口,搭建该平台的数据看板能力,实现业务性数据统计等相关工作。平台搭建过程中和集团 walle 团队对接,争取共同打造多平台入口统一化建设,实现一个平台做完所有事情。触发点配置管理:BehaviR 的触发点目前是通过 orange 下发 json 字符串来完成的,该 json 如果手动配置较为复杂,最好能通过配置工具完成。目前手淘有一个配置平台,但未对外开放,因此我们自建了该能力。
数据采集配置:由于点击埋点和曝光埋点数量较多,因此我们对这部分埋点做了限制,只有经过配置的曝光和点击埋点才会被采集。
目前手淘已经开启了 BX 数据全量采集,并且直接对接到了 UT 能力上,后续飞猪也会放开采集限制。脚本上传与发布:之前脚本上传还需要通过 DAI 平台来完成(我们只用 DAI 平台来做这一件事情,然后再手动修改配置),因此我们也把这些功能整合到了 DML 平台上,并直接生成完整的配置。运维数据大盘:除 walle 平台提供的运维数据外,飞猪同样存在一些自己需要的业务数据,包括任务运行情况,可根据状态码自行设置,模型下发情况等等。大盘如下:
根据以上数据可知,目前端智能任务执行峰值在每天 600w+,以上的报表是通过 DeepInsight 搭建出来的,不够美观,未来可能将异侠平台生成的报表嵌入到 DML 平台中。
双十一期间运算次数达 3 亿+次,以下列出部分使用端智能的业务场景,均带来了实质性的业务增长。猪搜点后推:通过用户在搜索中的行为,通过端智能制定触发策略并上报实时 BX 数据,为用户推荐类目,商品等。点击率和 GMV 都大幅提升。目前还在实验中,算法上还有很大优化空间。首页智能推荐:通过端智能设置用户路径策略,在机酒火金刚返回到首页时带上 BX 用户行为数据,刷新信息流并弹出引导条提升。在实验期间,首猜瀑布流 PVCTR 和引导成交都大幅提升。但是由于实验时会丢掉特价模块,所以理论上还有很大提升空间。目前由于双十一有定制策略冲突,暂时下线,双十一后会重新上线。
酒店小搜实时排序优化:通过用户在酒店详情页的实时行为,利用端智能配置行为数据上报触发点,实时上报行为数据,优化酒店小搜排序策略效率。酒店小搜链路整体间夜和 UV 转化率都有明显提升。RTUS(飞猪实时用户理解中心化服务):RTUS 是用户行为触发式驱动+动态增量更新的实时用户理解中心化服务,依赖于端上的实时行为数据。经过小范围试验得出,约 75% 的数据可以在 500ms 内到达,做到秒级体验。另外依赖于端智能的 python VM,数据上传的场景更多,范围更大,方式也更灵活。在数据上报上端智能依赖行为触发,UT 实时通道轮询触发。二者各有其优劣势,相互结合可覆盖绝大多数场景。各个导购推荐和营销场景切换 RTUS 服务后,平均 UVCTR 点击率大幅提升。后续 RTUS 的数据通道会逐步体系化接入端智能实时通道,帮助 RTUS 覆盖更多场景,获取更细粒度、更实时的用户特征,并联合 H5 将 RTUS 服务扩大到三端,带来更多的业务收益。防精刷:防精刷场景涉及到网络刷单的防控,不便展示。场景较多,并未全部列举。如果感兴趣可以直接联系我们了解,也期待大家有更好的想法,只要是对客户有价值,对业务有价值,我们一定全力支持!
思考
目前飞猪端智能仍然不是非常成熟,还有许多需要提升和改进的地方:业务基础能力沉淀:目前端智能更多是散点的业务场景,其中不乏一些相似的模式。如果结果提升很明显的,我们会把这种模式沉淀下来,让别的场景能够一键接入,做到一行代码带来业务提升。
端智能场景三端覆盖:以上的端智能场景都是在飞猪端内的,而飞猪目前有大量流量是在支付宝和手淘的。对于酒店行业来说,支付宝就占了将近一半的流量,因此将端智能覆盖到三端是很有必要的,后面会联合前端团队,打通 H5 的端智能能力。
Python 基建:随着业务场景的增加,python 脚本的工作量逐渐增加,这就产生了大量的重复工作。需要对通用能力做一些沉淀,并建立飞猪自己的端上通用特征服务以及用户画像沉淀。
最后
如果说数据是飞猪的血液,那我觉得端智能就是肾上腺素。它能够加速血液流动,为各个器官输送更多的养分。端智能未来也将定位为飞猪的基础能力,它将和算法同学一起,助力飞猪更快成长。
☞美团回应“大数据杀熟”;Docker开发者预览版支持M1芯片;GTK 4.0发布|极客头条
☞HarmonyOS 手机应用开发者 Beta 版到来,对开发者意味着什么
☞国内数据中心变革的见证者,揭秘阿里巴巴数据中心技术积淀
☞微软收购 GitHub 两年后,大咖共论开源新生态
☞红帽 与 CentOS 之间的恩怨情仇
☞清华硕士分享思维导图:机器学习所需的数学基础