机器学习每年可为我们节省170万美元的文档预览费用

2021-01-28 23:36:49

最近,我们通过优化Dropbox生成和缓存文档预览的方式,将机器学习(ML)的预测能力转化为每年可节省170万美元的基础架构成本。 Dropbox的机器学习已经提供了常用功能,例如搜索,文件和文件夹建议以及文档扫描中的OCR。尽管并非我们所有的ML应用程序对用户都是直接可见的,但它们仍以其他方式推动业务影响。

Dropbox预览功能允许用户查看文件而无需下载内容。除缩略图预览外,Dropbox还提供具有共享和协作功能(包括评论和标记其他用户)的交互式“预览”界面。

我们用于安全生成文件预览的内部系统Riviera可处理数百种受支持文件类型的预览生成。它通过将各种内容转换操作链接在一起以创建适用于该文件类型的预览资产来实现此目的。例如,Riviera可能将多页PDF文档的页面光栅化,以在Dropbox Web表面上显示高分辨率预览。全内容预览功能支持诸如评论和共享之类的交互。大型图像资产可能随后会转换为图像缩略图,这些缩略图将在各种上下文中显示给用户,包括搜索结果或文件浏览器。

在Dropbox规模上,Riviera每天处理数十PB的数据。为了加快某些类别的大文件的预览体验,Riviera会预先生成并缓存预览资产(此过程称为预热)。预热的CPU和存储成本对于我们支持的文件量而言是相当大的。

我们看到了通过机器学习减少这种支出的机会,因为其中一些预生成的内容从未被查看过。如果我们可以有效地预测是否使用预览,则可以通过仅预热我们确信会被查看的文件来节省计算和存储空间。我们将这个项目称为戛纳电影节,是在法国里维埃拉著名的城市预览国际电影之后。

第一个挑战是与ML商讨基础设施节省的成本效益权衡。预先预热较少的文件可以节省金钱,而且谁也可以节省金钱!但是错误地拒绝文件会给用户带来痛苦。当发生缓存未命中时,Riviera需要在用户等待结果出现时动态生成预览。我们与Previews团队合作开发了防止降低用户体验的护栏,并使用该护栏来调整模型,以节省合理的费用。

另一个折衷是复杂性和模型性能,以及可解释性和部署成本。通常,在ML中存在复杂性与可解释性之间的权衡:更复杂的模型通常具有更准确的预测,但代价是解释某些预测的原因的解释性较差,并且部署的复杂性可能会增加。对于第一次迭代,我们旨在尽快提供可解释的ML解决方案。

由于戛纳电影节是现有系统中内置的ML的新应用程序,因此偏向于使用一种更简单,更易解释的模型,因此我们可以在添加更多复杂性之前集中精力正确获取模型的服务,指标和报告内容。如果出现问题或我们在Riviera中出现意外行为,则ML团队还可以更轻松地调试并了解原因是戛纳还是其他原因。该解决方案必须相对简单且成本低廉,每天可以部署将近十亿个请求。当前的系统只是对所有可预览文件进行预热,因此对此进行任何改进都可以节省费用-越早越好!

考虑到这些折衷,我们针对戛纳电影节设计了一个简单,易于训练且可解释的模型。 v1模型是经过梯度提升的分类器,其经过输入功能训练,包括文件扩展名,文件存储在其中的Dropbox帐户的类型以及该帐户最近30天的活动。在离线保留集上,我们发现该模型可以预测预热后长达60天的预览,其准确度大于70%。该模型拒绝了保留中大约40%的预热请求,并且性能在我们一开始就为自己设置的护栏指标之内。假阴性的数量很少(我们预测不会查看文件,但最终在接下来的60天内会被查看),这将导致我们付出即时生成预览资产的费用。我们使用了“拒绝百分比”指标减去虚假负数来估算每年节省的170万美元。

甚至在探索Previews优化空间之前,我们都想确保潜在的节省超过构建ML解决方案的成本。我们对戛纳电影节的预期节省进行了估算。在大型分布式系统中设计和部署ML系统意味着接受对系统的某些更改将随着时间的推移影响您的估计。通过使初始模型更简单,我们希望,即使相邻系统随时间变化很小,成本影响的数量级仍然值得。对训练好的模型进行分析可以使我们更好地了解在v1中实际可以节省的成本,并确认投资仍然值得。

我们使用内部功能闸门服务Stormcrow对Dropbox流量的随机1%样本进行了模型的A / B测试。我们验证了模型的准确性和“保存”的预热与我们离线分析的结果相符,这是一个好消息!由于Cannes v1不再预热所有符合条件的文件,因此我们预计缓存命中率会下降;在实验期间,我们观察到缓存命中率比A / B测试中的保留人口低几个百分点。尽管下降了,但总体预览延迟基本上保持不变。

我们对尾部延迟(对超过90%的请求的延迟)特别感兴趣,因为导致较高尾部延迟的缓存未命中会更严重地影响“预览”功能的用户。令人鼓舞的是,我们没有发现预览尾部延迟或总体延迟降低。实时测试使我们有信心开始将v1模型部署到更多Dropbox流量。

