最近,我们通过优化 Dropbox 生成和缓存文档预览的方式,将机器学习 (ML) 的预测能力转化为每年节省 170 万美元的基础设施成本。Dropbox 的机器学习已经为常用功能提供支持,例如文档扫描中的搜索、文件和文件夹建议以及 OCR。虽然并非所有 ML 应用程序都对用户直接可见,但它们仍然以其他方式推动业务影响。
什么是预览?
借助 Dropbox 预览功能,用户无需下载内容即可查看文件。除了缩略图预览之外,Dropbox 还提供交互式预览图面,具有共享和协作功能,包括评论和标记其他用户。
我们用于安全生成文件预览的内部系统 Riviera 可处理数百种受支持文件类型的预览生成。它通过将各种内容转换操作链接在一起来创建适用于该文件类型的预览资产来实现此目的。例如,Riviera 可能会对多页 PDF 文档中的页面进行栅格化,以便在 Dropbox 网页图面上显示高分辨率预览。全内容预览功能支持评论和共享等交互。大型图像资产以后可能会转换为图像缩略图,这些缩略图将在各种上下文(包括搜索结果或文件浏览器)中向用户显示。
在 Dropbox 规模下,Riviera 每天处理数十 PB 的数据。为了加快某些类别的大文件的预览体验,Riviera 预生成并缓存预览资源(我们称之为预热的过程)。预热的 CPU 和存储成本对于我们支持的文件量来说是相当大的。
浏览文件时的缩略图预览。预览可以放大并与之交互,作为应用程序文件的代理。
我们看到了通过机器学习降低这笔费用的机会,因为一些预生成的内容从未被查看过。如果我们能够有效地预测是否会使用预览版,我们将通过仅查看我们确信会查看的预热文件来节省计算和存储。 我们将这个项目命名为戛纳,以法国里维埃拉的着名城市命名,那里放映国际电影。
机器学习中的权衡
有两个权衡决定了我们预览优化的指导原则。
第一个挑战是使用 ML 协商基础架构节省的成本效益权衡。预热更少的文件可以节省资金 — 谁不喜欢这样!— 但错误地拒绝文件,用户体验就会受到影响。当缓存未命中时,Riviera需要在用户等待结果显示时动态生成预览。我们与预览版团队合作开发了一种防止用户体验降级的护栏,并使用护栏来调整一个模型,以提供合理的节省。
另一个权衡是复杂性和模型性能与可解释性和部署成本的关系。一般来说,ML中存在复杂性与可解释性权衡:更复杂的模型通常具有更准确的预测,但代价是做出某些预测的原因的可解释性较低,以及部署中可能增加的复杂性。对于第一次迭代,我们的目标是尽快提供可解释的 ML 解决方案。
由于 Cannes 是内置于现有系统中的 ML 的新应用程序,因此,由于支持更简单、更易于解释的模型,因此我们可以在增加更多复杂性之前专注于获取模型服务、指标和报告部分。如果出现问题,或者我们在里维埃拉发现了意想不到的行为,ML团队也可以更轻松地调试和了解原因是戛纳还是其他原因。该解决方案需要相对简单且成本低廉,才能每天部署近 5 亿个请求。当前的系统只是预热所有可预览文件,因此对此进行的任何改进都将节省成本 - 而且越快越好!
戛纳 v1
考虑到这些权衡,我们针对戛纳电影节设计了一个简单、快速训练且可解释的模型。v1 模型是一个梯度提升的分类器,根据输入功能进行训练,包括文件扩展名、存储文件的 Dropbox 帐户类型以及该帐户中最近 30 天的活动。在离线维持设置中,我们发现此模型可以在预热后长达 60 天预测预览,准确率为 >70%。该模型在维持期间拒绝了大约 40% 的预热请求,并且性能在我们从一开始就为自己设置的护栏指标内。有少量的漏报(我们预测不会查看的文件,但最终在随后的60天内被查看),这将导致我们支付动态生成预览资源的成本。我们使用“拒绝百分比”指标减去假阴性来计算每年总共节省 170 万美元。
甚至在我们探索预览优化领域之前,我们就希望确保潜在的节省超过构建 ML 解决方案的成本。我们对戛纳电影节的预期节省量进行了大致估计。在大型分布式系统中设计和部署 ML 系统意味着接受对系统的某些更改将随着时间的推移影响您的估计。通过保持初始模型更简单,我们希望即使随着时间的推移对相邻系统有微小的变化,成本影响的数量级仍然是值得的。通过分析经过训练的模型,我们可以更好地了解在 v1 中实际节省的费用,并确认投资仍然值得。
我们使用我们的内部功能门控服务 Stormcrow 对随机 1% 的 Dropbox 流量样本进行了 A/B 测试。我们验证了模型准确性和“保存”的预热与离线分析的结果一致-这是个好消息!由于 Cannes v1 不再预热所有符合条件的文件,因此我们预计缓存命中率会下降。在实验过程中,我们观察到缓存命中率比A / B测试的维持人群低几个百分点。尽管有所下降,但整体预览延迟基本保持不变。
我们对尾部延迟(高于第 90 百分位的请求的延迟)特别感兴趣,因为导致尾部延迟较高的缓存未命中将对预览版功能的用户产生更严重的影响。令人鼓舞的是,我们没有观察到预览尾部延迟或整体延迟的降级。实时测试让我们有信心开始将 v1 模型部署到更多的 Dropbox 流量。
大规模实时预测
我们需要一种方法来向Riviera提供实时预测,以便在文件通过预热路径时是否预热给定文件。为了解决这个问题,我们将戛纳构建为一个预测管道,该管道提取与文件相关的信号,并将其馈送到一个模型中,该模型预测未来预览被使用的概率。
戛纳建筑
- 从里维埃拉预热路径接收文件 ID。Riviera收集所有符合预热条件的文件ID。(Riviera可以预览Dropbox上存储的约98%的文件。有少量文件不是受支持的文件类型或无法预览。Riviera发送一个预测请求,其中包含我们需要预测的文件ID和文件类型。
- 检索实时信号。为了在预测时收集文件的最新活动信号,我们使用名为“建议后端”的内部服务。此服务验证预测请求,然后查询与该文件相关的相应信号。信号存储在Edgestore(Dropbox的主元数据存储系统)或User Profile Service(聚合Dropbox活动信号的RocksDB数据存储)中。
- 将信号编码为特征向量。收集的信号被发送到预测服务,该服务将原始信号编码为表示文件所有相关信息的特征向量,然后将此向量发送到模型进行评估。
- 生成预测。该模型使用特征向量返回将使用文件预览的预测概率。然后,此预测将发送回里维埃拉,后者预热可能在未来60天内预览的文件。
- 记录有关请求的信息。建议后端记录功能向量、预测结果和请求统计信息,这些关键信息用于解决性能下降和延迟问题。
其他注意事项
减少预测延迟非常重要,因为上面的管道处于Riviera预热功能的关键路径上。例如,当推广到 25% 的流量时,我们观察到边缘情况将建议后端可用性降低到低于我们的内部 SLA。进一步的分析表明,这些案例在步骤3上超时。我们改进了特征编码步骤,并向预测路径添加了其他几项优化,从而降低了这些边缘情况的尾部延迟。
实施机器学习
在推出过程中及以后,我们强调稳定性,并确保不会对预览版表面上的客户体验产生负面影响。在多个级别上进行密切监视和警报是 ML 部署过程的关键组件。
戛纳 v1 指标
预测服务基础设施指标: 共享系统在正常运行时间和可用性方面有自己的内部 SLA。我们依靠像Grafana这样的现有工具进行实时监控和警报。指标包括:
- 建议后端和预测服务的可用性
- 用户配置文件服务(我们的活动数据存储)的数据新鲜度
预览指标:我们有预览效果的关键指标,即预览延迟分布。在比较有和没有戛纳的预览指标时,我们保留了 3% 的坚持,以防止模型漂移或可能降低模型性能的意外系统更改。Grafana 也是应用程序级指标的常见解决方案。指标包括:
- 预览延迟分布(戛纳与非戛纳坚持),特别注意 p90 以上的延迟
- 缓存命中率(戛纳与非戛纳坚持):缓存命中总数/预览内容请求总数
模型性能指标:我们有 ML 团队使用的戛纳 v1 模型指标。我们构建了自己的管道来计算这些指标。感兴趣的指标包括:
- 混淆矩阵,特别注意假阴性率的变化
- ROC曲线下的面积:虽然我们直接监控混淆矩阵统计数据,但我们也计算了一个AUROC,并着眼于使用它来比较未来模型的性能。
上述模型性能指标每小时计算一次,并存储在 Hive 中。我们使用超集来可视化重要指标,并创建戛纳一段时间内表现的实时仪表板。基于指标表构建的超集警报会主动让我们知道基础模型行为何时发生更改,希望提前很久才对客户端产生影响。
但是,仅靠监视和警报不足以确保系统运行状况。建立明确的所有权和升级流程也是必要的。例如,我们记录了ML系统的特定上游依赖关系,这些依赖关系可能会影响模型的结果。我们还为待命工程师创建了一个 Runbook,其中详细说明了故障排除步骤,无论问题在戛纳还是系统的其他部分,如果根本原因是 ML 模型,则还有升级路径。因此,ML和非ML团队之间的密切合作有助于确保戛纳电影节继续顺利进行。
现状和未来探索
戛纳现在几乎部署到所有Dropbox流量。因此,我们将估计每年 170 万美元的预热成本替换为每年 9,000 美元的 ML 基础设施成本(主要来自增加的“建议后端”和“预测服务”流量)。
对于该项目的下一个迭代,有许多令人兴奋的途径可供探索。现在,我们可以尝试更复杂的模型类型,因为戛纳系统的其余部分正在生产中。我们还可以根据更详细的内部费用和使用数据为模型开发更微调的成本函数。我们讨论的另一个新的预览应用程序是使用 ML 做出比每个文件的二进制预热/不预热更精细的预测决策。通过更具创造性的预测性预热,我们可以进一步节省成本,从用户的角度来看,在不恶化文件预览体验的情况下降低成本。
我们希望将戛纳电影节的经验教训和工具推广到 Dropbox 的其他基础设施工作中。用于基础设施优化的 ML 是一个令人兴奋的投资领域。
感谢预览和ML平台团队在戛纳电影节上的合作。特别是,感谢ML团队的Zena Hira,Jongmin Baek,Jason Briceno,Neeraj Kumar和Kris Concepcion;Anagha Mudigonda,Daniel Wagner和Robert Halas在Previews团队中;以及ML Platform团队的Ian Baker,Sean Chang,Aditya Jayaraman和Mike Loh。