端智能助力西瓜视频业务实践

2021年11月22日 阅读数:2
这篇文章主要向大家介绍端智能助力西瓜视频业务实践,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

做者:字节终端技术——覃量前端

前言

端智能,顾名思义就是在端上跑AI模型。端智能做为目前火热的一个新方向,在业界已经开始崭露头角。阿里、谷歌、快手等大企业都在积极布局端智能,用端上AI来优化各类业务场景并取得了很是突出的效果。算法

字节Client AI团队深耕端智能领域,并在今年早些时候与西瓜视频合做落地了端智能视频预加载方案,取得了不错的结果。本篇咱们经过这个案例,带你们一块儿来揭开端智能的面纱,看看端上AI在实际中是如何应用提升业务效果的。缓存


1、场景

1.0 场景介绍

西瓜视频预加载这个场景很是简单: 在播放当前视频时,客户端会对后续3个视频,每一个视频预加载固定800K的缓存。让用户在播放到后续的视频时能够快速起播,得到更为流畅的播放体验。markdown

端智能助力西瓜视频业务实践

但这样一个固定的策略也有一些很是明显的问题:网络

  1. 用户大部分状况下不会看完800K的buffer,而是简单浏览内容后就划到下一个视频,形成带宽的浪费

端智能助力西瓜视频业务实践

  1. 在用户仔细浏览视频内容时,若是没有足够的buffer,容易形成起播失败或者卡顿,影响用户体验

端智能助力西瓜视频业务实践

最理想的预加载策略实际上是使『预加载大小和播放大小尽可能匹配,用户在起播阶段会看多少,咱们就提早加载多少,即不会形成浪费,又不会影响用户体验』app

1.1 深刻解析

但实际状况变幻无穷,想要用户看多少咱们就提早加载多少是一件基本不可能作到的事情。这时咱们有了一个想法,若是咱们能够预测用户接下来的行为模式, 好比 知道他接下来会 速切换视频』 仍是 『慢速消费视频』 的话, 是否是 就能够辅助优化咱们的预加载策略了 框架

事实上用户在一段时间内的行为模式是具备必定规律的:这个用户的『手速快慢』、对『互动的倾向性』、是否是在『碎片化时间』、是不是『工做日』等等。咱们能够经过这些规律来预测用户的行为模式,进而获得一个更佳的预加载策略。好比咱们预测用户接下来很大几率会进行『快速浏览视频』这种模式,此时更符合用户须要的预加载策略可能就是『减小预加载的缓存大小 & 增长预加载的视频个数』,反之亦然。运维

端智能助力西瓜视频业务实践

1.2 突破方向

这时咱们会发现优化这个场景的关键能够被转换成这样一个问题:如何预测端上用户的行为模式?ide

其中又有这么几个子问题:布局

  1. 使用『规则』仍是『模型』来进行预测?

    1. 规则

      1. 优势:简单、开发成本低、能够快速验证方案效果
      2. 缺点:只能应对简单场景,场景复杂度越高,规则会变得愈发的复杂,致使开发和维护成本变高
    2. 模型

      1. 优势:能够应对复杂场景、作更为精细化的策略
      2. 缺点:开发成本较高、周期也更长
    3. 通常来讲:

      1. 前期准备阶段可使用规则来快速验证方案的效果,预估策略大体的收益
      2. 方案落地阶段会使用模型的学习预测能力,来制定高可用、高扩展的精细化策略,最后达到最大化的效果

<!---->

  1. 这个模型预测应该在『云端』上作仍是在『客户端』上作?

    1. 因场景而异,并无一个固定通用的作法

    2. 以目前这个场景为例,预加载场景具备这样的特色:

      1. 须要预测用户在页面的行为模式,和用户的滑动行为强相关
      2. 滑动行为在短期周期(秒级、分钟级)具备必定规律,长时间周期(天级、月级)规律性较弱
      3. 预加载触发频率高,时间短,对实时性要求很高(不然容易形成用户卡顿)
      4. 端上一些特征因为隐私以及量级的关系,不适合进行上报
    3. 对于这样实时性要求高、特征数据时间周期短的场景,比起请求云端的长响应链路,在『客户端』上直接跑模型来进行预测会是一个更好的方案

