短视频在过去数年内成为主流的内容创作和信息分发渠道之一, 字节跳动提供独特的视频播放体验,吸引了全球数十亿用户, 一项重要的贡献因素是其先进的个性化视频技术。过去五年间,团队完整开创了这一崭新的技术领域以优化用户体验, 在此我们首次向业界披露个性化视频技术区别于传统音视频技术的主要概念和部分方法, 希望对整个行业有所启发。本文系“个性化播放技术”的中文精简版,欲了解更详细内容可参考原论文。论文链接:https://arxiv.org/abs/2410.17073
背景
过去的若干年间,音视频服务重在提供基础的视频转码与分发能力,行业的注意力主要集中在四个方向。
• 编解码器标准的演进、前后处理算法的研究与开发。例如MPEG-2、RMVB、264/AVC、 265/HEVC、266/VVC、VP9、AV1、AV2等视频编解码器,MP3、AAC、HEAACv1/v2、XHEAAC、OGG等音频编解码器,Jpeg、WebP、Heif等图像编解码器,以及前后处理方面的大量工作如超分、降噪、色彩增强、ROI区域分析等。
• 流媒体传输协议的演进。一些取得广泛影响与应用的协议包括RTP/RTSP、MPEG2-TS、RTMP、HLS、DASH、SRT、RTC等。
• 多媒体框架。例如DirectShow(Microsoft)、Helix(Realnetworks)、MediaFramework(Google)、AVFoundation(Apple)、FFMpeg、VideoLAN、Gstreamer等。
• 云服务。许多公司往往以弹性计算平台为基础,提供基于容器镜像模式或者基于serveless模式的服务,允许计算图式的任务分配与调度,用以灵活地处理转码与前处理任务,并以此为核心构建包含元数据、上传、转码与下发服务、CDN、播放SDK、埋点分析等在内的端到端能力集,供业务使用,相似地,Brightcove、AWS、Azure和Google Cloud等供应商也展开了基于云的音视频服务,供各种规模的公司快速集成与应用。
除此之外,还有一些与音视频技术相关的重要工作,例如信号调制、DRM保护、芯片开发等,与上述各方向之间均存在关联、其发展轨迹亦相互影响,不赘述。
在控制与决策优化方向上,工业界和学术界曾有许多尝试,例如自适应比特率(ABR)算法方案和改进等,在编码方面则有Netflix、Brightcove从2015年开始发表的一系列工作,让Content Aware Encoding和Context Aware Encoding成为业界编码优化工作的范式,但以上工作仍过于局部、零散,并不能充分解决短视频遇到的问题。
在短视频服务的研发方面,我们面临前所未有的挑战:
- 投稿数量及其差异性。短视频应用拥有每天亿级别以上的UGC投稿,其内容和质量千差万别,真实地代表了整个世界的多样性。许多问题及其解法、总结出的规律是在小得多的规模上进行的,但在我们的规模下却距离理想状态差之甚远。
- 用户数量及其多样性。世界上每天有数十亿用户使用短视频,其使用方式与人为偏好存在巨大方差,并由于给予应用的反馈信号虽然数量繁多,但蕴含的信息稀疏且有限,相关干预的效果易被掩盖。
- 复杂业务形态带来的收益与成本约束。短视频应用承载了极为复杂的业务,包括广告、电商、直播打赏、生活服务、搜索等等,同时视频的处理、存储与分发所带来的成本极高,视频技术应当聚焦提升用户体验,进而提升业务指标,同时平衡与成本之间的关系。
通过引入众多在推荐、广告、用户增长等领域飞速发展的个性化技术,与“传统”音视频技术进行结合,字节跳动从2019年开始第一次构建完备的个性化视频技术体系,带来了根本性的范式转变,在内部评估和市场竞争中均取得了优异的结果。
总述
1. 方法论
个性化视频技术的理念在于,对不同用户,根据对其偏好和习惯的理解,综合考虑观看内容、时间、场景、设备、网络等所有影响维度,对音视频领域所具有的不同技术进行重新估计与选择性运用,提供整体最优效果。即以控制和决策为核心,强调整体最优、强调对不同用户及其相关影响维度采用不同技术。与之对应,传统音视频领域的工程实践未对不同用户的差异化诉求予以足够关注和满足,往往以固化的框架和能力为核心,寄希望于发展通用、统一的技术提供给用户,或陷于局部较优的方案,这在高用户规模、高偏好方差的视频应用体系中将丧失巨大的提升空间。
基于以上理解,我们重新设立了个性化视频技术的工作流程,参考图2-1,在此流程中将针对每次改进评估其用户影响,这不是一个很新的思路或者方法,但将这套方法置于核心地位,以此驱动传统的编解码、协议、框架、服务等开发工作,则属于首创,借助字节跳动数据驱动的文化和相应工具(例如AB实验平台)得以实现。
图2-1 个性化音视频技术工作的通用流程
2. 目标定义
从通用角度看,ToC的社交媒体类业务广泛使用LT(Life Time)表示一段时间内用户的活跃情况,以及使用ARPU(Average Revenue Per User)表示每用户平均收入,此处为后文讨论方便,我们做一简化,即设定短视频业务的整体目标为LTV(Life Time Value):
基于上述目标,我们设立二级指标,音视频领域大家会观测EBVS(Exist Before Video Start)、VPF(Video Playback Failures)、VST(Video Startup Time)、Rebuffering Ratio等不同QoS指标。但我们认为这并不足以刻画用户的信息,也并不能完整反映用户播放过程中的状态变化,因此会设立一个更为全面、开放的指标组QoS(Quality of Performance)表示多维度的完整性能体验。具体定义参见表2-1 ,同时也会估计不同性能指标对业务指标的影响。
表2-1 部分性能指标定义
注意,以上表格内并非全部QoP指标,其影响幅度将随业务发展阶段与环境而变化,QoP指标组所涵盖的指标会发生增减,变更影响幅度也可能发生大幅改变。
在评估环节,我们将对每个项目计算profit和ROI,并根据业务场景和目标设定不同的调控不同的成本价值。并令其满足以下上线条件:
3. 端到端工作框架
传统上端到端的音视频技术体系将链路划分成多个环节,包括投稿、转码、分发、调度、播放等环节,一种典型的系统架构如下图所示:
图2-2 AWS的VOD Streaming架构
在我们的系统上会格外强调控制与决策,以及对用户的影响,并且我们认为每个子领域均与其他子领域存在面向个性化体验的统筹优化空间,仅仅由于复杂的链路从而导致不能直接进行整体建模,但每个子领域仍需对其他环节进行深度理解和配合,逼近整体建模的效果,概念性的划分图如下:
图2-3 个性化音视频技术的概念性架构图
在上图所示的架构中,我们认为下发、调度、传输、下载与播放相关的策略应当统筹看待,因此把这一子领域命名为Personalized Streaming & Playback,对转码相关的决策领域命名为User-Item Aware Encoding,同时把投稿相关的编码和传输策略命名为Foresight Based Publishing。
个性化从技术角度则是策略化,策略优化在个性化目标下通常包含以下角度:
- User:对不同用户提供的策略方法不同,此处还可细分为投稿者、消费者、甚至投稿者 x 消费者等维度。
- Item:对每个Item(在短视频应用中的视频——其他消费体裁如图文等类同)做差异化的处理,进而在User x Item维度上提供不同效果。
- Context:即用户消费的场景、个人状态、外部环境等,在User x Context、Item x Context(较少)或者User x Item x Context维度上形成差异化。
对不同决策干预点而言(上图中每个子领域内都至少有数个乃至数十个不同的干预点,后文章节中将择要介绍部分干预位置),其优化水平可以按粒度划分为以下层次:
- Rule-based level:根据简单、明确、有限的规则,对部分User、部分Item或部分Context情形下采用不同策略。
- Portrait based level:对不同的User、Item,可能会筛选出同质的群组,对不同群组采用不同的策略,画像可以通过数据分析、挖掘,或者模型筛选的方式生成。
- Individual level:对单一的UserItem、Context下采用不同的策略,通常需要使用机器学习、深度模型等技术。
- 其中不同层次之间可能存在交错,例如,画像不仅可以单独使用,仍然可以作为Individual处理的特征输入。
- 以上体系可由基础数据、规则、特征、画像、模型(或特定算法模块)等内容组合构建,并且在服务端、客户端均具备相应能力,用以支持各个策略模块的统筹决策。
图2-4 支持个性化音视频技术的方式
在上述系统的设立与构建的基础上,可以按照优化问题的一般工作思路对整个视频播放工作进行拆解和拓展,我们根据工作便捷性可以定义了以下维度,后文将尽力从这些视角介绍:优化目标(Object);干预选项/动作(Treatment/Action);信号/状态(Feature/State);优化方法(Method)
个性化流媒体&播放技术
在推荐算法或者用户选择决定了播放内容(Item List)的前提下,整个流媒体播放服务可视为主要包含Delivery,Scheduling,Streaming & Playback三个环节,根据视频Item当时所具有的档位(Ladder)基础上,对调度、传输和播放的相关逻辑进行个性化、算法化优化,能够有效提升播放体验、降低成本,最终提升整体业务收益。
- 按需下发(On-Demand Delivery)
- CDN调度(Personality Quality Scheduling)
- 流媒体播放(Personalized Streaming & Playback)
图3-1 个性化流媒体播放模块示意图
上述播放服务的优化目标可用下式所示:
1. 个性化流媒体 & 播放
问题
根据短视频应用的特点,信息流播放占据绝大多数的用户时长。在信息流播放过程中,一次信息流请求会获取一个排序过的Item List,供用户顺序观看(用<user,item>表示一次播放),播放器理应依据对观看行为的预判,提前下载每个视频最可能被看到的片段,并提前准备播放相关组件,以保障列表中的各个视频的启播速度、流畅度、画质等效果,即,优化目标不再是单次播放的效果,而是用户在整个播放序列中的综合体验。
方案
思路
动作空间
状态空间
状态空间中的状态即是策略所需的特征信号,更大的状态空间通常意味着更高的优化上限。为了实现个性化的目标建模与策略优化,在状态空间的构建时应当系统化考虑Rule-based、Portrait based、Individual等不同层次的状态,从User、Item、Context等角度构建。
基础的特征建设只需满足相关性即可,除却原始数据外,也应当针对QoP各指标的维度建设能够充分识别性能状态的实时特征,以及对未来表现建设预测类特征。
画像建设可以通过目标驱动,即根据期望优化的QoP指标构建对应画像,例如流畅度敏感画像、画质敏感画像、流量敏感画像、存储敏感画像等等,也可以利用业务先验信息,对用户的投稿或消费的类别、层次建设对应画像,更进一步说,任何User、Item、Context维度能予以划分,并与QoP具备指标变动相关性的数据属性均可使用。
以画质敏感画像为例给出一种做法,根据线上用户的播放结果,收集用户基础信息、性能特征、分档位的播放数据、历史行为特征等,使用Uplift模型预测Treatment和播放时长的分位数回归,根据模型表现(uplift-value)将人群划分成不同分组Ug。显然,该画像将对流畅性和画质平衡相关的决策提供关键信息。
Individual层次特征的构建,通常需要通过数据计算或模型预测构建所需的分类、回归值或概率分布。以用户对某一视频的播放时长这样的特征来说,历史上有一些工作对此进行了预测和使用,其或者基于用户过去几次播放的结果进行预判,或者使用某一视频被所有用户观看的分布代替具体用户的观播时长分布。但这些做法并不适用于短视频平台,由于短视频消费呈现几何分布,生命周期十分短促,同时此类做法过于粗糙,没有充分地考虑个性化。
一种简化的可行做法可以是从片源时长、用户、视频维度各自建立播放时长的分布,并利用参数的加权拟合(参考下式),融合成一个综合的时长分布。
优化示例
在特定时间点决策对某一视频下载某个档位,即选档问题,是在流媒体领域中的常见子问题,在短视频的信息流播放场景下的相关问题是下载控制决策,对这两项控制算法进行优化即可视为针对两个(组)动作的决策。由于我们所意图优化的动作空间、状态空间范围远超以往,使用的工具也极为广泛,此处仅以选档和下载控制为示例进行介绍。
在我们的工作中,对档位选择和下载控制的处理,遵循前面提及的思路,有以下不同:
1.优化不仅考虑某一个视频的播放,而是统筹整个列表的播放体验。考虑的性能维度拓展为完备的指标组,直接通过QoP指向Profit,同时对与此任务最相关的QoP指标建立下级指标,即拆解为多维度来表征,例如对Rebuffer亦拆解首帧卡顿、播放前中后期卡顿、缓冲区卡顿等。
2.控制的动作更为精细,例如选档即需要区分不同选择时机和目标(比如发现),下载不仅需要选择“下什么”、“下多少”,同时也需要选择“从哪儿下”、“怎么下”、“下载后的处理方式”。在此基础上,对不同干预点进行联合决策,除了选档与下载动作的联合决策外,也包含二者与其他动作如解码、后处理增强等的联合决策,以最大化QoP效果。若将根据输入特征决定控制动作的具体算法,例如模型或者决策树,称之为决策函数Decider,这里所述的联合决策存在几种情况:
a.对某一控制动作的决策,其他时间线上在前的干预点,其决策结果可作为特征输入至决策函数内,对时间线在后的干预点,亦可进行预测式决策。
b.对某一决策时机,若同时存在多个动作需要决策,可以建立联合决策函数,输出最优解。
c.不论决策时机是否相同,决策函数本身均可在联合空间内,离线地搜索(训练),得到最优(更优)方法。
3.依据一般的特征重要性判别方法进行筛选,除了常见的网络状态、缓冲区状态等,加入大量个性化特征,对选档和下载有重要意义的特征包括(但不限于)以下内容:
a.用户对视频的播放时长预测、...
b.用户、视频各自的首帧敏感画像、画质敏感画像、画质切换敏感画像、卡顿敏感画像、功耗敏感画像、流量敏感画像、...
c.用户当前的近实时画质与卡顿情况、设备温度、设备音量、屏幕亮度、CPU占用率、内存占用情况、流量消耗情况、...
4.最后,依据上述特征同步更新
图3-2 流媒体播放算法优化过程
架构
传统上类似DirectShow、Gstreamer、FFMpeg等多媒体框架的设计理念在于模块化各类组件,利用统一的接口,灵活构建有向无环图式的pipeline,提升复用性和一致性,以支持广泛的不同需求。
但在前文所定义的Personalized Streaming & Playback相关问题上,由于以极致提升用户体验为最优先目标,则与基于传统多媒体框架的播放器相比出发点有所不同,我们由此设立了如下的播放器架构。
图3-3 播放器架构示意图
- 设立统筹决策的策略中心组件 策略中心组件负责提供对播放和下载的控制决策,包括实时的算法决策和后台预计算等,主要目的在于策略算法化是长期、频繁发生的事情,将各组件自行决策的部分(即前文Action Space段落中的Atop)迁入策略中心并进行统筹优化。
- 设立全局可见的配置和数据中心 配置和数据中心负责提供全局可见的配置访问与数据访问能力,即简化了不同组件间的数据访问过程,此处所谈及的数据应包含各自模块内部的运行状态数据、中间计算结果等,此处可视为State空间的具象。
- 设立抽象的Framework 统一各组件的设计,使用同一套线程池、锁、消息机制、数据结构、内存Buffer池等基础能力,这部分与传统多媒体框架类似。
- 提供面向性能指标的动态配置能力 传统多媒体框架中的组件同样会提供若干选项,以此带来一定灵活度,例如Gstreamer的libde265dec组件仅提供最大线程数配置,我们认为这还远为不足。由于不同用户在不同场合下所需的“最优”性能表现各自不同,即,假设存在低内存高cpu占用的一种程序写法,和另一种高内存占用低cpu消耗的程序写法,可能应随用户设备的不同状态进行选择相应运行分支。更进一步,我们认为对所有组件,均应当提供面向主要二级性能指标的改进(与兑换)版本,或其局部过程的更精细配置选项,即对一个提供Demux能力的组件,应当存在高/中/低内存占用,高/中/低CPU使用版等,对于其中关键元素,其配置参数应当支持开放可调——意味着策略中心内算法可以动态对其调整。从优化视角看,此处可认为是在提升a(i,k),j与其所对应的QoP(i,k),j,扩大选择空间。
Overall speaking,我们的设计以一定程度的程序复杂度增加,换取了更高的性能兑换的空间和策略统筹控制的空间,使用这种算法中心化的设计,可以提供给用户更为个性化、更极致的流媒体下载与播放体验。
2. 个性化质量调度
通常一家视频平台为内容分发和容灾考虑会使用数个CDN供应商,作为短视频平台方,则需要考虑如何利用CDN厂商资源下发内容以提高播放体验和节约带宽成本。
传统做法是基于流量的成本约束和负载均衡情况做随机分配,更进一步的是结合资源质量进行动态调度。但该方式没有考虑到实际用户特性,例如不同用户在观看视频过程中对当前网络质量的需求差异,以及视频特性(如热度)。
我们的做法大致包括,基于用户所处的播放状态、对的偏好,对每个用户每次网络请求进行优先级定义,在成本约束下为其匹配最佳的网络资源进行个性化质量调度,整体图景如3-4所示。
图3-4 个性化调度示意图
优化目标:
优化思路和动作:
CDN质量调度需要解决的主要难题是在动态网络下,预测资源的服务质量,同时在满足成本约束下,结合用户需求做最优分配。成本约束主要限制了不同资源的服务带宽比例,此外还有边际质量下降、单厂商容量天花板等问题。另外,不同用户在不同视频消费阶段对网络质量的需求不同。
具体而言在CDN质量调度问题上,主要需解决两个问题:
- 1. 对于不同网络下载请求,如何定义其对网络质量的需求度(例如速度、延迟、丢包)。
- 2. 对于一次网络下载请求,如何评价、预测网络资源的质量(不同厂商、节点的预期服务质量),决策分配结果。
p,b存在关联,与实际商务谈判有关,例如,提高某厂商的服务量级可能会得到价格优惠。
除了直接为用户提供下载产生的边缘带宽,CDN带宽的另一部分成本来自于回源带宽,短视频应用每天需处理亿级别的新视频发布,同时边缘网络节点存储有限,因此边缘网络的视频文件缓存命中率远不如长视频平台。通常网络供应商的文件存储是基于过去视频文件的访问量完成的,但在短视频平台随机/质量调度策略下,同一个视频文件会被分配给不同的厂商,这会导致单厂商视角下部署的文件无法得到充分利用,造成边缘缓存命中率下降。
由于冷文件的边缘命中率更差,简化起见,会希望利用视频文件的热度变化信息做针对性的冷热调度,即冷文件集中调度到有限的厂商、节点,从而提高边缘缓存命中率。需说明的是,冷热调度和质量调度存在冲突,因此一种可能的划分是,只对冷文件做定向调度,热文件做个性质量调度。
视频请求的回源带宽可以表示为
如上文提及的质量调度或者业界的成本调度,都会将视频文件请求随机/均匀的请求到厂商/节点上,这会降低厂商视角下视频文件的热度,从而命中率进一步下降,通过调度提高视频文件的边缘命中率,从而对回源带宽优化,思路是将视频文件只定向分发给单一或有限个厂商、节点。但如果对所有视频都做定向调度,那么很有可能造成厂商/节点的负载突然过大,因此应主要针对冷文件做定向调度。合理的方案是将视频文件热度作为文件价值进行预测,基于预测结果划分文件冷热,例如选择出top N%的冷文件做定向调度,或者使用一致性hash算法。
CDN厂商部署文件的通常做法是基于过去短时间的文件访问量进行缓存(例如LRU策略),前人曾尝试从流量分配角度将更多请求分配到有缓存的CDN节点上,或者通过历史流行度分析视频请求后的部署策略。为提高边缘请求命中率,一种可行的思路是通过预测视频流行度,决策是否需要在边缘节点提前进行文件缓存部署。
以月95峰计费方式举例,假如全天的带宽波形变化存在峰谷,我们可以利用低谷闲置的带宽资源来做视频文件的提前部署,从而提高未来尤其是晚高峰的CDN边缘命中率。
合理的方案包括:
- 实现视频档位价值计算,并进一步拆分区域运营商进行预测(节点服务通常不会跨运营商、跨区域,会带来一定质量损失和成本上升)。
- 为了避免热文件的集中部署带来节点负载过高,使用知识图谱技术对文件进行相似度刻画,将需要预热的视频文件按照整体文件相似度最大的原则进行部署。
对于CDN供应商,峰值计费的方式通常比流量计费方式更划算。在多CDN峰值计费的情况下,成本是各厂商的95峰之和。因此对于视频平台,存在动力通过分配用户下载请求,控制各家CDN带宽波形做进一步的成本优化。即在总带宽T给定情况下,降低各家厂商的计费值,定义带宽调度复用率(Scheduling Reuse Rate)如下
对于时段的筛选,根据计费方式,预测月粒度带宽95峰内的时间区间,详见下文Context服务部分,作为每天堆高的时间段。堆高的方式可以有如下三种,考虑到实现复杂度同时尽量减少厂商节点的单天带宽抖动,考虑使用隔天错峰的方式。
图3-5 CDN错峰堆高方法示意图
3. 按需下发
下发服务
将视频的更多可用档位下发到客户端,有助于提升客户端策略的决策空间,但同时下发/传输/数据解析本身具有开销,如果下发对客户端无用的档位文件给客户端,对整个系统性能会有负向的影响。所以问题在于,如何在下发侧选择最优的“可能组合”给客户端,平衡服务端、客户端决策的差异,同时考虑下发动作本身的代价。
方案 可以设立该问题的形式化公式如下:
其中,
在实际优化中,由于一般不会很大,例如<100,所以在适当剪枝后遍历是相对容易的。主要的工作在于在状态下对、以及的估计。
Context服务
Context Service主要是针对某一性能相关的全局指标,给出未来趋势的预测,例如,预测未来5分钟的带宽,以及带宽在全天带宽中的分位值,其他指标可以有全局视频播放量、网速分布变化等,服务的输出主要作为其他算法的输入,即给出相应的时序预测结果,可以:
- 用于影响前文调度和下发工作的结果,例如在下发前根据预测结果进行下发内容的重排或过滤。
- 将预测结果嵌入下发内容,供客户端进行算法决策。
- 将预测结果传输至服务端模型使用(例如UIAE的各算法环节)。
用户-内容感知编码
1. 问题背景与解决框架
图4-1 基于用户-内容感知的编码(UIAE)
即在某一时刻,用户观看视频时,转码策略应当感知当前时刻每个用户所处的Context,并结合用户个性化特征,计算出来最适合每个用户的档位并实时转出。但由于转码成本高、转出延迟长、搜索空间广等原因,实践中直接按此逻辑设计并不可行。
为了应对上述挑战,可考虑做如下近似:
- 聚焦热门视频:分析发现短视频应用往往Top 1%的视频占到70%+的播放量,同时尾部视频生命周期短,转码ROI低,基于热门视频,可以将视频处理量从数十亿级别压缩到千万级别。
- 提前转码:可以首先预估视频未来一段时间的消费用户分布Ug。基于Ug,计算该视频最合适的档位组L。为应对视频消费分布快速变化,需持续更新最优档位组L,以适应用户的最新播放需求。
- 基于转码资源Quota限制和吞吐限制,转码队列采用Weighted-batch模式。
基于以上近似,更新优化公式:
图4-2 UIAE技术详细框架
下文中我们将首先介绍Video Value Prediction,构建视频价值模型以预估视频的未来价值,该模型不仅用在UIAE上,在其他场景也有贡献;其次将详细介绍UIAE算法,即如何从个性化角度计算档位组合;再次介绍如何统筹转码资源,从全局视角最大化Reward,最后介绍相关的实验能力。
2. 视频价值预测
问题
价值预测的建模方法主流可分为两种,一种是基于时序预测其预测目标,更适合有一定周期性的领域场景, 另外一种是使用DNN等深度网络直接回归建模,通用性更强。
在短视频转码场景,视频价值判断所面临挑战主要在于:
- 长尾效应严重。高热视频占比极低,但同时占据了绝大多数播放量,这就导致在回归建模中,容易被高价值视频带偏,需要谨慎设计目标函数。
- 短视频生命周期短同时消费趋势呈现多样性。绝大多数的视频生命周期都很短,不同内容的视频消费随时间分布也呈现很大差异。这就需要我们要获取更多特征。
方案
为了增加视频价值模型的通用性,建模目标包括但不限于未来多个时间段的播放量、播放时长、点赞量、下载量等,我们统一用表示预测目标,y表示真值。
- 视频价值建模使用到的特征:
作者侧特征组:作者ID、活跃度、发文量、粉丝量、观看量等。
视频侧特征组:音乐ID、内容、时长,当前播放量,点赞量,播放增速、原创度、投放设置等。
Context特征:时间、节假日等。
可选的Loss设计如MSE和Huber Loss以及Weighted log loss等常见的loss函数。模型结构:这里给出线上使用过的一种视频价值模型结构,DNN + LHUC + BIAS,如图4-3所示:
图4-3 视频价值预估价值模型
评估指标:如Regression-AUC和MAE等。
下文给出了此种设计与Rule-based的Topvv策略(依据当前播放量)和大v策略(依据作者粉丝数)的对比效果:
表 4-1 效果评估
3. 用户-内容感知编码
若认可用户会因为客观因素(如机型性能,网速)和主观倾向不同而对播放的档位存在差异化需求,如4-4所示。
图4-4 用户观看视频的不同档位
那么对某一个具体的视频,针对消费群体,应当转码为哪些版本才是最优?这个是User-Item Aware Encoding(UIAE)需要去解决的问题。
不同于推荐可以得到较为精准的反馈信号,播放场景下很难精准得到关于一个视频的最优档位组的反馈。因此一种可行的做法是类似于梯度上升的迭代思路,在视频的整个消费周期内设定消费窗口,在每个窗口下都计算未来最合适的档位组,以此不断地迭代档位组, 确保其不断逼近理想值。
图4-5 档位组收益曲线示意图
基于此思路,我们给出一种技术方案如下图所示:
图4-6 User-Item Aware Encoding整体方案
建模算法思路如下:在转码侧,通常重在关注流畅体验和画质体验,即:
所控制的编码选项包括但不限于以下维度,对不同视频的相关性能(画质、码率、编码速度)表现可预计算(预测)出(即CAE编码的常用工作方式)并供UIAE和Resource Allocation Model决策使用:
表 4-2 编码控制参数
4. 资源分配模型
当一个视频通过UIAE决策得到档位组,即可进行转码并消费,但从全局角度看,转码调度并非一个简单All-in操作。
- 转码资源的有限性:不可能同时满足所有视频的转码请求,且不同的短视频的转码成本差异巨大。
- 转码资源的异构性:不只有x86 CPU,还有Arm CPU、FPGA、GPU、定制编码芯片等硬件,各自具备不同的转码效率和转码成本。
- 转码资源的延伸影响:对应不同转码产物的CDN带宽影响与存储成本影响。
对于转码调度,全局优化目标可以设置为:
仔细观察优化目标,是带有约束条件的最优化问题(背包问题),但直接求解会遇到如下问题:
仔细观察优化目标,是带有约束条件的最优化问题(背包问题),但直接求解会遇到如下问题:
- 精准量化可用转码资源非常困难,转码资源机房之间调度、负载均衡、buffer策略都会有影响可用资源计算。
- 热门视频也有千万级别,求解最优化问题复杂度过高。
因此可采用近似流式处理方式,每此处理一个小批次,并重新定义可用资源。
图4-7 转码流程示意图
5. 实验方法
与常见的AB实验不同,在视频类实验中需要进行诸多额外实验能力的设计以支持前述算法的迭代工作。首先,由于资源约束,通常转码类实验需要针对部分视频进行,仅影响一小部分视频,因此需要设计策略标签能力,对用户层AB实验与视频策略间建立映射关系,示例如下图:
图4-8 视频策略AB实验示意图
一些基础的需求如下:
- 1. 对不同转码产物标记其策略。
- 2. 对不同转码产物能根据转出时机,对齐用户组进行过滤。
- 3. 支持区分转码时机的策略。
- 4. 对不同请求可以根据AB实验用户分组返回不同转码标签的内容。
- 5. 支持转码资源池的动态划分以保证实验公平性。
其次,应当支持摒除推荐内容影响的实验方式,并在实验过程中尽量区分出对不同用户的影响,借鉴搜索场景常见的interleaving实验方式在经常会提到,把要对比的两个排序结果混插到一起,发给同一个用户,在某些场景下将能带来较好的评估作用:
图4-9 AB Testing与interleaving示意图
上图是Interleaving实验的大致流程,最终返回给用户的是merge之后的结果,即同一个用户在一次feed中既看到了实验组的结果,也看到了对照组的结果。对于一次feed请求,有两种方式进行点播策略interleaving:
- 1. balanced_assign:纯均匀分配,思路就是先选一个策略交给第一个视频,之后的视频交替使用AB策略。
- 2. team_draft_assign:每个视频选择必从A或B中抽出一个策略,且每次选取都会随机进行A优先或者B优先。由于观看视频被随机地播放,可近似认为这是同一用户对两种不同转码策略的观看效果比较。
最后,上述做法在评估某种转码策略的效果时,会对某一个源文件的不同对比策略各自转码,随后比较实验组和对照组的业务效果,所需资源较大、实验周期较长。此处介绍一种新的实验方法,称之为“Quasi Experimental”,能够在节约转码资源的情况下,快速准确的评估转码策略的价值。
该方案主要是基于现有观测数据人为构造实验组、对照组以及相应的播放行为,业务指标/性能指标。以转码策略评估为例,具体方案如下:
- 用户维度:实验组和对照组用户尽可能随机分布。
- 视频维度:选取待转码视频,随机分为两个子集A和B,对两个video集合进行调整,使其满足关键维度分布一致,例如当日播放时长、观看视频品类、视频消费分辨率等。
- 调整观看记录:对当日的播放记录进行调整,删除实验组中用户对集合A中视频的观看记录,删除对照组中用户对集合B中视频的观看记录,以保证了对照组用户的观看视频都来源于转码策略A(线上策略),实验组用户存在部分观看视频来源于转码策略B(待评估策略)。
图4-10 准实验方案
基于预见的投稿发布
1. 问题背景与解决框架
由于一般的投稿的选取与剪辑过程过于私人化,此处假设用户已经完成视频的编辑,重点介绍一些较为通用的决策问题,依据合成编码、上传和优先级设置划分成三部分,参考图5-1:
图5-1 投稿体验优化过程
由于投稿视频的编码质量会影响转码后的产物,进而影响播放消费,因此投稿优化时应当对端到端进行统筹考量,即除提升投稿场景的业务价值外,也考虑投稿体验带来的消费价值。整体的优化目标参考下式:
同时,投稿场景也存在多种优化影响路径,试分析几例如下:
同时,投稿场景也存在多种优化影响路径,试分析几例如下:
2. 基于预见的合成
当用户创作完毕后,需要对素材进行合成编码,传统做法是根据预配置的合成编码参数对素材、滤镜、特效等进行编码等处理。但预配置的合成编码参数是一种平权参数,忽视了每个用户对视频编码结果预期,同时用户所处的环境会改变用户预期,如使用不同机型、在不同网速条件下也有不同,基于此思考,我们充分挖掘用户和视频特征,采用个性化的技术方案对编码方式以及编码参数做智能预测。
在合成阶段,主要基于路径1和2以最大化收益,一种可行的思路是将过程拆解为我们称之为Smart Encoding Model和Dynamic Encoding Parameter两个模块,逐次优化,每个模块可以互不干扰,Smart Encoding Model需要解决的问题是选择编码模式,Dynamic Encoding Parameter需要解决的问题是在已经决定了编码模式的情况下选择具体的编码参数,此处由于两个子问题优化目标一致,也可以尝试联合决策。
智能编码模型
图5-2展示了该编码模式选择的思路:
5-2 智能编码决策
动态编码参数选择
5-3 动态编码参数决策
3. 精细化上传发布
在对文件进行上传的过程中,同样存在若干可以决策的环节,例如从所有可用上传节点中选择较高质量的节点,开启分片上传(Chunked Mode)或者流式上传等,分片上传是一种常见手段,即将文件切分成不同大小,分别进行上传,流式上传把整个文件划分较小的Range持续发送。常见的上传过程如图5-4所示:
图5-4 发布上传过程简要
分片上传的主要影响因素在于,过小的分片会导致整体建连耗时增加,但分片失败率降低,过大的分片则相反,同时分片大小往往不易及时调整,此外,由于分片上传通常利用普通的文件上传协议,对上传节点友好,易于使用并行、多节点上传等更复杂的技术。流式上传通过断点续传机制减少重试,同时减少分片之间等待Ack和Response时间,从而降低文件的上传时长,相当于等于1的分片上传,优点是传输过程控制灵活,缺点是容错实现稍为复杂,且不易并行。不同的方法各有其优缺点,因此需要个性化决策(图中的Upload Decider)的内容包括:
- 选择流式还是分片上传模式
- 假设选取了分片上传模式,则需要进一步决策分片大小和并行数、上传节点等 在本问题上,包括CDN节点的网络列表、各个网络节点的上传失败率在内的先验知识能够较大地影响决策效果。
图5-5 基于个性化的动态上传参数决策流程
明显可见,如果用户在发布前犹豫过久,甚至可以达成点击即发布成功的效果,但这一方法也存在明显代价,用户可能取消发布动作或回退修改,导致浪费,因此还需要对同一用户的多次投稿行为进行估计,以使相应节约带来的收益大于某次预判错误带来的损失。
4. 自适应优先级
当端上用户点击发布视频之后,往往会切到其他页面继续浏览视频,甚至切换到其他app使用,这样会导致系统上传进程优先级降低甚至被杀死,进而引发上传失败。简单的做法是强制提高上传进程优先级(比如将进程从后台切换到前台),但这种方法虽然能提升发布成功率,却可能劣化其他体验(如消费侧卡顿,系统功耗上升等),引发用户不满,因此,如何更合理的分配进程优先级成为一个可以进行个性化决策的问题。如图5-6所示:
图5-6 上传优先级决策示例
例如,当应用执行视频上传动作时,用户将app切换到后台,则我们可能应当将后台上传进程转至前台进程(提高优先级),确保上传的成功率,提升用户体验。但当用户正在其他页面行动时,则不应提升上传优先级,甚至应当暂停合成或传输,为用户其他出让CPU、内存或网络带宽资源,虽然投稿本身的失败率可能增加,但用户更即时的兴趣得到较好满足,整体体验是提升的。
效果与结论
1. 效果评估
在过去数年的工作中,以上体系的工作与传统音视频优化工作相比较,额外收益幅度如下(即不计入如编码器升级、传输协议优化、工程改造等常规音视频工作内容),也即该体系带来的增量优势:
表6-1 各个方向收益概览
竞争视角看,字节跳动自2019年以来,在不同市场均已逐步成为Tier 1的短视频服务提供商,侧面印证了上述技术的成功。
2. 结论
在本文中,我们介绍了字节跳动自2019-2023年间短视频服务的部分工作及其成果,系统性地阐释、构建了个性化播放这一前沿、交叉的技术域,明确地定义了该领域中的一系列子问题,并给出了部分问题的实际解法。在这一新技术领域中,我们认为应当:
- 建立完整的技术工作流程,重点在于使用AB实验等精确评估技术,保证每个技术项目均带来业务指标提升。
- 运用个性化技术范式进行决策优化,包括:
拓展常规的指标为更全面的性能指标组。
从建模上直接面向业务收益指标,并构建个性化的中间指标。
拓展使用全面而非简化的User、Item、Context特征。
使用与推荐、计算广告等领域前沿对齐的深度神经网络、强化学习、因果推断、运筹学等技术,用于决策方法本身或用于特征、画像建设。
- 以个性化决策为核心,重新评估、规划音视频领域的各项工作:
重新设计多媒体框架、播放器方案和服务系统,承载复杂的决策控制能力,并拓展决策点。
重新设计编解码和前后处理组件、视频质量评估方法,拓展个性化调整能力。
重新设计网络传输方法、CDN功能,乃至商务谈判策略,拓展个性化调整能力。
本文虽以短视频播放相关技术为例,但其思想也完全适用直播等其他音视频领域的工作,例如,与点播相比较,直播在技术指标上将关注额外的实时性要求,在技术重点上关注拓扑,在此之上同样应当将系统整体抽象为面向业务目标的优化问题,以个性化决策驱动各环节工作的演进。又例如,本文主要讨论的优化范围集中在应用内部,但各种相关、衍生的问题也完全适用同样的方法进行改造。
音视频技术领域的广泛开展若自微软的DirectShow技术发表计,已接近30年,服务数十亿用户,基于编码与视频处理技术、传输协议、工程框架、云服务等环节展开的工作虽然不断演进,提升难度却与日俱增,边际价值逐年减少,但这并非说明该领域已然日薄西山,由我们开拓的个性化视频技术体系,改变了该领域的边界与工作重心,其可以更具想象力地容纳多种传统音视频技术以外的技术发展与其交叉(包括流行的LLM/AIGC技术),可以拓展出新的、广阔至近乎无限的提升上限,让世界上数十亿用户都能更好地享受音视频技术带来的生活提升。