人们每天上传数亿个视频到Facebook。确保每个视频都以最佳质量交付——分辨率最高,缓冲尽可能少——不仅意味着优化视频编解码器压缩和解压缩视频以供观看的时间和方式,还意味着优化哪些编解码器用于哪些视频。但Facebook上视频内容的数量也意味着找到高效且不消耗大量计算能力和资源的方法。
为了做到这一点,我们使用了各种编解码器以及自适应比特率流(ABR),通过根据查看器的网络带宽选择最佳质量来改善观看体验并减少缓冲。但是,尽管VP9等更先进的编解码器比H264等旧编解码器提供更好的压缩性能,但它们也消耗了更多的计算能力。从纯粹的计算角度来看,将最先进的编解码器应用于上传到Facebook的每个视频将效率低下。这意味着需要一种方法来优先使用更高级的编解码器对哪些视频进行编码。
今天,Facebook通过将效益成本模型与机器学习(ML)模型相结合,从而满足了对高质量视频内容编码的高需求,该模型使我们能够优先为高收视率的视频进行高级编码。通过预测哪些视频将受到高观看并首先对其进行编码,我们可以减少缓冲,提高整体视觉质量,并允许Facebook上可能受到数据限制的人观看更多视频。
但这项任务并不像允许最受欢迎的上传者或拥有最多朋友或关注者的内容跳转到最前面那么简单。有几个因素必须考虑,以便我们能够在Facebook上为人们提供最佳的视频体验,同时确保内容创作者仍然在平台上公平地编码其内容。
我们过去如何在Facebook上编码视频
传统上,一旦视频上传到Facebook,启用ABR的过程就会启动,原始视频会迅速重新编码为多种分辨率(例如360p、480p、720p、1080p)。一旦编码完成,Facebook的视频编码系统试图通过使用更先进的编解码器(如VP9)或更昂贵的“食谱”(视频行业术语,用于微调转码参数),如H264非常慢的配置文件,以尽可能压缩视频文件,从而进一步改善观看体验。不同的转码技术(使用不同的编解码器类型或编解码器参数)在压缩效率、视觉质量和所需计算能力之间有不同的权衡。
如何以最大限度地提高每个人的整体体验的方式订购工作的问题已经是首要考虑的问题。Facebook 有一个专门的编码计算池和调度器。它接受附加优先级值的编码作业请求,并将其放入优先级队列,其中优先编码任务首先处理。然后,视频编码系统的工作是为每个任务分配正确的优先级。它遵循一系列简单、硬编码的规则来做到这一点。编码任务可以根据许多因素分配优先级,包括视频是否是授权音乐视频,视频是否用于产品,以及视频所有者有多少朋友或关注者。
但这种方法有缺点。随着新的视频编解码器的推出,这意味着需要维护和调整的规则数量的扩大。由于不同的编解码器和配方有不同的计算要求、视觉质量和压缩性能权衡,因此不可能通过一套粗粒度的规则来充分优化最终用户体验。
也许最重要的是,Facebook的视频消费模式非常倾斜,这意味着Facebook视频是由朋友或关注者数量广泛的人和页面上传的。将像迪士尼这样的大公司的Facebook页面与可能拥有200名粉丝的博客页面进行比较。vlogger可以同时上传他们的视频,但迪士尼的视频可能会获得更多观看时间。然而,即使上传者有少量粉丝,任何视频都可以传播开来。挑战在于支持各种规模的内容创作者,而不仅仅是那些受众最多的内容创作者,同时承认拥有大量受众也可能意味着更多观看时间和更长观看时间的现实。
新机型仍然使用一套快速初始H264 ABR编码,以确保所有上传的视频尽快以良好的质量编码。然而,改变的是,我们如何计算视频发布后编码作业的优先级。
效益成本模型源于一些基本观察:
视频仅在首次编码时消耗计算资源。一旦编码完毕,存储的编码可以按要求交付多次,而无需额外的计算资源。
Facebook上相对较小的百分比(约三分之一)创造了大部分总观看时间。
Facebook的数据中心为计算资源提供动力的能源有限。
可以说,通过在可用的功率限制下,通过在观看次数最多的视频应用更密集的“食谱”和高级编解码器,最大限度地提高每个人的视频体验,我们物有所值。
基于这些意见,我们提出了以下效益、成本和优先级的定义:
收益=(编码家族在固定质量下相对压缩效率)*(有效预测观看时间)
成本=家庭中缺失编码的标准化计算成本
优先级=收益/成本
固定质量下编码家族的相对压缩效率:我们从编码家族的压缩效率来衡量收益。“编码族”是指可以一起交付的一组编码文件。例如,H264 360p、480p、720p和1080p编码通道组成一个家族,VP9 360p、480p、720p和1080p组成另一个家族。这里的一个挑战是比较不同家庭之间以相同视觉质量的压缩效率。
要理解这一点,您首先必须了解我们开发的指标,称为每个GB数据包高质量视频分钟(MVHQ)。MVHQ将压缩效率直接链接到人们想知道的关于其互联网津贴的问题:给定1GB的数据,我们可以流式传输多少分钟的高质量视频?
例如,假设我们有一个视频,其中使用H264快速预置编码的MVHQ为153分钟,170分钟使用H264慢预置编码,使用VP9为200分钟。这意味着与H264快速预置相比,使用VP9在高视觉质量阈值下使用1GB数据传输视频可以将观看时间延长47分钟(200-153)。在计算此特定视频的效益值时,我们使用H264快速作为基线。我们将1.0快速分配给H264,1.1(170/153)分配给H264慢,1.3(200/153)分配给VP9。
实际的MVHQ只能在编码产生后计算,但在编码可用之前我们需要该值,因此我们使用历史数据来估计给定视频的每个编码族的MVHQ。
有效的预测观看时间:如下文部分进一步描述的那样,我们有一个复杂的ML模型,可以预测视频在不久的将来在所有受众中观看多长时间。一旦我们在视频级别上预测了观看时间,我们就会估计编码家族可以有效地应用于视频。这是为了解释Facebook上并非所有人都有最新的设备,可以播放更新的编解码器。
例如,大约20%的视频消费发生在无法播放VP9编码视频的设备上。因此,如果视频的预测观看时间为100小时,则使用广泛采用的H264编解码器的有效预测观看时间为100小时,而VP9编码的有效预测观看时间为80小时。
家族中缺失编码的规范化计算成本:这是我们使编码家族交付所需的逻辑计算周期量。编码家族要求提供一套最低分辨率,然后才能交付视频。例如,对于特定视频,VP9系列可能需要至少四个分辨率。但一些编码比其他编码花费的时间更长,这意味着并非所有视频分辨率都可以同时提供。
例如,假设视频A错过了VP9家族的所有四条车道。我们可以总结所有四个通道的估计CPU使用量,并为所有四个作业分配相同的规范化成本。
如果我们只缺少四个通道中的两个,如视频B所示,计算成本是产生剩余两个编码的总和。这两种工作的成本相同。由于优先级是效益除以成本,因此随着更多通道可用,任务优先级变得更加紧迫。编码车道在交付之前不会提供任何价值,因此尽快到达完整的车道很重要。例如,拥有一个包含所有VP9通道的视频比10个具有不完整(因此无法交付)的VP9通道的视频增加更多价值。
随着一个新的效益成本模型的到位,告诉我们某些视频应该如何编码,下一个谜题是确定哪些视频应该优先编码。这就是我们现在利用ML来预测哪些视频将观看次数最多的地方,因此应该优先考虑高级编码。
我们的模型关注一些因素,以预测视频在未来一小时内将有多少观看时间。它通过查看视频上传者的朋友或关注者数量和他们之前上传视频的平均观看时间,以及视频本身的元数据,包括其持续时间、宽度、高度、隐私状态、帖子类型(直播、故事、观看等)、年龄以及它过去在平台上的受欢迎程度。
但使用所有这些数据来决策会带来几个内置的挑战:
手表时间方差很大,尾巴很斜。即使我们专注于预测下一个一小时的观看时间,根据视频内容、上传者以及视频的隐私设置,视频的观看时间也可能从零小时到超过5万小时不等。模特不仅要能分辨出视频会不会火,还要能看出有多火。
下一个小时的观看时间的最佳指标是其之前的观看时间轨迹。视频的流行性一般都是非常不稳定的。根据社区对内容的反应,同一内容创建者上传的不同视频有时的观看时间可能大不相同。在对多个功能进行实验后,我们发现过去的手表时间轨迹是未来手表时间的最佳预测指标。这在设计模型架构和平衡培训数据方面提出了两个技术挑战:
- 新上传的视频没有观看时间轨迹。视频在Facebook上停留的时间越长,我们就越能从过去的观看时间中学习。这意味着最具预测性的功能不适用于新视频。我们希望我们的模型在缺少数据的情况下表现良好,因为系统越早能够识别平台上流行的视频,就越有机会提供高质量的内容。
- 热门视频有主导训练数据的趋势。最受欢迎的视频的模式不一定适用于所有视频。
观看时间性质因视频类型而异。故事视频比其他视频更短,平均观看时间也更短。直播在流媒体期间或几个小时后观看大部分时间。与此同时,点播视频(VOD)的寿命各不相同,如果人们稍后开始共享,则可以在最初上传视频很久后获得观看时间。
ML指标的改进不一定与产品改进直接相关。传统的回归损失函数,如RMSE、MAPE和Huber损失,非常适合优化离线模型。但建模误差的减少并不总是直接转化为产品改进,例如改善用户体验、更多观看时间覆盖范围或更好的计算利用率。
为了解决这些挑战,我们决定使用观看时间事件数据来训练我们的模型。我们培训/评估的每一行代表系统必须预测的决策点。
由于我们的手表时间事件数据可以像上面提到的许多方式倾斜或不平衡,因此我们对我们关心的维度进行了数据清理、转换、桶装和加权采样。
此外,由于新上传的视频没有观看时间轨迹可供借鉴,我们决定构建两个模型,一个用于处理上传时间请求,另一个用于观看时间请求。视图时间模型使用上述三组功能。上传时间模型查看内容创建者上传的其他视频的性能,并将其替换为过去的观看时间轨迹。一旦视频在Facebook上播放的时间足够长,可以有一些过去的轨迹,我们就会将其切换到使用查看时间模型。
在模型开发过程中,我们通过查看根均方误差(RMSE)和均绝对百分比误差(MAPE)来选择最佳启动候选选项。我们使用这两个指标,因为RMSE对异常值敏感,而MAPE对小值敏感。我们的观看时间标签方差很高,因此我们使用MAPE来评估受欢迎或中等受欢迎视频的性能,并使用RMSE来评估观看较少的视频。我们还关心该模型在不同视频类型、年龄和受欢迎程度中很好地概括的能力。因此,我们的评估将始终包括每个类别的指标。
MAPE和RMSE是模型选择的良好汇总指标,但它们不一定反映直接的产品改进。有时当两个模型具有相似的RMSE和MAPE时,我们也会将评估转换为分类问题,以了解权衡。例如,如果一个视频接收1000分钟的观看时间,但模型A预测10分钟,模型A的MAPE为99%。如果型号B预测观看时间为1990分钟,则型号B的MAPE将与型号A相同(即99%),但型号B的预测将使视频更有可能具有高质量的编码。
我们还评估了视频的分类,因为我们想在过度频繁地应用高级编码和错过在有益处时应用它们的机会之间权衡取舍。例如,在10秒的阈值下,我们计算实际视频观看时间小于10秒且预测也小于10秒的视频数量,反之亦然,以计算模型的假阳性率和假负率。对于多个阈值,我们重复相同的计算。这种评估方法让我们深入了解该模型如何在不同受欢迎程度的视频中表现,以及它是否倾向于建议不必要的编码工作更多,还是错过了一些机会。
新型视频编码模式的影响
除了通过新上传的视频改善观众体验外,新模型还可以识别Facebook上本应使用更高级编码的旧视频,并将更多计算资源路由给他们。这样做已经将很大一部分观看时间转移到高级编码上,从而减少了缓冲,而不需要额外的计算资源。压缩的改进还使Facebook上数据计划有限的人,如新兴市场的人,能够以更好的质量观看更多视频。
此外,随着我们引入新的编码食谱,我们不再需要花大量时间评估在优先级范围内的分配它们。相反,根据食谱的效益和成本价值,该模型会自动分配一个优先级,以最大限度地提高整体效益吞吐量。例如,我们可以引入一个非常计算密集型的食谱,该食谱仅适用于非常流行的视频,该模型可以识别此类视频。总的来说,这使我们能够更容易继续投资更新和更先进的编解码器,为Facebook上的人提供最优质的视频体验。