百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 博客教程 > 正文

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

connygpt 2024-10-14 09:14 10 浏览

【CSDN 编者按】

Dropbox 借助机器学习的预测功能,每年能为公司节省了一百多七十多万美元的基础架构成本。非常了不起的成就。

本文,一起来看一看 Dropbox 采用机器学习的经过,以及分析一下其中的利弊。

译者 | 弯月 责编 | 张文

出品 | CSDN(ID:CSDNnews)

最近,Dropbox 优化了生成和缓存文档预览的方式,并借助机器学习的预测能力,每年为公司节省了 170 万美元的基础架构成本。Dropbox 的一些常用功能都采用了机器学习,例如搜索、文件与文件夹提示以及文档扫描 OCR。虽然用户看不到 Dropbox 采用的机器学习,但这些应用程序仍以其他方式推动了业务的发展。

在本文中,我们就来看一看 Dropbox 采用机器学习的经过,以及其中的利弊。

预览功能

用户可以利用 Dropbox 的预览功能直接查看文件,而无需下载内容。除了常见的缩略图预览之外,Dropbox 还提供交互式预览界面,可供用户共享文件和共同编辑文件,包括添加批注和标记其他用户。

我们的内部系统 Riviera 负责安全地生成文件预览,它可以处理数百种支持的文件类型的预览。它可以将各种内容转换操作链接在一起,创建适合特定文件类型的预览。例如,Riviera 可以将 PDF 文档的某一页栅格化,在 Dropbox 的 Web 界面中显示高分辨率的预览。完整内容的预览功能支持批注和共享之类的交互。大型图片可以转换成缩略图,以供在各种情况中显示给用户,包括搜索结果或文件浏览器。

在 Dropbox 的规模下,Riviera 每天需要处理数十 PB 的数据。为了加快某些类别的大型文件的预览,Riviera 会提前生成预览,并缓存预览结果(此过程称为预热)。由于我们支持的文件量非常巨大,因此预热消耗的 CPU 与存储也非常可观。

图:浏览文件时的缩略图预览。预览可以被放大,

并作为应用程序文件的代理与用户交互。

我们看到采用机器学习可以降低这些成本,因为有些预生成的内容从不会有人查看。如果我们可以有效地预测某个预览是否会被使用,则只需预热我们确信一定会被查看的文件,从而节省计算和存储空间。我们的这个项目名叫 Cannes(戛纳),这个名字的灵感来自法国戛纳电影节。

机器学习的利弊权衡

在预览的优化过程中,机器学习的两项折衷决定了我们的指导原则。

第一个挑战是权衡机器学习为基础设施带来的成本效益。减少预热的文件可以节省成本,无人不喜欢,但也有可能漏掉一些文件,造成不良的用户体验。如果缓存中没有相应的文件预览,则 Riviera 需要动态地生成预览,而在这期间用户只能等待。我们与预览团队合作开发出了一种预防措施,防止用户体验降级,并通过这种预防措施来调整模型,以合理的方式节省费用。

另一个需要权衡的是复杂性和模型的性能 vs. 可解释性和部署的成本。通常,你需要权衡机器学习的复杂性与可解释性:通常模型越复杂,预测就越准确,但代价是可解释性会降低,你很难解释为何得出了这样的预测,而且部署的复杂性可能也会增加。在第一次迭代中,我们的目标是尽快提供可解释的机器学习解决方案。

由于 Cannes 是在现有系统内新构建的机器学习应用程序,因此我们偏向于使用一种比较简单且可以解释的模型,这样我们就可以在研究更复杂的模型之前,集中精力建立模型、指标以及报告。如果出现问题,或 Riviera 出现意外行为,机器学习团队也能够进行调试,并了解是 Cannes 的原因还是其他问题。我们的解决方案必须相对简单且成本低廉,因为我们每天都需要部署将近 5 亿个请求。目前的系统只能预热所有的可预览文件,因此任何改进都可以节省成本,而且越快越好!

Cannes v1

考虑到这些权衡之后,我们选择了一个简单、易于训练且易于解释的模型。第一版的模型是一个梯度提升分类器,训练时采用了文件扩展名、存储了文件的 Dropbox 账号类型,以及该账号最近 30 天的活动等作为输入特征。在离线预留数据上训练时,我们发现该模型经过预热后,预测的预览准确率可以在最多 60 天内超过 70%。该模型拒绝了预留数据中大约 40%的预热请求,并且性能在我们为自己设定的预防指标以内。假阴性的数量很少,假阴性指的是我们预测不会被查看、但最终在接下来的 60 天内被查看的文件,一旦出现这种情况,我们就需要动态生成预览。我们估算了一下成本:“拒绝百分比”- 假阴性,结果发现每年可以节省 170 万美元。

在探索预览优化之前,我们想确保节省的成本能够超过构建机器学习解决方案的成本。我们大致估算了一下 Cannes 项目可以节省的成本。在大型分布式系统中设计和部署机器学习系统,你需要考虑系统的变化随着时间的推移对你的估计产生的影响。我们希望初始的模型尽量简单,这样一来即使相邻系统发生一些很小的变化,成本的影响也不会出现数量级的变化。通过分析训练好的模型,可以让我们更好地了解第一版实际可以节省的成本,并确认这项投资是值得的。

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