端智能助力西瓜视频业务实践

最后用一个表格来小结一下『端智能』与『云智能』的特性:

决策成本 响应延迟 数据维度 计算规模
云智能 网络链接 + Native迭代 分级:埋点延迟 + 近线延迟 长期 + 全用户 + 统计特征 大数据 + 大模型
端智能 数据触发 + 动态脚本 秒级:端侧计算延迟 短时间 + 单用户 + 时序特征 小数据 + 小模型

1.3 优化思路

通过上面的几个拆解和分析,整个场景的优化思路已经慢慢浮出水面了:

咱们能够利用 『端上的实时处理能力』 + 『AI的复杂场景抽象化能力』 来直接在客户端上『预测用户的行为模式』 ,进而根据预测结果来『优化视频预加载策略』。

端智能助力西瓜视频业务实践


2、端智能预加载方案

2.0 端智能方案

有了思路之后,剩下的就是怎么把咱们的思路落地了。

一般来讲,端智能方案会包括如下几个阶段:

  • 端上AI开发
  • 客户端开发
  • 算法包开发

这几个阶段是互相独立、能够并行推动的,下面会以这个『视频预加载』场景为例来介绍一下上述的各个阶段。

2.1 端上AI开发

2.1.0 特征挖掘

从这个场景的优化思路中咱们已经明确了预测的目标是「用户的行为模型」,剩下的问题就是:用什么来预测?

思考全屏内流场景下,什么特征会影响或者反映用户会「快速滑动短暂浏览 or 缓慢滑动仔细观看」?

  • 设想一个用户正在不断滑动观看视频,若是连续几个视频都是他不怎么感兴趣的内容,被一下滑过,那么用户对下一个视频的指望or耐心会不断减少,若是仍是不感兴趣的内容可能会只浏览完标题就滑走,平均下来当前总体观看时长也就较短。
  • 相反,若是前几个视频用户都比较感兴趣,看得很开心,那么对于下一个视频的指望or耐心也会随之上升,平均下来当前总体观看时长也就较长。
  • 用户在滑动浏览视频时,对不一样类型、甚至不一样来源的视频会不会有所偏向,致使观看时长也所以不一样? 好比用户当前想看一个比较短的视频,那么对于长视频就会直接滑过。

从这样对场景的思考中,咱们能够得出很是多的用户行为特征:

端智能助力西瓜视频业务实践

有了用户行为特征概念上的思考之后,咱们就能够进行数据收集和分析, 把「概念」转化为「数据」。这须要咱们对这个场景相关的端上埋点进行一次梳理。梳理埋点的好处有这么几个:

  • 在梳理埋点的过程可以让咱们以一个全面和直观的视角来看咱们的场景。
  • 启发特征挖掘的思路
  • 对现有数据查缺补漏

2.1.1 特征处理

有了从埋点及其余来源的原始数据后,咱们须要将原始数据进行处理,转化成特征数据。特征处理的思路有很是多,能够经过不一样维度来提取特征,好比分为历史特征和实时特征。其中还能够经过不一样维度、粒度,或者将多个特征进行有条件的组合来进行不一样的尝试,好比:

  • 过去x条的样本数据
  • 过去x个视频的相关样本数据
  • 过去x小时的样本数据

端智能助力西瓜视频业务实践

2.1.2 特征分析

经过特征处理获得了一系列咱们认为对当前的问题有意义的特征后,还须要进一步分析每一个特征的价值大小。这里的价值指的是这些特征对模型的价值,进而咱们才可以在获取这些特征的成本以及效果的收益上来作一个权衡。

分析特征对模型的价值也有几个经常使用的方法,好比:

  • pearson、spearman、cohen's kappa等相关性系数方法
  • Lasso、Ridge等正则化方法
  • 距离相关系数方法
  • 决策树特征排序方法