我们需要一种方法,以便在文件通过预热路径进入文件时向Riviera提供有关是否预热给定文件的实时预测。为了解决此问题,我们将戛纳电影节构建为预测管道,以提取与文件相关的信号,并将其输入模型中,以预测未来使用预览的可能性。

从Riviera预热路径接收文件ID。 Riviera收集所有可进行预热的文件ID。 (Riviera可以预览Dropbox上存储的约98%的文件。少数文件不支持文件类型,否则将无法预览。)Riviera发送了一个预测请求,其中包含我们需要对其进行预测的文件ID,并且文件类型。

检索实时信号。为了在预测时收集文件的最新活动信号,我们使用了一个名为“建议后端”的内部服务。该服务会验证预测请求,然后查询与该文件相关的适当信号。信号存储在Edgestore(Dropbox的主要元数据存储系统)或用户配置文件服务(RocksDB数据存储,聚合Dropbox活动信号)中。

将信号编码为特征向量。收集到的信号被发送到Predict Service,该服务将原始信号编码为代表文件所有相关信息的特征向量,然后将该向量发送给模型进行评估。

生成预测。该模型使用特征向量返回将使用文件预览的预测概率。然后,此预测将发送回Riviera,Riviera将预热可能在未来60天预览的文件。

记录有关请求的信息。建议后端记录功能向量,预测结果和请求统计信息,这是解决性能下降和延迟问题的关键信息。

其他注意事项减少预测延迟很重要,因为上面的管道位于Riviera的预热功能的关键路径上。例如,当扩展到25%的流量时,我们观察到边缘情况将“建议后端”可用性降低到内部SLA以下。进一步的分析表明,这些情况在步骤3上超时。我们改进了特征编码步骤,并对预测路径进行了其他一些优化,从而降低了这些边缘情况下的尾部等待时间。

在推出过程及以后的过程中,我们强调了稳定性,并确保不会对Previews表面的客户体验产生负面影响。多层监视和警报是ML部署过程的关键组成部分。

预测服务于基础指标:共享系统围绕正常运行时间和可用性具有自己的内部SLA。我们依靠Grafana等现有工具进行实时监控和警报。指标包括:

预览指标:我们具有预览性能的关键指标-即预览延迟分布。我们保留了3%的保留率,用于比较使用和不使用戛纳电影节的预览指标,以防止模型漂移或可能会降低模型性能的意外系统更改。 Grafana还是应用程序级指标的通用解决方案。指标包括:

模型性能指标:我们拥有ML团队使用的Cannes v1的模型指标。我们建立了自己的管道来计算这些指标。感兴趣的指标包括:

ROC曲线下的面积:虽然我们直接监控混淆矩阵的统计信息,但我们也希望计算AUROC,以便将其与未来模型的性能进行比较。

上面的模型性能指标每小时计算一次并存储在Hive中。我们使用Superset可视化重要指标并创建戛纳(Cannes)绩效随时间变化的实时仪表板。基于指标表构建的Superset警报会在基础模型行为发生变化时主动通知我们,希望能早于任何面向客户的影响。

但是,仅监视和警报不足以确保系统健康;建立明确的所有权和升级流程也是必要的。例如,我们记录了可能影响模型结果的ML系统的特定上游依赖性。我们还为值班工程师创建了一个运行手册,其中详细介绍了解决问题的步骤,以解决问题是在戛纳电影节内还是在系统的其他部分,如果问题的根本原因是ML模型,则应上报。 ML和非ML团队之间的紧密合作有助于确保戛纳电影节继续平稳运行。

戛纳现已部署到几乎所有Dropbox流量。结果,我们用每年9,000美元的机器学习基础设施替换了估计的每年170万美元的预热成本(主要是由于建议后端和预测服务的流量增加)。

对于该项目的下一个迭代,有许多令人兴奋的途径可以探索。戛纳系统的其余部分现已投入生产,我们可以尝试使用更复杂的模型类型。我们还可以根据更详细的内部费用和使用情况数据,为模型开发更精细的成本函数。我们讨论过的另一个新的Previews应用程序是使用ML使预测决策比每个文件的二进制预热/不预热更精细。我们可以通过具有预见性的预热来发挥更大的创造力,从而在不降低文件预览体验的情况下,从用户的角度出发,发挥更多创意,从而进一步节省费用。

我们希望将为戛纳电影节制作的课程和工具推广到Dropbox的其他基础架构工作中。 用于基础结构优化的ML是令人兴奋的投资领域。 感谢Previews和ML Platform团队在戛纳的合作。 特别感谢ML团队的Zena Hira,Jongmin Baek,Jason Briceno,Neeraj Kumar和Kris Concepcion; 预览团队的Anagha Mudigonda,Daniel Wagner和Robert Halas; ML平台小组的Ian Baker,Sean Chang,Aditya Jayaraman和Mike Loh。 关于我们:Dropbox的情报团队使用机器学习(ML)通过对用户,内容和上下文的高度保真理解来推动超大型业务和用户价值。 我们与其他产品和工程团队紧密合作,以提供创新的解决方案和功能。 在此处查看Dropbox的空缺职位!