我们非常关心尾延迟(第 90 个百分位数以上的请求延迟),因为缓存未命中会导致尾延迟过高,进而严重地影响用户的预览功能。然而,我们并没有观察到预览尾延迟或总体延迟明显上升,这很让人欣慰。这次实时测试让我们信心大增,我们决定将 v1 模型部署到更多 Dropbox 流量。

大规模的实时预测

我们需要一种方法,当某个文件进入预热路径时,实时地告诉Riviera该文件是否需要预热。为了解决这个问题,我们将 Cannes 构建成了预测流水线,负责提取与文件相关的信号,并将其发送给模型,供模型预测未来使用预览的可能性。

图:Cannes的架构

  1. 从Rivieraprewarm path(预热路径)接收文件 ID。Riviera 会收集所有可进行预热的文件 ID。(Riviera可以预览 Dropbox 存储的大约 98%的文件。只有很少一部分文件的文件类型不支持,或无法预览。)Riviera 发送一条预测请求,其中包含需要预测文件 ID 以及文件类型。

  2. 获取实时信号。为了收集预测期间文件的最新活动信号,我们使用了一个名为“Suggest Backend”(建议后台)的内部服务。该服务会验证预测请求,然后查询与该文件相关的信号。信号存储在 Edgestore(Dropbox 主要的元数据存储系统)或 User Profile Service(RocksDB 数据存储,负责聚合Dropbox 活动信号)中。

  3. 将信号编码为特征向量。收集到的信号会被发送到 Predict Service(预测服务),由该服务将信号编码为表示文件所有相关信息的特征向量,然后将这个向量发送给模型进行评估。

  4. 生成预测。模型使用特征向量,返回该文件可能会被预览的概率。接着,这个预测结果会被发送回 Riviera,并由 Riviera 预热未来 60 天内可能会被预览的文件。

  5. 记录请求的相关信息。SuggestBackend(建议后台)会记录下特征向量、预测结果和请求状态,这些都是调查性能下降和延迟问题的关键信息。

其他考虑事项

减少预测延迟很重要,因为上述管道位于 Riviera 预热功能的关键路径上。例如,当将这个模型扩展到 25%的流量时,我们观察到了一些极端的情况,导致建议后台的可用性降低到了内部 SLA 以下。

经过分析后,我们发现上述第 3 步出现了超时的问题。因此,我们改进了特征编码处理,并优化了预测路径上的几个问题,降低了这些极端情况下的尾延迟。

优化机器学习

在推出机器学习模型的过程期间(及其之后),我们非常注重稳定性,并确保不会对预览界面的用户体验产生负面影响。多个层面的监视和警报是部署机器学习的关键组成部分。

Cannesv1 的指标

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

  • 建议后台与预测的可用性。

  • 用户个人资料服务的数据新鲜度。

预览指标:我们有一些预览性能方面的关键指标,即预览延迟分布。我们保留了3%的存档数据,用于比较使用 Cannes 与不使用 Cannes 两种情况下的预览指标,以防止模型漂移或可能会降低模型性能的系统变化。Grafana 是一款应用程序级指标的通用解决方案。主要指标包括:

  • 预览延迟分布(使用 Cannes 与不使用 Cannes),需要特别注意第 90 个百分比以上的延迟。

  • 缓存命中率(使用 Cannes 与不使用 Cannes):缓存命中总数/预览内容的总请求数量。

模型性能指标:我们为机器学习团队使用的 Cannes v1 的模型建立了指标,并建立了自己的流水线来计算这些指标。我们关心的指标包括:

  • 混淆矩阵,尤其需要注意假阴性率的变化。

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

上述模型性能指标每小时计算一次,并存储在 Hive 中。我们使用 Superset 来可视化重要的指标,并创建了一个 Cannes 的实时变化仪表板。Superset 是在各项指标的基础之上构建的,如果底层模型行为发生变化,它会赶在客户受到影响之前主动通知我们。

然而,仅凭监视和警报不足以确保系统健康,明确责任并建立上报问题的流程也是必要的。例如,我们记录了机器学习系统的上游依赖项,因为它们可能影响到模型的结果。此外,我们还创建了一个手册,详细介绍了解决问题的步骤,帮助值班的工程师判断问题来自 Cannes 内部还是其他的其他部分,并提供了在根本原因是机器学习模型的情况下,上报问题的流程。机器学习团队与非机器学习团队之间的紧密合作有助于确保 Cannes 的平稳运行。

目前的状况与未来的探索

目前 Cannes 已部署到几乎所有的 Dropbox 流量中了。结果,我们每年 170 万美元的预热成本变成了如今每年 9,000 美元的机器学习基础设施(主要用于建议后台和预测服务的流量增加)。

对于该项目的下一个迭代,我们有许多期待的探索方面。如今 Cannes 已投入生产,我们可以尝试更为复杂的模型类型。我们还可以根据更详细的内部费用和使用情况数据,为模型开发更细致的成本函数。

