端智能及其解决的问题

边缘计算

端智能和边缘智能是比较类似的概念,而边缘智能会依赖另一个更广泛的技术,即边缘计算。边缘计算指的是在网络边缘结点来处理、分析数据。边缘结点指的就是在数据产生源头和云中心之间任一具有计算资源和网络资源的结点。比如手机就可以是人与云中心之间的边缘节点,网关是智能家居和云中心之间的边缘结点。边缘计算把更多的计算进程放到边缘节点,云端运行较少的进程。

举个章鱼的例子,章鱼的大脑类似于云计算,具有较强的计算能力,能够解决很多复杂的问题。八个小爪子就是边缘计算,每个爪子就是一个小型的机房,一些简单的计算任务就不需要传输到大脑进行计算。

端智能

图片

端智能,顾名思义就是让端具备思考决策的能力。如图是一般的决策链路,我们的手机端要展示的内容其实是要去请求服务端,由服务端给我们决策的结果,再去展示到客户端,相当于是去请求结果这样的过程。而端智能可以在端上去做一些推理和决策,并可以将记忆学习或深度学习的算法部署在上面,这样在有了数据和算法之后,可以做一些推理的过程。

图片

传统的推荐系统会存在一些问题,一般的分页请求会导致策略调整的不及时,云端获取用户行为的延迟在秒级甚至分钟级,很多用户细粒度的行为无法获取。有了端智能后,可以在端侧实时感知、计算、决策、干预。

图片

端上会有大量的用户行为特征以及一些特有的数据,这些数据不需要传到云端。有了这些数据后,可以很快做出一些推理决策,如果这时传到云端做推理决策,延迟就会很大。

端智能VS云智能

相比云智能来说,端智能有以下一些优势:

  • 低延时: 模型推理在端上进行,无需与云端进行网络请求,降低了响应时间。低延时对于一些实时性要求高的场景极为重要;
  • 安全性: 数据无需传往云端,可以更好地保护用户隐私数据;
  • 定制化: 根据用户习惯进行本地训练,步步优化,可以更好的实现"千人千面";
  • 节省资源: 在端侧处理,利用端侧算力和存储空间,可以节省大量的云端计算和存储资源。同时,

端智能也存在一些挑战:

  • 设备的碎片化:端侧设备严重碎片化,复杂多样的操作系统和系统版本。如何保证模型适配各种设备且充分利用加速;
  • 模型与引擎大小:模型太大会影响加载速度,运行时也会占用巨量内存。推理引擎需要集成到app中,app太大也会占据大量存储;
  • 内存占用: 运行时会占用大量内存,会影响用户体验。

需要注意的是,端智能与云智能本身就不是割裂的技术体系,不是非此即彼,而是相辅相成、互为补充。

端智能应用场景

体验类:

  • AR/VR,音视频超分,背景分割,人脸美颜

安全场景:

  • 支付宝判断手机丢失:根据端侧传感器、手势、行为序列搜索

推荐营销:

  • 端上智能在快手上下滑推荐
  • 淘宝信息流刷新重排
  • 美团重排序在点评主搜和美食频道列表页

端智能在哈啰的落地方案

技术储备

  • 已建设云端AI平台能力:训练平台、模型平台、特征平台、决策平台
  • 客户端和算法均在对应领域有一定的积累
  • 开源的推理引擎框架

端智能架构

图片

在有端智能之前,如左边所示,我们的AI平台会提供一些模型,让搜推引擎去调用,最终产生排序的结果。有客户端的加入之后,当用户触发了某种行为之后,可以对它做重排序。整体的流程要有端上重排的触发,触发后需要做重排的推理过程。如下面的链路所示,首先要拿到对应的一些数据,之后做特征的处理,以及模型的下拉,推理引擎的用的是MNN,这样整个重排服务会产生模型推理的结果,再把这个结果返回给客户端。

过程中也遇到了一些挑战,首先模型版本管理问题,模型自动更新如何保证线上一致性,这里设计了模型管理模块。其次是模型文件的分发,我们什么时候把模型文件下载到APP,以何种方式,每一种方式成本也不一样,这里通过调研设计了模型下拉模块。第三,我们要把推理引擎集成到APP里,包的大小怎么控制。第四,模型文件要想在端上顺利运行需要有一定的环境,由于用的是MNN推理引擎框架,它的执行环境是C++。最后还需要把我们的模型文件转换成MNN,会遇到算子是否支持的问题。

图片

对应于挑战,我们做了一些模块,包括特征管理模块、模型管理模块,以及触发管理模块。我们的技术栈主要用到C++和Java。

端智能数据流

图片

我们要在手机端上做触发,需要拿到端侧的一些行为数据,以及从云端拉取一些数据,同时需要一些业务数据,所有的数据融合之后进入到算法SDK做特征预处理,随后进入到推理引擎做端侧的模型推理,推理结果再加入算法SDK做业务规则处理,这样就会把整个结果展示给业务移动端。算法模型和特征对于算法模型和特征,由于云端的特征比较多,怎么保证重排和精排模型达到的效果是相互补充的,这时就需要去采集比较多的端侧特征,需要细粒度且变化快。这里的端侧特征有轮播次数、停留时长、滑动类型、点击不感兴趣等。

图片

模型会对这些端侧特征进行学习,与精排模型不同的是,除了用户的正反馈,还会加入用户产生的负反馈行为,如曝光的没有点击,或进入到详情页后马上退出。这样的重排模型一般体积不会太大,能达到较好的实时性效果。与云上推荐相比,端上推荐的用户行为延迟和系统全链路反应到用户的时间得到了明显的改善。

应用场景

图片

端智能建设过程中第一个上线的是首页banner的场景。之前服务端会下发6帧轮播,但是因为端智能的加入会有策略的改变,服务端下发20帧,实时挑6帧展示。触发逻辑是轮播完成用户没有点击和用户点击进入详情页,分别表示用户不感兴趣和感兴趣。触发后会在端侧基于用户实时行为特征对卡片进行打分重排序,不感兴趣的进行降权。

同时有一些规划中的场景,如首页的联合推荐。目前首页接入搜推算法的有底纹词、宫格、banner和二屏,如果每个系统独立没有任何交互,会造成流量的浪费。我们需要去做全域的数据互通,联合决策。

规划中的场景还有弹窗时机实施决策,弹窗时机是根据用户长期行为偏好、实时行为序列及设备实时性能状态,去判断用户的意图。综合考虑用户的疲劳度和意愿度,决定是否弹窗和弹窗的内容。

未来展望

端智能和云智能是相辅相成、相互补充的过程,可以在很多场景全面使用。接下来有三个展望,一是如何更多的应用到端智能;二是如何去降低接入门槛,让算法模型更简单的部署,让开发同学更方便的去使用;三是如何做到从端智能到端云协同智能,如何实现端云协同算法突破。

(本文作者:侯亚伟)

图片


哈啰技术
89 声望53 粉丝

哈啰官方技术号,不定期分享哈啰的相关技术产出。