短视频在过去数年内成为主流的内容创作和信息分发渠道之一, 字节跳动提供独特的视频播放体验,吸引了全球数十亿用户, 一项重要的贡献因素是其先进的个性化视频技术。过去五年间,团队完整开创了这一崭新的技术领域以优化用户体验, 在此我们首次向业界披露个性化视频技术区别于传统音视频技术的主要概念和部分方法, 希望对整个行业有所启发。本文系“个性化播放技术”的中文精简版,欲了解更详细内容可参考原论文。论文链接: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. 方法论
沃伦·巴菲特曾经论断,企业的价值,甚至任何资产的内在价值,本质上是其未来现金流以适当利率折现的现值,其形式可写为:
仿照该论断,假设某个用户在时间对业务的营收贡献原本是,而通过某技术领域的工作,对该用户业务营收贡献的影响增益为,即有了该技术后用户业务贡献从增长为,则该技术对用户的增益价值可以表示为:
那么,对于类似短视频这样的toC公司而言,整个公司的价值可以表示为对所有潜在用户营收折现的总和,则该技术领域的工作,在于最大化(正向)所有用户影响的一个总和:
注意,以上公式系为便于理解问题所作的概念性描述,我们无论新构建一个系统、进行组件改造或者更换一种策略,都应当评估对用户的影响、对业务指标与成本的影响,计算收益增量。此外,这里存在一些明显的约束,例如技术成本和各业务的可投成本,即考虑边际效应、募集周期和市场上限:
个性化视频技术的理念在于,对不同用户,根据对其偏好和习惯的理解,综合考虑观看内容、时间、场景、设备、网络等所有影响维度,对音视频领域所具有的不同技术进行重新估计与选择性运用,提供整体最优效果。即以控制和决策为核心,强调整体最优、强调对不同用户及其相关影响维度采用不同技术。与之对应,传统音视频领域的工程实践未对不同用户的差异化诉求予以足够关注和满足,往往以固化的框架和能力为核心,寄希望于发展通用、统一的技术提供给用户,或陷于局部较优的方案,这在高用户规模、高偏好方差的视频应用体系中将丧失巨大的提升空间。
基于以上理解,我们重新设立了个性化视频技术的工作流程,参考图2-1,在此流程中将针对每次改进评估其用户影响,这不是一个很新的思路或者方法,但将这套方法置于核心地位,以此驱动传统的编解码、协议、框架、服务等开发工作,则属于首创,借助字节跳动数据驱动的文化和相应工具(例如AB实验平台)得以实现。
图2-1 个性化音视频技术工作的通用流程
2. 目标定义
从通用角度看,ToC的社交媒体类业务广泛使用(Life Time)表示一段时间内用户的活跃情况,以及使用(Average Revenue Per User)表示每用户平均收入,此处为后文讨论方便,我们做一简化,即设定短视频业务的整体目标为(Life Time Value):
用户反应类的指标提升,如时长、投稿数等,实际反映了用户是否对服务满意,此类指标均可以考虑折算为,所有营收类的指标均折算为。因此可以设立收益指标代表一项工作为业务带来的改变:
这里表示ROI系数。
基于上述目标,我们设立二级指标,音视频领域大家会观测EBVS(Exist Before Video Start)、VPF(Video Playback Failures)、VST(Video Startup Time)、Rebuffering Ratio等不同指标。但我们认为这并不足以刻画用户的信息,也并不能完整反映用户播放过程中的状态变化,因此会设立一个更为全面、开放的指标组(Quality of Performance)表示多维度的完整性能体验。具体定义参见表2-1 ,同时也会估计不同性能指标对业务指标的影响。
表2-1 部分性能指标定义
注意,以上表格内并非全部指标,其影响幅度将随业务发展阶段与环境而变化,指标组所涵盖的指标会发生增减,变更影响幅度也可能发生大幅改变。
在评估环节,我们将对每个项目计算profit和ROI,并根据业务场景和目标设定不同的调控不同的成本价值。并令其满足以下上线条件:
1. 2. 可归因。性能指标组的观测中给出符合预期的原理解释。评估方式主要以线上AB实验(包括正向实验、反转实验)为主,辅以问卷调查、反馈统计、AA对比、指标监控、变动归因等方法进行。
基于以上原则,我们会放弃部分较新但不实用的技术,构建一系列复杂度远超常规的方案,实践证明,内部观测到的收益和市场竞争表现都相当突出。
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 个性化流媒体播放模块示意图
上述播放服务的优化目标可用下式所示:
其中,
包含所有相关状态,包括User、Item、Context等维度状态。 表示动作集合,包括下发、调度、流媒体播放等所有模块上的动作。 表示为在状态条件下选择动作的策略。 表示在整体状态下,按照策略执行动作,用户播放内容列表的相关性能体验的期望。 包括具体的视频内容和档位文件。内容由推荐算法和用户选择决定,档位由转码服务决定。 表示用户在整体状态下以的性能体验观看内容列表后能获得的业务价值的期望。所以对所有用户的业务价值的总和即表示产品的总业务价值。 表示在整体状态下,按照策略执行动作,所带来的成本的总和,在本章的部分问题中,整体成本与每所带来的成本之和相等,我们只需关注单一用户甚至其每次播放动作相关的影响即可,但另一些问题中由于存在明确约束,需要关注的是成本总和。
整个流媒体播放的优化工作即为寻找最优的策略,同时为可执行性考虑,需要在各个环节中均保证的迭代可以以一种持续、贪心的方式增加。
1. 个性化流媒体 & 播放
问题
根据短视频应用的特点,信息流播放占据绝大多数的用户时长。在信息流播放过程中,一次信息流请求会获取一个排序过的Item List,供用户顺序观看(用<user,item>表示一次播放),播放器理应依据对观看行为的预判,提前下载每个视频最可能被看到的片段,并提前准备播放相关组件,以保障列表中的各个视频的启播速度、流畅度、画质等效果,即,优化目标不再是单次播放的效果,而是用户在整个播放序列中的综合体验。
方案
思路
对于客户端的下载、播放策略优化,业界一般以或者某几项指标加权求和的为建模目标,历史工作一般集中于基于ABR、缓存控制等下载相关动作的控制,但往往和真实用户的体验与业务目标偏差较大,对下载过程中的用户、视频以及上下文信息利用不足,同时对播放过程如解码、渲染等过程控制阙如,更遑论联合优化。我们期望直接以业务目标建模,同时由于在客户端可以近似忽略全局性约束,因此能够以单用户最大化为目标:
其中,
表示所有在客户端执行的动作集合,如是否超分、是否预先渲染、是否预下载、下载大小等,由于某个动作选择会对多个体验维度产生影响,相应动作空间维度极高,实践中需要分治,但亦需在重要维度统筹。 表示包含用户状态如设备评分、播放器缓存、消费画像,视频状态如视频列表中的码率、画质、音频响度、预测消费时长等,Context如业务场景、网络环境等。 表示状态空间内用户的状态。 表示用户对所获得的收益。 表示用户在不同状态下选择动作,提升的策略,此处可分为两种优化路径:
动作空间
客户端流媒体优化动作空间的动作,可以根据执行的主要是下载,还是对播放器其他环节的操控粗略地分为下载动作和播控动作。
在短视频应用中,需要保证决策动作的完备收集,即考虑所有对目标具备一定影响强度的因素(动作),一种可行的梳理方式是面向所有工程模块(组件或组件内的代码块),及其占有CPU、GPU、IO、Memory、Disk、Socket等资源的维度构建矩阵,对矩阵元素遍历,评估是否存在不同实现方式或者接受不同参数范围,并估计其对指标的影响幅度,影响幅度前列者即纳入决策范围。
表示某个工程模块的第种实现方法对第个资源的使用量。 表示带来的影响。 表示取影响最大的TopK个。 则是对应的((工程模块,实现),资源)对的列表,即我们期望决策的动作。
状态空间
状态空间中的状态即是策略所需的特征信号,更大的状态空间通常意味着更高的优化上限。为了实现个性化的目标建模与策略优化,在状态空间的构建时应当系统化考虑Rule-based、Portrait based、Individual等不同层次的状态,从User、Item、Context等角度构建。
基础的特征建设只需满足相关性即可,除却原始数据外,也应当针对各指标的维度建设能够充分识别性能状态的实时特征,以及对未来表现建设预测类特征。
画像建设可以通过目标驱动,即根据期望优化的指标构建对应画像,例如流畅度敏感画像、画质敏感画像、流量敏感画像、存储敏感画像等等,也可以利用业务先验信息,对用户的投稿或消费的类别、层次建设对应画像,更进一步说,任何User、Item、Context维度能予以划分,并与具备指标变动相关性的数据属性均可使用。
以画质敏感画像为例给出一种做法,根据线上用户的播放结果,收集用户基础信息、性能特征、分档位的播放数据、历史行为特征等,使用Uplift模型预测Treatment和播放时长的分位数回归,根据模型表现(uplift-value)将人群划分成不同分组。显然,该画像将对流畅性和画质平衡相关的决策提供关键信息。
为使用了Treatment策略的业务价值。 表示控制策略的业务价值。 为实际Uplift模型参数。 为根据uplift-value聚合出来的用户群组。
Individual层次特征的构建,通常需要通过数据计算或模型预测构建所需的分类、回归值或概率分布。以用户对某一视频的播放时长这样的特征来说,历史上有一些工作对此进行了预测和使用,其或者基于用户过去几次播放的结果进行预判,或者使用某一视频被所有用户观看的分布代替具体用户的观播时长分布。但这些做法并不适用于短视频平台,由于短视频消费呈现几何分布,生命周期十分短促,同时此类做法过于粗糙,没有充分地考虑个性化。
一种简化的可行做法可以是从片源时长、用户、视频维度各自建立播放时长的分布,并利用参数的加权拟合(参考下式),融合成一个综合的时长分布。
表示用户观看预估播放时长。 是基于视频源片时长建模的播放时长分布,即对源片时长分桶,每个桶计算出播放分布。表示将视频的播放时长映射到对应的时长分桶。 则是根据视频的历史播放时长数据预估的播放时长分布。 则是用户特有的播放时长分布。
同样,我们也可以利用复杂的深度模型进行更精确的预测:
此处取决于场景需求,可以是DNN model或者sequence model等,则是在一次session中用户的观看时长序列和对应的item信息。
优化示例
在特定时间点决策对某一视频下载某个档位,即选档问题,是在流媒体领域中的常见子问题,在短视频的信息流播放场景下的相关问题是下载控制决策,对这两项控制算法进行优化即可视为针对两个(组)动作的决策。由于我们所意图优化的动作空间、状态空间范围远超以往,使用的工具也极为广泛,此处仅以选档和下载控制为示例进行介绍。
传统档位选择与下载控制算法一般目标设置为最大化以代表的:
其中表示视频的质量,一般用码率或其他相关字段表示,表示卡顿时长,表示档位的切换程度,表示带宽成本,、、是超参。参考论文对档位选择和下载控制进行了联合优化以提高优化空间,但优化目标依然一致。
对于的改进,过往业界的工作中亦有过零散的尝试与讨论,例如有尝试通过在实验室环境中让每个用户对不同清晰度&流畅度的播放体验打分的方式获得不同用户对视频播放不同的画质、流畅偏好,以此对不同用户设定偏好权重参数,也有设计了一套标注方法,通过众包平台标注获得用户对不同视频及其不同片段的画质/流畅偏好,以此提升不同视频符合用户偏好的。
在我们的工作中,对档位选择和下载控制的处理,遵循前面提及的思路,有以下不同:
映射,构建不同用户观看不同item时,对不同维度体验的敏感度与偏好。并迭代对应的决策函数。抽象来看,整体流媒体播放领域算法的优化均与上述选档和下载任务的优化过程类似,可区分为线上的工作过程(Algorithm 1)和离线更新特征、、的过程(Algorithm 2),如图3-2所示:
架构
传统上类似DirectShow、Gstreamer、FFMpeg等多媒体框架的设计理念在于模块化各类组件,利用统一的接口,灵活构建有向无环图式的pipeline,提升复用性和一致性,以支持广泛的不同需求。
但在前文所定义的Personalized Streaming & Playback相关问题上,由于以极致提升用户体验为最优先目标,则与基于传统多媒体框架的播放器相比出发点有所不同,我们由此设立了如下的播放器架构。
图3-3 播放器架构示意图
设立统筹决策的策略中心组件 策略中心组件负责提供对播放和下载的控制决策,包括实时的算法决策和后台预计算等,主要目的在于策略算法化是长期、频繁发生的事情,将各组件自行决策的部分(即前文Action Space段落中的)迁入策略中心并进行统筹优化。 设立全局可见的配置和数据中心 配置和数据中心负责提供全局可见的配置访问与数据访问能力,即简化了不同组件间的数据访问过程,此处所谈及的数据应包含各自模块内部的运行状态数据、中间计算结果等,此处可视为State空间的具象。 设立抽象的Framework 统一各组件的设计,使用同一套线程池、锁、消息机制、数据结构、内存Buffer池等基础能力,这部分与传统多媒体框架类似。 提供面向性能指标的动态配置能力 传统多媒体框架中的组件同样会提供若干选项,以此带来一定灵活度,例如Gstreamer的libde265dec组件仅提供最大线程数配置,我们认为这还远为不足。由于不同用户在不同场合下所需的“最优”性能表现各自不同,即,假设存在低内存高cpu占用的一种程序写法,和另一种高内存占用低cpu消耗的程序写法,可能应随用户设备的不同状态进行选择相应运行分支。更进一步,我们认为对所有组件,均应当提供面向主要二级性能指标的改进(与兑换)版本,或其局部过程的更精细配置选项,即对一个提供Demux能力的组件,应当存在高/中/低内存占用,高/中/低CPU使用版等,对于其中关键元素,其配置参数应当支持开放可调——意味着策略中心内算法可以动态对其调整。从优化视角看,此处可认为是在提升与其所对应的,扩大选择空间。
Overall speaking,我们的设计以一定程度的程序复杂度增加,换取了更高的性能兑换的空间和策略统筹控制的空间,使用这种算法中心化的设计,可以提供给用户更为个性化、更极致的流媒体下载与播放体验。
2. 个性化质量调度
通常一家视频平台为内容分发和容灾考虑会使用数个CDN供应商,作为短视频平台方,则需要考虑如何利用CDN厂商资源下发内容以提高播放体验和节约带宽成本。
传统做法是基于流量的成本约束和负载均衡情况做随机分配,更进一步的是结合资源质量进行动态调度。但该方式没有考虑到实际用户特性,例如不同用户在观看视频过程中对当前网络质量的需求差异,以及视频特性(如热度)。
我们的做法大致包括,基于用户所处的播放状态、对的偏好,对每个用户每次网络请求进行优先级定义,在成本约束下为其匹配最佳的网络资源进行个性化质量调度,整体图景如3-4所示。
图3-4 个性化调度示意图
优化目标:
1. 峰值计费
CDN质量调度需要解决的主要难题是在动态网络下,预测资源的服务质量,同时在满足成本约束下,结合用户需求做最优分配。成本约束主要限制了不同资源的服务带宽比例,此外还有边际质量下降、单厂商容量天花板等问题。另外,不同用户在不同视频消费阶段对网络质量的需求不同。
具体而言在CDN质量调度问题上,主要需解决两个问题:
1. 对于不同网络下载请求,如何定义其对网络质量的需求度(例如速度、延迟、丢包)。 2. 对于一次网络下载请求,如何评价、预测网络资源的质量(不同厂商、节点的预期服务质量),决策分配结果。
对于一次网络下载请求,为了满足播放流畅存在对网络质量的最小需求,假设认为其取决于具体用户、视频以及当时的播放状态,扩展前文定义为每次请求的状态,对于给定的网络下载请求,网络资源厂商的服务质量定义为。每种资源的成本约束体现在带宽的目标量级上,假设总带宽为,对厂商的分配应该满足预期分量比例,其中为厂商的带宽比例。那么问题即是为每次下载请求提供满足质量需求的资源,即设计调度策略最大化用户体验,
这里函数表示完成资源分配后的用户观看视频的实际体验带来的价值,注意到假设流量分配比例是固定的,因此以上策略需要满足厂商分量约束,避免某个厂商质量好/差,导致实际资源分配过多或过少。
定义需要结合用户对播放性能的敏感度和当前播放状态决定。对于调度算法,需要预测CDN的服务质量,一种可行的方式是基于关键特征分组+实时预测的方法解决网络表现的动态性。主要分为特征分组、质量预测、调度决策三个阶段。
通常厂商的资源分配比例只考虑资源的服务质量(例如可用性、速度)和成本单价,如过去工作主要从CDN厂商内部角度研究用户请求与内部节点成本(带宽、存储)的分配方法,,缺少对用户体验价值影响的衡量,此处进一步讨论分配不同CDN厂商服务比例。
做如下数学符号定义,CDN资源厂商,带宽单价,带宽流量比例,,n表示厂商数量,则根据单价和分量,可以计算得到带宽成本
存在关联,与实际商务谈判有关,例如,提高某厂商的服务量级可能会得到价格优惠。
体验价值定义。在调度分发策略不变的情况下,体验价值与资源的关系以表示(我们认为资源质量与资源单价和资源量级相关,即资源单价和量级是影响体验价值的主要因素) 容灾约束。需要保证厂商的数量不少于个,以及厂商自身带宽容量限制。在满足容灾要求的情况下,分量目标是效用函数(体验价值-成本)最优,即
基于当前的CDN分量标准,通过AB实验可以验证不同分量标准下的效用函数;借助梯度下降的思想,我们的分量目标可以按照做调整。但和模型训练不同的是,实验验证往往需要数周,因此无法遍历所有参数,这需要引入大量先验知识辅助决策,例如测量不同CDN 厂商的下载速度、播放性能,从而减少分量调整搜索空间。
除了直接为用户提供下载产生的边缘带宽,CDN带宽的另一部分成本来自于回源带宽,短视频应用每天需处理亿级别的新视频发布,同时边缘网络节点存储有限,因此边缘网络的视频文件缓存命中率远不如长视频平台。通常网络供应商的文件存储是基于过去视频文件的访问量完成的,但在短视频平台随机/质量调度策略下,同一个视频文件会被分配给不同的厂商,这会导致单厂商视角下部署的文件无法得到充分利用,造成边缘缓存命中率下降。
由于冷文件的边缘命中率更差,简化起见,会希望利用视频文件的热度变化信息做针对性的冷热调度,即冷文件集中调度到有限的厂商、节点,从而提高边缘缓存命中率。需说明的是,冷热调度和质量调度存在冲突,因此一种可能的划分是,只对冷文件做定向调度,热文件做个性质量调度。
视频请求的回源带宽可以表示为
其中,分别表示一次视频下载请求和对应的网络资源,如果厂商边缘节点缓存了请求的视频文件,则,否则会产生相应的回源带宽,具体取决于视频文件和具体资源供应商。
如上文提及的质量调度或者业界的成本调度,都会将视频文件请求随机/均匀的请求到厂商/节点上,这会降低厂商视角下视频文件的热度,从而命中率进一步下降,通过调度提高视频文件的边缘命中率,从而对回源带宽优化,思路是将视频文件只定向分发给单一或有限个厂商、节点。但如果对所有视频都做定向调度,那么很有可能造成厂商/节点的负载突然过大,因此应主要针对冷文件做定向调度。合理的方案是将视频文件热度作为文件价值进行预测,基于预测结果划分文件冷热,例如选择出top N%的冷文件做定向调度,或者使用一致性hash算法。
CDN厂商部署文件的通常做法是基于过去短时间的文件访问量进行缓存(例如LRU策略),前人曾尝试从流量分配角度将更多请求分配到有缓存的CDN节点上,或者通过历史流行度分析视频请求后的部署策略。为提高边缘请求命中率,一种可行的思路是通过预测视频流行度,决策是否需要在边缘节点提前进行文件缓存部署。
带宽成本的组成主要分为实际下载的带宽(边缘流量)、文件回源(部署)带宽,对于不同的计费模式(如峰值计费、总流量计费)目标设置有所不同,
对于Percentile-based Pricing,例如95峰值计费方式,需要降低计费点的带宽,即
对于流量计费方式(Aggregate Usage),需要降低总流量
以月95峰计费方式举例,假如全天的带宽波形变化存在峰谷,我们可以利用低谷闲置的带宽资源来做视频文件的提前部署,从而提高未来尤其是晚高峰的CDN边缘命中率。
合理的方案包括:
1. 实现视频档位价值计算,并进一步拆分区域运营商进行预测(节点服务通常不会跨运营商、跨区域,会带来一定质量损失和成本上升)。 2. 为了避免热文件的集中部署带来节点负载过高,使用知识图谱技术对文件进行相似度刻画,将需要预热的视频文件按照整体文件相似度最大的原则进行部署。
对于CDN供应商,峰值计费的方式通常比流量计费方式更划算。在多CDN峰值计费的情况下,成本是各厂商的95峰之和。因此对于视频平台,存在动力通过分配用户下载请求,控制各家CDN带宽波形做进一步的成本优化。即在总带宽T给定情况下,降低各家厂商的计费值,定义带宽调度复用率(Scheduling Reuse Rate)如下
调度复用率越高,说明实际的带宽节省越多, 一般认为调度复用率。当每家CDN 的实际调度比例和预期分量占所有厂商的比例相同时(即不做带宽波形干预),。
通过分配请求比例来控制其带宽需要考虑厂商的资源容量限制,即。堆高需要进行天粒度的决策,基于每天的整体带宽波形,根据堆高高度和厂商剩余免费时长(例如,95计费模式下5%的免费时长)决策在什么时间区间,堆高哪几家厂商以及堆高的带宽流量比例,使得整体复用率最大,即
对于时段的筛选,根据计费方式,预测月粒度带宽95峰内的时间区间,详见下文Context服务部分,作为每天堆高的时间段。堆高的方式可以有如下三种,考虑到实现复杂度同时尽量减少厂商节点的单天带宽抖动,考虑使用隔天错峰的方式。
图3-5 CDN错峰堆高方法示意图
3. 按需下发
下发服务
将视频的更多可用档位下发到客户端,有助于提升客户端策略的决策空间,但同时下发/传输/数据解析本身具有开销,如果下发对客户端无用的档位文件给客户端,对整个系统性能会有负向的影响。所以问题在于,如何在下发侧选择最优的“可能组合”给客户端,平衡服务端、客户端决策的差异,同时考虑下发动作本身的代价。
方案 可以设立该问题的形式化公式如下:
其中,
表示一共有个档位。 表示下发模块的动作空间,其中, 表示不下发档位,表示下发。 表示服务端预测的待下发档位的客户端所处的状态特征,如个性化流媒体&播放节所述。 表示在状态下,在所有个档位中档位是最合适档位的概率,此处“最合适”的概念蕴含了服务端决策与客户端决策的差异,前者理论上可以利用更全局的信息,使用更复杂精确的决策算法,后者可以利用客户端独有信息,更实时地决策。 表示在状态下且最优选档为档位的情况下,如果不选择档位而选择档位而造成的业务和成本损失。 表示在状态下,下发档位带来的传输等相关开销。
在实际优化中,由于一般不会很大,例如<100,所以在适当剪枝后遍历是相对容易的。主要的工作在于在状态下对、以及的估计。
最优档位概率的预估 表示在状态下,在所有个档位中档位是最合适档位的概率,即 关于的预估,可以通过两种思路进行: •归纳法:下发所有的档位让客户端进行选择,获得状态&最终档位选择数据对 •演绎法:基于状态和档位的信息直接对进行建模,从而计算出,具体建模方式可以参考个性化流媒体&播放。 档位替换损失的估计主要根据由于档位和档位的差异造成的,在状态下用档位替代档位带来的流畅性、美学、负载等性能损失以及带宽损失,具体的建模方式可以参考个性化流媒体&播放中对于和的建模。 下发损失的估计 下发损失主要包含传输/解析档位的元数据所带来的开销,既与档位携带元数据的数据量有关,也与网络状况和设备性能相关。所以,可以简单表示为: • 其中和分别表示与设备性能和网络状况正相关的参数,在粗略的估计中,也可以把这两者设为常数。
Context服务
Context Service主要是针对某一性能相关的全局指标,给出未来趋势的预测,例如,预测未来5分钟的带宽,以及带宽在全天带宽中的分位值,其他指标可以有全局视频播放量、网速分布变化等,服务的输出主要作为其他算法的输入,即给出相应的时序预测结果,可以:
用于影响前文调度和下发工作的结果,例如在下发前根据预测结果进行下发内容的重排或过滤。 将预测结果嵌入下发内容,供客户端进行算法决策。 将预测结果传输至服务端模型使用(例如UIAE的各算法环节)。
Context Service本质是时间序列在音视频算法领域的应用,时间序列的模型可以表示为
其中表示第时刻的真实目标,表示静态特征,如CDN厂商,是时序特征,表示在t时刻的未来个时刻的预估值。
我们以时序带宽预测在实际的应用来举例说明,在95峰值计费模式中,带宽存在波峰、波谷,如果可以对带宽的取值以及其当前的带宽分位数提供预测,即可在后续下发与流媒体算法中做出相应的削峰填谷的策略,由于波形的峰谷是天粒度的,带宽预测目标可以是一天内的带宽变化,以五分钟为最小粒度,即
在时刻,带宽的预测值为,当前带宽的分位值为,的实际计算方式取决于对带宽分布的假设,但实际带宽的变化因素复杂,既有静态因素例如节假日、活动(各类赛事、演出)对观看量的影响,又包含实时热点、突发事件对带宽的影响,初阶的方式可以考虑静态因素的移动平均(Moving Average)计算方法,亦可以尝试复杂的TSA方法。
用户-内容感知编码
1. 问题背景与解决框架
对同一视频的提供多种码率,以供消费侧自适应地选择播放,在今天已经成为标准范式,目前该范式仍有一个核心问题缺乏充分讨论,即对某一个具体的视频,应当转码为哪些版本才是全局最优。
其中表示视频转码为档位组,是全局最优的档位集合。这里用来表征转码带来的收益。图4-1展示了理想的转码流程。
图4-1 基于用户-内容感知的编码(UIAE)
即在某一时刻,用户观看视频时,转码策略应当感知当前时刻每个用户所处的Context,并结合用户个性化特征,计算出来最适合每个用户的档位并实时转出。但由于转码成本高、转出延迟长、搜索空间广等原因,实践中直接按此逻辑设计并不可行。
为了应对上述挑战,可考虑做如下近似:
1. 聚焦热门视频:分析发现短视频应用往往Top 1%的视频占到70%+的播放量,同时尾部视频生命周期短,转码ROI低,基于热门视频,可以将视频处理量从数十亿级别压缩到千万级别。 2. 提前转码:可以首先预估视频未来一段时间的消费用户分布。基于,计算该视频最合适的档位组。为应对视频消费分布快速变化,需持续更新最优档位组,以适应用户的最新播放需求。 3. 基于转码资源Quota限制和吞吐限制,转码队列采用Weighted-batch模式。
基于以上近似,更新优化公式:
其中,是群组的权重,表示视频集合,表示全体用户,则表示Top的视频集合,是消费top视频的用户,是消费非热门视频用户。其核心思路是主要优化高价值视频且预估未来消费人群分布,并最终给出适合的档位组。
据前所述,本文中某个视频的定义如下:
是档位组的变化。是档位组带来的成本变化,此处成本包含是带宽成本、计算成本、存储成本等。则若视其差值为,结合消费用户信息,优化目标为:
也就是说我们优化 进而优化,整体的UIAE算法框架如图4-2所示。
图4-2 UIAE技术详细框架
下文中我们将首先介绍Video Value Prediction,构建视频价值模型以预估视频的未来价值,该模型不仅用在UIAE上,在其他场景也有贡献;其次将详细介绍UIAE算法,即如何从个性化角度计算档位组合;再次介绍如何统筹转码资源,从全局视角最大化,最后介绍相关的实验能力。
2. 视频价值预测
问题
价值预测的建模方法主流可分为两种,一种是基于时序预测其预测目标,更适合有一定周期性的领域场景, 另外一种是使用DNN等深度网络直接回归建模,通用性更强。
在短视频转码场景,视频价值判断所面临挑战主要在于:
长尾效应严重。高热视频占比极低,但同时占据了绝大多数播放量,这就导致在回归建模中,容易被高价值视频带偏,需要谨慎设计目标函数。
短视频生命周期短同时消费趋势呈现多样性。绝大多数的视频生命周期都很短,不同内容的视频消费随时间分布也呈现很大差异。这就需要我们要获取更多特征。
方案
为了增加视频价值模型的通用性,建模目标包括但不限于未来多个时间段的播放量、播放时长、点赞量、下载量等,我们统一用表示预测目标,表示真值。
视频价值建模使用到的特征: 作者侧特征组:作者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整体方案
建模算法思路如下:在转码侧,通常重在关注流畅体验和画质体验,即:
过往的播放体验建模方式通常是对流畅度和画质不同的权重加和。但不同用户在不同视频上对流畅和画质的需求存在不可忽略的差异,转码引入个性化是必要手段。一种可行的采用播放序列最大逼近建模的做法思路如下:
设定一个消费窗口(),和视频价值阈值。并在每个消费窗口执行如下步骤: 预估视频价值,如低于,则退出本次档位组计算(即阶段仍然使用)。 计算窗口内的消费和;针对消费者进行聚类,我们得到窗口的消费者分布。 根据,预估; 同时结合、作者历史作品消费特征等输入,预估视频的画质敏感和流畅敏感,用于后续指导档位参数选择。 档位参数选择: 根据画质敏感和流畅敏感与画质敏感和流畅敏感。以及,以及 ,在可选档位参数里面,我们计算得到档位组优化方向(面向画质优化或者流畅度优化)。 根据1产出的潜在档位组,预估和,计算。 选出最大的档位组。
所控制的编码选项包括但不限于以下维度,对不同视频的相关性能(画质、码率、编码速度)表现可预计算(预测)出(即CAE编码的常用工作方式)并供UIAE和Resource Allocation Model决策使用:
表 4-2 编码控制参数
4. 资源分配模型
当一个视频通过UIAE决策得到档位组,即可进行转码并消费,但从全局角度看,转码调度并非一个简单All-in操作。
转码资源的有限性:不可能同时满足所有视频的转码请求,且不同的短视频的转码成本差异巨大。 转码资源的异构性:不只有x86 CPU,还有Arm CPU、FPGA、GPU、定制编码芯片等硬件,各自具备不同的转码效率和转码成本。 转码资源的延伸影响:对应不同转码产物的CDN带宽影响与存储成本影响。
对于转码调度,全局优化目标可以设置为:
其中,表示视频,表示转码档位或者档位组。是转码带来的带宽消耗变动。表示转码带来的存储成本变动。表示总可用资源数,一般是是一个常量。表示视频转了档位(组)。代表视频转了档位组需要消耗的cpu计算资源。
表示档位组的带宽消耗:
表示的各个档位在削峰阶段播放的档位消费占比,则是根据档位组的用户消费加权估计带宽。
用于估算给定档位组的计算成本:
表示处理方式,包括使用何种编码器、处理模块、所选参数等,表示所使用的资源类型如CPU、FPGA、GPU等,函数用于估计档位组的计算成本。
用于估算给定档位组的存储成本:
仔细观察优化目标,是带有约束条件的最优化问题(背包问题),但直接求解会遇到如下问题:
精准量化可用转码资源非常困难,转码资源机房之间调度、负载均衡、buffer策略都会有影响可用资源计算。 热门视频也有千万级别,求解最优化问题复杂度过高。
因此可采用近似流式处理方式,每此处理一个小批次,并重新定义可用资源。
表示当前可使用的转码Quota。Quota的定义是参考视频转码1秒指定参数档位所需的转码成本。对于新的视频档位编码耗时预估,特征主要是参考视频,参考档位参数,以及新视频,新档位参数,新视频的预编码结果,做一个回归模型即可预估出来转码档位组所需的Quota。的计算逻辑可采用PID或其他控制算法,动态调整的大小,流程如下图所示:
图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 准实验方案
收益估计:在实验组T与对照组C中,令观测指标(如播放时长)在视频集合X上的统计值表示为和,则
(这里是简化计算所使用的常数,一般取值在2-3之间) 性能指标估计,统一以如播放vv的指标调整结果为基准:
基于预见的投稿发布
1. 问题背景与解决框架
由于一般的投稿的选取与剪辑过程过于私人化,此处假设用户已经完成视频的编辑,重点介绍一些较为通用的决策问题,依据合成编码、上传和优先级设置划分成三部分,参考图5-1:
图5-1 投稿体验优化过程
由于投稿视频的编码质量会影响转码后的产物,进而影响播放消费,因此投稿优化时应当对端到端进行统筹考量,即除提升投稿场景的业务价值外,也考虑投稿体验带来的消费价值。整体的优化目标参考下式:
、、代表投稿场景的策略、动作与状态,对应为投稿者体验。 、、代表消费场景的策略、动作与状态,对应为消费者体验。
在实际优化时,对用户体验目标的权衡主要可以分成两类:
1.投稿侧与消费侧均存在明确的影响甚至兑换,即需要对消费侧情形进行前瞻性(foresight)估计,此时存在不同的做法: 2. 有许多工作仅影响投稿效果本身,对消费侧影响微弱,此外,投稿上传所需的成本通常较小可予简化,如章节精细化上传发布的场景,在此情形下,我们可以仅优化投稿的价值,即理想公式退化为注重投稿场景体验的局部指标,并附加一个消费体验变动不能为负的约束。
同时,投稿场景也存在多种优化影响路径,试分析几例如下:
1.优化发布内容的视频质量,以提升作者满足度,取得收益,即
2.优化发布时长,以此发布成功率的提升,进而取得收益,即
3.直接优化发布成功率,取得收益,即
从影响路径的视角看,章节基于预见的合成主要基于思路1和2,章节精细化上传发布主要基于思路2,章节自适应优先级主要基于思路3。
此外,在投稿优化工作中,与Streaming与Playback(流媒体播放)的工作类似,可以构建投稿过程的用户个性化偏好,同时建设与此过程对应的用户、视频的特征与画像,据此迭代各问题的优化过程,本章重在介绍投稿过程中,可以个性化决策的问题本身,即其目标权衡、决策内容及影响路径,对如何求解不再过多描述。
2. 基于预见的合成
当用户创作完毕后,需要对素材进行合成编码,传统做法是根据预配置的合成编码参数对素材、滤镜、特效等进行编码等处理。但预配置的合成编码参数是一种平权参数,忽视了每个用户对视频编码结果预期,同时用户所处的环境会改变用户预期,如使用不同机型、在不同网速条件下也有不同,基于此思考,我们充分挖掘用户和视频特征,采用个性化的技术方案对编码方式以及编码参数做智能预测。
在合成阶段,主要基于路径1和2以最大化收益,一种可行的思路是将过程拆解为我们称之为Smart Encoding Model和Dynamic Encoding Parameter两个模块,逐次优化,每个模块可以互不干扰,Smart Encoding Model需要解决的问题是选择编码模式,Dynamic Encoding Parameter需要解决的问题是在已经决定了编码模式的情况下选择具体的编码参数,此处由于两个子问题优化目标一致,也可以尝试联合决策。
智能编码模型
对于编码模式选择问题,我们定义 ,即动作包括软件编码、硬件编码、跳过编码等不同分支,由于此问题上用户之间相互独立,即,设上传时长为、编码时长为,则优化目标为:
图5-2展示了该编码模式选择的思路:
5-2 智能编码决策
由于上传和合成编码可以同步进行,即当合成一段视频时,对处理好的部分能够直接进行上传而非等待合成全部完成。用户感知发布时长取决于上传时长和合成时长的最大值,而上传时长又取决于合成方式 带来的文件大小。实践中,我们可以直接决策如何选择,即预估skip、soft、hard等不同分支,以及各编码分支中后续编码参数的选择概率,以最小化发布时长,进而获取业务收益。
注意此处的编码时长是根据进行修正过的,即 ,对消费价值高的视频允许以更长的时间进行编码,虽然投稿速度的下降可能让创作者不满,但由于发布的视频质提升,对其内容的消费体验提升,会进而提升创作者体验,二者综合仍然可以得到整体的提升。
动态编码参数选择
编码参数对上传体验优化影响较大,常见做法是定义一些预置的编码参数配置,但容易忽视每个用户对不同视频内容编码结果的预期,与前文的工作方式类似,我们首先定义所有可选择的编码参数集合,建立Decider函数并融入个性化特征求解,即,在与方面寻求更佳的平衡点:
式中其他元素与前面章节类同,动作选择包含各种编码相关参数QP、FPS、HDR、Codec、Bitrate、Audio Channel等,整体思路如图5-3所示,步骤大致如下:
1. 对视频内容进行解析,包括判断视频的内容倾向,进行画质估计和预编码等。 2. 对作者期望进行估计,包括作者对视频的画质预期、上传效率预期、及视频的价值估计等。 3. 对消费价值进行估计,即前面章节内提及的。 4. 将上述估计提交Decider,对Video和Audio分别进行编码参数的决策,在过程中还需要引入Prior Knowledge(通常包括如何编码参数动态调整的先验知识)用于辅助,具体决策方法可以用规则也可使用回归模型,但需要进行决策算法准确度与额外计算开销之间的权衡。 5-3 动态编码参数决策
3. 精细化上传发布
在对文件进行上传的过程中,同样存在若干可以决策的环节,例如从所有可用上传节点中选择较高质量的节点,开启分片上传(Chunked Mode)或者流式上传等,分片上传是一种常见手段,即将文件切分成不同大小,分别进行上传,流式上传把整个文件划分较小的Range持续发送。常见的上传过程如图5-4所示:
图5-4 发布上传过程简要
在上传阶段,我们将作为优化目标,即
一次对视频的上传,其时长主要受建连耗时和上传耗时影响,其中流式上传(Streaming Mode)可视为分片数等于1的分片上传,式中则表示失败重传次数,表示分片并行数。在此式中上传决策主要包括CDN质量节点选择、文件分片大小、流式上传、分片并行粒度等,其中CDN质量选择策略和流媒体播放章节所述相近,下面将进一步讨论。
分片上传的主要影响因素在于,过小的分片会导致整体建连耗时增加,但分片失败率降低,过大的分片则相反,同时分片大小往往不易及时调整,此外,由于分片上传通常利用普通的文件上传协议,对上传节点友好,易于使用并行、多节点上传等更复杂的技术。流式上传通过断点续传机制减少重试,同时减少分片之间等待Ack和Response时间,从而降低文件的上传时长,相当于等于1的分片上传,优点是传输过程控制灵活,缺点是容错实现稍为复杂,且不易并行。不同的方法各有其优缺点,因此需要个性化决策(图中的Upload Decider)的内容包括:
1. 选择流式还是分片上传模式 2. 假设选取了分片上传模式,则需要进一步决策分片大小和并行数、上传节点等 在本问题上,包括CDN节点的网络列表、各个网络节点的上传失败率在内的先验知识能够较大地影响决策效果。 图5-5 基于个性化的动态上传参数决策流程
此外,为了进一步压缩发布时长,还可以考虑采用预发布的技术,即在用户未点击“发布”按钮时,通过将合成完成的视频文件提前加密上传,以缩短用户真正发布动作后所感知到的上传时间,需要注意的是,此项技术仅应当在获得用户授权允许的情况下使用,加密操作的目的也是避免任何其他人得到一个非最终版本。此时,优化目标将改为下式,其中代表加密所需时间,若预发布部分所提前的时间较大,则整体可以达成优化:
明显可见,如果用户在发布前犹豫过久,甚至可以达成点击即发布成功的效果,但这一方法也存在明显代价,用户可能取消发布动作或回退修改,导致浪费,因此还需要对同一用户的多次投稿行为进行估计,以使相应节约带来的收益大于某次预判错误带来的损失。
4. 自适应优先级
当端上用户点击发布视频之后,往往会切到其他页面继续浏览视频,甚至切换到其他app使用,这样会导致系统上传进程优先级降低甚至被杀死,进而引发上传失败。简单的做法是强制提高上传进程优先级(比如将进程从后台切换到前台),但这种方法虽然能提升发布成功率,却可能劣化其他体验(如消费侧卡顿,系统功耗上升等),引发用户不满,因此,如何更合理的分配进程优先级成为一个可以进行个性化决策的问题。如图5-6所示:
图5-6 上传优先级决策示例
对于进程优先级决策的问题,我们可以定义优化目标为最大化的与的之和(如果app被切到后台,则的项为0),公式为:
其中为上传进程优先级,是上传进程优先级调整策略,为消费进程优先级。是消费进程优先级调整策略。和是互相独立的策略,二者需要同时满足总资源约束。代表资源消耗,如CPU、内存、带宽等。在求解的过程中,为了简化端上计算复杂度,可以考虑采用贪心策略,即最大化优先级的同时,保持近似不劣化,即
例如,当应用执行视频上传动作时,用户将app切换到后台,则我们可能应当将后台上传进程转至前台进程(提高优先级),确保上传的成功率,提升用户体验。但当用户正在其他页面行动时,则不应提升上传优先级,甚至应当暂停合成或传输,为用户其他出让CPU、内存或网络带宽资源,虽然投稿本身的失败率可能增加,但用户更即时的兴趣得到较好满足,整体体验是提升的。
效果与结论
1. 效果评估
在过去数年的工作中,以上体系的工作与传统音视频优化工作相比较,额外收益幅度如下(即不计入如编码器升级、传输协议优化、工程改造等常规音视频工作内容),也即该体系带来的增量优势:
表6-1 各个方向收益概览
竞争视角看,字节跳动自2019年以来,在不同市场均已逐步成为Tier 1的短视频服务提供商,侧面印证了上述技术的成功。
2. 结论
在本文中,我们介绍了字节跳动自2019-2023年间短视频服务的部分工作及其成果,系统性地阐释、构建了个性化播放这一前沿、交叉的技术域,明确地定义了该领域中的一系列子问题,并给出了部分问题的实际解法。在这一新技术领域中,我们认为应当:
• 建立完整的技术工作流程,重点在于使用AB实验等精确评估技术,保证每个技术项目均带来业务指标提升。 • 运用个性化技术范式进行决策优化,包括: • 拓展常规的指标为更全面的性能指标组。 • 从建模上直接面向业务收益指标,并构建个性化的中间指标。 • 拓展使用全面而非简化的User、Item、Context特征。 • 使用与推荐、计算广告等领域前沿对齐的深度神经网络、强化学习、因果推断、运筹学等技术,用于决策方法本身或用于特征、画像建设。 • 以个性化决策为核心,重新评估、规划音视频领域的各项工作: • 重新设计多媒体框架、播放器方案和服务系统,承载复杂的决策控制能力,并拓展决策点。 • 重新设计编解码和前后处理组件、视频质量评估方法,拓展个性化调整能力。 • 重新设计网络传输方法、CDN功能,乃至商务谈判策略,拓展个性化调整能力。
本文虽以短视频播放相关技术为例,但其思想也完全适用直播等其他音视频领域的工作,例如,与点播相比较,直播在技术指标上将关注额外的实时性要求,在技术重点上关注拓扑,在此之上同样应当将系统整体抽象为面向业务目标的优化问题,以个性化决策驱动各环节工作的演进。又例如,本文主要讨论的优化范围集中在应用内部,但各种相关、衍生的问题也完全适用同样的方法进行改造。
音视频技术领域的广泛开展若自微软的DirectShow技术发表计,已接近30年,服务数十亿用户,基于编码与视频处理技术、传输协议、工程框架、云服务等环节展开的工作虽然不断演进,提升难度却与日俱增,边际价值逐年减少,但这并非说明该领域已然日薄西山,由我们开拓的个性化视频技术体系,改变了该领域的边界与工作重心,其可以更具想象力地容纳多种传统音视频技术以外的技术发展与其交叉(包括流行的LLM/AIGC技术),可以拓展出新的、广阔至近乎无限的提升上限,让世界上数十亿用户都能更好地享受音视频技术带来的生活提升。
👇点击阅读原文,跳转原论文了解更详细内容。