我们还讨论过新建一个预览应用程序,通过机器学习更细致地控制预测决策,而不是针对每个文件进行预热/不预热的二元分类。我们可以通过具有预见性的预热来发挥更大的创造力,降低成本,同时又不会破坏用户的文件预览体验。

我们希望将 Cannes 项目积累的经验和工具推广到 Dropbox 的其他基础设施。利用机器学习优化基础设施是一个振奋人心的投资领域。

参考链接:https://dropbox.tech/machine-learning/cannes--how-ml-saves-us--1-7m-a-year-on-document-previews

相关推荐

自学Python,写一个挨打的游戏代码来初识While循环

自学Python的第11天。旋转~跳跃~,我~闭着眼!学完循环,沐浴着while的光芒,闲来无事和同事一起扯皮,我说:“编程语言好神奇,一个小小的循环,竟然在生活中也可以找到原理和例子”,同事也...

常用的 Python 工具与资源,你知道几个?

最近几年你会发现,越来越多的人开始学习Python,工欲善其事必先利其器,今天纬软小编就跟大家分享一些常用的Python工具与资源,记得收藏哦!不然下次就找不到我了。1、PycharmPychar...

一张思维导图概括Python的基本语法, 一周的学习成果都在里面了

一周总结不知不觉已经自学Python一周的时间了,这一周,从认识Python到安装Python,再到基本语法和基本数据类型,对于小白的我来说无比艰辛的,充满坎坷。最主要的是每天学习时间有限。只...

三日速成python?打工人,小心钱包,别当韭菜

随着人工智能的热度越来越高,许多非计算机专业的同学们也都纷纷投入到学习编程的道路上来。而Python,作为一种相对比较容易上手的语言,也越来越受欢迎。网络上各类网课层出不穷,各式广告令人眼花缭乱。某些...

Python自动化软件测试怎么学?路线和方法都在这里了

Python自动化测试是指使用Python编程语言和相关工具,对软件系统进行自动化测试的过程。学习Python自动化测试需要掌握以下技术:Python编程语言:学习Python自动化测试需要先掌握Py...

Python从放弃到入门:公众号历史文章爬取为例谈快速学习技能

这篇文章不谈江流所专研的营销与运营,而聊一聊技能学习之路,聊一聊Python这门最简单的编程语言该如何学习,我完成的第一个Python项目,将任意公众号的所有历史文章导出成PDF电子书。或许我这个Py...

【黑客必会】python学习计划

阅读Python文档从Python官方网站上下载并阅读Python最新版本的文档(中文版),这是学习Python的最好方式。对于每个新概念和想法,请尝试运行一些代码片段,并检查生成的输出。这将帮助您更...

公布了!2025CDA考试安排

CDA数据分析师报考流程数据分析师是指在不同行业中专门从事行业数据搜集、整理、分析依据数据作出行业研究评估的专业人员CDA证书分为1-3级,中英文双证就业面广,含金量高!!?报考条件:满18...

一文搞懂全排列、组合、子集问题(经典回溯递归)

原创公众号:【bigsai】头条号:程序员bigsai前言Hello,大家好,我是bigsai,longtimenosee!在刷题和面试过程中,我们经常遇到一些排列组合类的问题,而全排列、组合...

「西法带你学算法」一次搞定前缀和

我花了几天时间,从力扣中精选了五道相同思想的题目,来帮助大家解套,如果觉得文章对你有用,记得点赞分享,让我看到你的认可,有动力继续做下去。467.环绕字符串中唯一的子字符串[1](中等)795.区...

平均数的5种方法,你用过几种方法?

平均数,看似很简单的东西,其实里面包含着很多学问。今天,分享5种经常会用到的平均数方法。1.算术平均法用到最多的莫过于算术平均法,考试平均分、平均工资等等,都是用到这个。=AVERAGE(B2:B11...

【干货收藏】如何最简单、通俗地理解决策树分类算法?

决策树(Decisiontree)是基于已知各种情况(特征取值)的基础上,通过构建树型决策结构来进行分析的一种方式,是常用的有监督的分类算法。决策树算法是机器学习中的一种经典算法,它通过一系列的规则...

面试必备:回溯算法详解

我们刷leetcode的时候,经常会遇到回溯算法类型题目。回溯算法是五大基本算法之一,一般大厂也喜欢问。今天跟大家一起来学习回溯算法的套路,文章如果有不正确的地方,欢迎大家指出哈,感谢感谢~什么是回溯...

「机器学习」决策树——ID3、C4.5、CART(非常详细)

决策树是一个非常常见并且优秀的机器学习算法,它易于理解、可解释性强,其可作为分类算法,也可用于回归模型。本文将分三篇介绍决策树,第一篇介绍基本树(包括ID3、C4.5、CART),第二篇介绍Ran...

大话AI算法: 决策树

所谓的决策树算法,通俗的说就是建立一个树形的结构,通过这个结构去一层一层的筛选判断问题是否好坏的算法。比如判断一个西瓜是否好瓜,有20条西瓜的样本提供给你,让你根据这20条(通过机器学习)建立起...