这些方法各自有本身的适用场景,这里就再也不赘述。特征分析除了对模型效果进行先验预估外,还能够帮助咱们筛选出对当前场景最有价值的特征。由于增长特征一般来讲是有附带成本的,好比说:

  • 可能增长数据采集的耗时
  • 可能增长特征处理的耗时
  • 可能增长模型的复杂度,从而增长模型的体积和推理耗时

做为在客户端上运行的模型,为了更好的实时响应能力,尽量地下降整个链路的耗时以及模型大小也能更好的保证端上智能的效果。

有了端上AI模型之后,咱们还须要作一些客户端和算法包对应的开发工做。

2.2 算法包开发

算法包开发主要作的事情有两件。

2.2.0 端上特征工程

端上特征工程就是将端上原始数据处理为特征数据。在字节内有pitaya端智能框架,为端上特征工程的各项能力进行了支持。

端智能助力西瓜视频业务实践

通常来讲,咱们须要在端上提供这样的特征工程能力:

  • 支持不一样的触发方式来支持不一样场景的须要
  • 从不一样的数据来源(埋点、用户画像数据、设备特征等...)来获取端上特征的能力
  • 对数据有不一样维度和不一样层级的管理

有了这样的能力后,咱们就能够在端上将特征实时处理为模型所需的输入数据,来进行后续的推理预测。

2.2.1 端上模型推理

除了特征处理外,咱们还须要在端上创建一个模型推理的链路,这部分在字节内一样是由pitaya框架来支持的。这个链路主要分为三个部分:

环境部署

顾名思义,就是在端上提供能够在实时部署的推理引擎,以及对应虚拟机环境。

动态化能力

因为端上场景很是多、迭代也会很是的快。策略、模型、甚至场景均可能随着客户端更新或者时间推移来进行不断快速的迭代。因此对于端智能来讲,最重要的能力之一就是动态化能力。也就是动态地将算法包、模型和运行环境下拉到端上,并进行部署和管理的能力。经过动态更新能力,能够在不依赖客户端发版的状况下就动态地更新咱们的策略,用很是低成本的方式就能够实现策略的迭代。

实时效果监控

除此以外,还须要有一套实时效果监控系统。用来实时观测模型的效果、性能和稳定性等关键指标,并在将来模型由于用户群体改变或场景改变效果降低时来进行及时报警。

端智能助力西瓜视频业务实践

2.3 客户端开发

对于客户端来讲,须要根据不一样场景来决定不一样算法包的触发时机,以及对应算法包结果的解析逻辑,从而执行相应的业务逻辑。在视频预加载场景下是这样的:

  • 触发算法包执行

    • 横屏内流场景完成首帧渲染后,主动触发算法包执行。
  • 解析算法包结果

    • 业务添加预加载任务的逻辑,由以前的固定策略,改成根据算法包返回的执行结果,解析后添加预加任务。

端智能助力西瓜视频业务实践

在视频预加载这个场景中,咱们在前期利用动态更新的能力快速实验了预加载极端值和不一样加载个数给播放体验会带来的影响,肯定了适合视频预加载的最佳组合区间。同时也利用实时效果监控,在实验中发现出模型当前的各类问题,从而不断进行修正和迭代,提高模型的效果


3、方案效果评估

客户端业务代码调整完成,模型和算法包也开发完成以后,就能够经过AB实验来验证咱们方案的效果了。AB实验你们都很熟悉,端智能的实验本质上并无不一样,但也有几点须要咱们特别关注一下。

3.0 快速迭代算法包

端智能在提供了灵活方案的同时,也为实验带来了更多能够验证的维度。咱们能够尝试使用不一样模型、组合上不一样的策略、甚至不一样的触发时机。因为能够尝试的组合太多,在实验中很容易碰到流量以及实验组不够用的问题。

这个问题字节Pitaya平台是经过提供算法包部署和分流能力来解决的。支持在算法包发布时创建子发布,每个子发布均可以看成咱们的一个策略组,来验证咱们对一个策略方向的想法。同时每一个策略组还能够与AB的实验组一一绑定,在实验过程当中迭代更新咱们的策略,以达到实验不关停,快速验证不一样策略的目的。

在视频预加载场景中,咱们能够这样设计咱们的实验:

实验组 策略组
线上组
实验组一 改变预加载个数 (1,3,5,7, ..)
实验组二 改变预加载size (500, 700, 900, ..)
实验组三 改变预加载调度方式 (并行, 串行, ..)

每个策略组对应一个优化方向,具体优化细节在策略组内经过算法包迭代来调整。这使得咱们能在短周期内快速观察各方向的效果,并寻找出各策略组内表现最好的策略

这样的设计还有一个好处:算法包的发布大部分状况下不依赖于客户端版本,算法包的迭代能够根据实验反馈的状况进行更快速的调整,达到一周一次,甚至一周两次的频率。

3.1 算法包监控

端智能的实验相比于通常的实验,除了AB实验中的业务效果指标外,咱们还须要关注一下算法包自己的指标,来保证模型效果也符合咱们的预期。这些指标一般包括:

  • 性能指标:执行成功率、执行耗时、PV、UV,...
  • 效果指标:accuracy、precision、recall、TP、FP、TN、FN、...

端智能助力西瓜视频业务实践

端智能助力西瓜视频业务实践

有了这样的实时监控咱们就能够随时把握算法包的运行情况以及模型的效果,在算法包出现异常致使效果降低时及时发现定位,并进行优化和迭代。

3.2 方案优化

在实验过程当中,咱们根据实验数据反映出来的问题,不断对方案进行了不少次优化。

好比在review模型效果和实验数据时,发现FN的影响在咱们这个场景会比FP大不少。因而尝试经过调整阈值来下降FN比例,并在实验中快速迭代验证了一下效果,结果播放卡顿率/启播失败率等指标都有比较明显的优化。

端智能助力西瓜视频业务实践

再好比咱们在分析模型预测结果时,发现用户的行为模式在短期段内具备必定的规律,并针对不一样的时间段来优化咱们的模型策略,进一步提高了业务效果。

端智能助力西瓜视频业务实践

在算法包动态更新能力的加持下,咱们能够快速地迭代咱们的策略。从启动时的简单粗略,不断优化到模型能力愈来愈强大,算法策略愈来愈精细。最终可以经过端上智能找到最符合当前业务场景的精细化策略。

3.3 收益结果

经过一系列的实验,咱们在西瓜视频的视频预加载策略也成功落地上线,并在各项视频播放指标以及带宽成本指标上取得了可观的收益:

  • 从播放指标上看:端智能预加载策略比起固定的预加载策略:失败率上减小了3.372%,未起播失败率减小了3.892%,卡顿率减小了2.031%,百秒卡顿次数减小了1.536%,卡顿渗透率减小了0.541%
  • 从成本指标上看:端智能预加载策略比起固定的预加载策略,在总带宽成本上减小了1.11%,为公司节省上千万的成本。

4、总结

线上检验时咱们会发现不少以前阶段隐藏的问题,好比特征选取得很差须要添加新特征,推理耗时比较高须要优化模型和算法包,模型与策略结合得很差致使整体效果没有达到预期等等...

每一个新的问题都会反过来帮助咱们优化以前的某个阶段,迭代咱们的策略,而后再一次接受线上的检验。整个阶段能够被当作一个环:

端智能助力西瓜视频业务实践

AI和业务相结合的场景每每须要在这个环内通过若干的周期的优化和提炼,不断达到更好的效果,才能最后迭代出一个成熟有效的方案,最终提高业务效果。

字节端智能平台 Pitaya,是字节跳动Client Infra团队和Data-MLX团队共同打造的一套端+云的基础设施,旨在帮助终端业务高效利用AI能力提升业务效果,拓展业务场景。目前主要建设有端上智能业务,端上特征工程,端上推理引擎,端上训练等框架,在抖音,西瓜视频,今日头条,教育等多个业务合做落地,帮助业务提高效果。

火山引擎应用开发套件MARS 是字节跳动终端技术团队过去九年在抖音、今日头条、西瓜视频、飞书、懂车帝等 App 的研发实践成果,面向移动研发、前端开发、QA、 运维、产品经理、项目经理以及运营角色,提供一站式总体研发解决方案,助力企业研发模式升级,下降企业研发综合成本。