:机器学习系统概述
Posted Sonhhxg_柒
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了:机器学习系统概述相关的知识,希望对你有一定的参考价值。
🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎
📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝
📣系列专栏 - 机器学习【ML】 自然语言处理【NLP】 深度学习【DL】
🖍foreword
✔说明⇢本人讲解主要包括Python、机器学习(ML)、深度学习(DL)、自然语言处理(NLP)等内容。
如果你对这个系列感兴趣的话,可以关注订阅哟👋
文章目录
2016 年 11 月,谷歌宣布将其多语言神经机器翻译系统整合到谷歌翻译中,标志着深度人工神经网络在大规模生产中的首批成功案例之一。1据 Google 称,通过此次更新,翻译质量的一次飞跃提升幅度超过了过去 10 年的总和。
深度学习的这种成功更新了对机器学习 (ML) 的广泛兴趣。从那时起,越来越多的公司转向机器学习来解决他们最具挑战性的问题。在短短五年内,机器学习几乎进入了我们生活的方方面面:我们如何获取信息、我们如何沟通、我们如何工作、我们如何找到爱。ML 的传播是如此之快,以至于已经很难想象没有它的生活。然而,在医疗保健、交通、农业等领域,甚至在帮助我们了解宇宙方面,还有更多的机器学习用例有待探索。2
许多人在听到“机器学习系统”时,只会想到正在使用的 ML 算法,例如逻辑回归或不同类型的神经网络。但是,该算法只是生产中的 ML 系统的一小部分。该系统还包括最初催生 ML 项目的业务需求、用户和开发人员与您的系统交互的界面、数据堆栈以及开发、监控和更新模型的逻辑,以及实现该逻辑交付的基础设施。图 1-1显示了 ML 系统的不同组件以及本书的哪些章节将介绍它们。
MLOPS 与 ML 系统设计之间的关系
MLOps 中的 Ops 来自 DevOps,是 Developments and Operations 的缩写。使某事可操作化意味着将其投入生产,包括部署、监控和维护。MLOps 是一组用于将 ML 投入生产的工具和最佳实践。
ML 系统设计对 MLOps 采用系统方法,这意味着它从整体上考虑 ML 系统,以确保所有组件及其利益相关者可以一起工作以满足指定的目标和要求。
图 1-1。ML 系统的不同组件。“机器学习算法”通常是人们说机器学习时想到的,但它只是整个系统的一小部分。
有很多关于这方面的优秀书籍各种机器学习算法。本书没有详细介绍任何特定的算法,而是帮助读者从整体上理解整个 ML 系统。换句话说,本书的目标是为您提供一个框架来开发最适合您的问题的解决方案,而不管您最终可能使用哪种算法。随着新算法的不断开发,算法可能很快就会过时,但本书中提出的框架仍应适用于新算法。
本书的第一章旨在概述如何将 ML 模型投入生产。在讨论如何开发 ML 系统之前,重要的是要问一个基本问题,即何时以及何时不使用 ML。我们将介绍一些流行的 ML 用例来说明这一点。
在使用案例之后,我们将继续讨论部署 ML 系统的挑战,我们将通过将生产中的 ML 与研究中的 ML 以及传统软件进行比较来做到这一点。如果您一直在开发应用 ML 系统,那么您可能已经熟悉本章所写的内容。但是,如果您只在学术环境中使用过 ML,那么本章将真实地介绍真实的 ML世界并设置您的第一个应用程序以取得成功。
何时使用机器学习
随着其在行业中的迅速采用随着技术的发展,ML 已被证明是解决各种问题的强大工具。尽管该领域内外的人们产生了令人难以置信的兴奋和炒作,但 ML 并不是可以解决所有问题的神奇工具。即使对于 ML 可以解决的问题,ML 解决方案也可能不是最佳解决方案。在开始 ML 项目之前,您可能想询问 ML 是否必要或是否具有成本效益。3
要了解 ML 可以做什么,让我们来看看 ML 解决方案通常可以做什么:
机器学习是一种方法,可以 (1)从 (3)现有数据中学习(2)复杂模式,并使用这些模式对 (5)未见数据进行 (4)预测。
我们将查看上述框架中的每个斜体关键词,以了解其对 ML 可以解决的问题的影响:
1. 学习:系统具备学习能力
关系数据库不是机器学习系统因为它没有学习的能力。您可以在关系数据库中显式声明两列之间的关系,但它本身不太可能弄清楚这两列之间的关系。
要让机器学习系统学习,它必须有一些东西可以学习。在大多数情况下,机器学习系统从数据中学习。在监督学习中,基于示例输入和输出对,ML 系统学习如何为任意输入生成输出。例如,如果您想构建一个机器学习系统来学习预测 Airbnb 房源的租金,您需要提供一个数据集,其中每个输入都是具有相关特征(面积、房间数量、社区、便利设施、评级)的房源该列表等),相关的输出是该列表的租金价格。一旦学会,这个 ML 系统应该能够根据其特征预测新上市的价格。
2. 复杂模式:有模式要学习,而且很复杂
ML 解决方案仅在以下情况下才有用有模式要学习。理智的人不会投资构建机器学习系统来预测公平骰子的下一个结果,因为这些结果的生成方式没有规律可循。4然而,股票的定价方式存在模式,因此公司已投资数十亿美元来构建 ML 系统来学习这些模式。
模式是否存在可能并不明显,或者如果模式存在,您的数据集或 ML 算法可能不足以捕获它们。例如,埃隆马斯克的推文如何影响加密货币价格可能存在某种模式。但是,除非您在他的推文上严格训练和评估您的 ML 模型,否则您不会知道。即使你所有的模型都无法对加密货币价格做出合理的预测,但这并不意味着没有模式。
考虑一个像 Airbnb 这样的网站,上面有很多房源;每个列表都带有一个邮政编码。如果您想将列表分类到它们所在的州,则不需要 ML 系统。由于模式很简单——每个邮政编码对应一个已知的州——你可以只使用一个查找表。
租金价格与其所有特征之间的关系遵循更复杂的模式,手动指定非常具有挑战性。ML 是一个很好的解决方案。您可以提供价格和特征,让您的机器学习系统找出模式,而不是告诉您的系统如何从特征列表中计算价格。ML解决方案与查找表解决方案以及一般传统软件解决方案的区别如图1-2所示。因此,ML 也被称为 Software 2.0。5
ML 在具有复杂模式的任务(例如对象检测和语音识别)方面非常成功。对机器而言复杂的事物不同于对人类而言复杂的事物。许多人类难以完成的任务对机器来说很容易——例如,提高 10 的次方数。另一方面,许多人类容易完成的任务对机器来说却很难——例如,决定是否存在图片中的一只猫。
图 1-2。ML 解决方案不需要手动指定模式来计算输出,而是从输入和输出中学习模式
3. 现有数据:有数据,或有可能收集数据
因为 ML 从数据中学习,所以必须成为可供它学习的数据。考虑建立一个模型来预测一个人一年应该缴纳多少税是很有趣的,但除非您可以访问大量人口的税收和收入数据,否则这是不可能的。
在零样本学习(有时称为零数据学习)环境中,ML 系统可以在没有针对该任务的数据进行训练的情况下对任务做出良好的预测。然而,这个 ML 系统之前接受过其他任务的数据训练,通常与所考虑的任务相关。因此,即使系统不需要数据来学习手头的任务,它仍然需要数据来学习。
也可以在没有数据的情况下启动 ML 系统。例如,在持续学习的背景下,无需对任何数据进行培训即可部署 ML 模型,但它们将从生产中的传入数据中学习。6然而,向用户提供训练不足的模型会带来一定的风险,例如糟糕的客户体验。
在没有数据且没有持续学习的情况下,许多公司遵循“假造直到你做到”的方法:推出一种服务于人类预测的产品,而不是 ML 模型,希望使用生成的数据来训练 ML以后的模型。
4. 预测:这是一个预测问题
ML 模型进行预测,因此它们只能解决需要预测性答案的问题。当您可以从大量廉价但近似的预测中受益时,ML 会特别有吸引力。在英语中,“predict”的意思是“估计未来的值”。例如,明天天气如何?谁将赢得今年的超级碗?用户接下来想看什么电影?
随着预测机器(例如,ML 模型)变得越来越有效,越来越多的问题被重新定义为预测问题。无论您有什么问题,您都可以将其框定为:“这个问题的答案是什么?” 不管这个问题是关于未来、现在,甚至是过去的事情。
计算密集型问题是一类已经非常成功地重构为预测性的问题。您可以将问题描述为:“这个过程的结果会是什么样子?”而不是计算一个过程的确切结果,这可能比 ML 在计算上更加昂贵和耗时。并使用 ML 模型对其进行近似。输出将是精确输出的近似值,但通常情况下,它已经足够好了。您可以在图形渲染中看到很多它,例如图像去噪和屏幕空间着色。7
5. 看不见的数据:看不见的数据与训练数据共享模式
您的模型从中学习的模式只有当看不见的数据也共享这些模式时,现有数据才有用。如果一个预测应用程序是否会在 2020 年圣诞节被下载的模型基于 2008 年的数据进行训练,那么它的性能将不会很好,当时 App Store 上最受欢迎的应用程序是 Koi Pond。什么是锦鲤池?确切地。
用技术术语来说,这意味着你看不见的数据和训练数据应该来自类似的分布。你可能会问:“如果数据是看不见的,我们怎么知道它来自什么分布?” 我们没有,但我们可以做出假设——比如我们可以假设用户明天的行为与今天的用户行为不会有太大的不同——并希望我们的假设成立。如果他们不这样做,我们将得到一个性能很差的模型,我们可以通过监控来发现它,如第 8 章所述,并在生产中进行测试,如第 9 章所述。
由于当今大多数 ML 算法的学习方式,如果您的问题具有以下额外特征,则 ML 解决方案将特别出色:
6.重复
人类非常擅长少量学习:你可以给孩子看几张猫的照片,他们中的大多数人下次看到猫时就会认出猫。尽管少样本学习研究取得了令人兴奋的进展,但大多数 ML 算法仍然需要许多示例来学习模式。当一项任务重复时,每个模式都会重复多次,这使得机器更容易学习它。
7. 错误预测的成本很低
除非你的机器学习模型的性能一直是 100%,这对于任何有意义的任务来说都是极不可能的,否则你的模型会出错。当错误预测的成本很低时,ML 特别适用。例如,当今 ML 最大的用例之一是推荐系统,因为在推荐系统中,糟糕的推荐通常是可以原谅的——用户只是不会点击推荐。
如果一个预测错误会产生灾难性的后果,如果平均而言,正确预测的好处超过错误预测的成本,ML 可能仍然是一个合适的解决方案。开发自动驾驶汽车具有挑战性,因为算法错误可能导致死亡。然而,许多公司仍然希望开发自动驾驶汽车,因为一旦自动驾驶汽车在统计上比人类司机更安全,它们就有可能挽救许多生命。
8. 规模化
ML 解决方案通常需要非常重要的前期工作对数据、计算、基础设施和人才的投资,所以如果我们可以大量使用这些解决方案,那将是有意义的。
“在规模上”对不同的任务意味着不同的事情,但总的来说,它意味着做出很多预测。示例包括每年对数百万封电子邮件进行分类或预测每天应将数千张支持票发送到哪些部门。
一个问题可能看起来是一个单一的预测,但它实际上是一系列预测。例如,一个预测谁将赢得美国总统大选的模型看起来似乎每四年才做出一次预测,但实际上它可能每小时甚至更频繁地做出一次预测,因为该预测必须不断更新以纳入新的信息。
大规模出现问题也意味着有大量数据需要收集,这对于训练 ML 模型很有用。
9.模式不断变化
文化变化。口味变化。技术变化。今天流行的东西明天可能是旧新闻。考虑任务垃圾邮件分类。今天,垃圾邮件的标志是一位尼日利亚王子,但明天可能是一位心烦意乱的越南作家。
如果您的问题涉及一种或多种不断变化的模式,那么手写规则等硬编码解决方案可能很快就会过时。弄清楚你的问题是如何改变的,以便你可以相应地更新你的手写规则可能太昂贵或不可能。因为 ML 从数据中学习,您可以使用新数据更新您的 ML 模型,而无需弄清楚数据是如何变化的。也可以设置您的系统以适应不断变化的数据分布,我们将在“持续学习”一节中讨论这种方法。
用例列表可以不断增加,随着 ML 采用在行业中的成熟,它会变得更长。尽管 ML 可以很好地解决一部分问题,但它不能解决和/或不应该用于解决很多问题。当今的大多数 ML 算法都不应该在以下任何情况下使用:
-
这是不道德的。我们将在“案例研究 I:自动评分者的偏见”一节中讨论一个案例研究,其中使用 ML 算法可能被认为是不道德的。
-
更简单的解决方案可以解决问题。在第 6 章中,我们将介绍 ML 模型开发的四个阶段,其中第一阶段应该是非 ML 解决方案。
-
这不划算。
但是,即使 ML 无法解决您的问题,也有可能将您的问题分解为更小的组件,并使用 ML 来解决其中的一些问题。例如,如果您无法构建聊天机器人来回答所有客户的查询,则可以构建 ML 模型来预测查询是否与常见问题之一匹配。如果是,请引导客户回答。如果没有,请将他们引导至客户服务。
我还想提醒大家不要放弃一项新技术,因为它目前不如现有技术具有成本效益。大多数技术进步都是渐进的。一种技术现在可能效率不高,但随着时间的推移,可能会有更多的投资。如果您等待该技术向其他行业证明其价值,然后再加入,您可能最终会落后于竞争对手数年或数十年。
机器学习用例
ML 在这两个领域的使用率都在增加企业和消费者应用程序。自 2010 年代中期以来,利用 ML 向消费者提供卓越或以前不可能的服务的应用程序激增。
随着信息和服务的爆炸式增长,如果没有 ML 的帮助,我们很难找到我们想要的东西,无论是搜索引擎还是推荐系统。当您访问亚马逊或 Netflix 等网站时,系统会向您推荐预计最符合您口味的商品。如果您不喜欢任何推荐,您可能想要搜索特定项目,并且您的搜索结果可能由 ML 提供支持。
如果您有智能手机,ML 可能已经在您的许多日常活动中为您提供帮助。在你的打字预测打字让电话变得更容易,这是一个 ML 系统,可以为您提供下一步可能想说的建议。ML 系统可能会在您的照片编辑应用程序中运行,以建议如何最好地增强您的照片。您可能会使用您的指纹或面部来验证您的手机,这需要机器学习系统来预测指纹或面部是否与您的相匹配。
将我吸引到该领域的 ML 用例是机器翻译,自动从一种语言翻译成另一种语言。它有可能让来自不同文化背景的人们相互交流,消除语言障碍。我的父母不会说英语,但多亏了谷歌翻译,他们现在可以阅读我的作品并与不会说越南语的朋友交谈。
ML 越来越多地出现在我们的家中,并带有 Alexa 和 Google Assistant 等智能个人助理。智能安全摄像头可以让您知道您的宠物何时离开家,或者您是否有不速之客。我的一个朋友担心他年迈的母亲独自生活——如果她跌倒了,没有人可以帮助她站起来——所以他依靠一个家庭健康监测系统来预测家里是否有人跌倒。
尽管消费者 ML 应用市场正在蓬勃发展,但大多数 ML 用例仍然在企业世界中。企业 ML 应用程序的要求和考虑因素往往与消费者应用程序大不相同。有很多例外,但在大多数情况下,企业应用程序可能有更严格的准确性要求,但对延迟要求更宽容。例如,将语音识别系统的准确率从 95% 提高到 95.5% 对大多数消费者来说可能并不明显,但将资源分配系统的效率提高 0.1% 就可以帮助像谷歌或通用汽车这样的公司节省数百万美元。同时,一秒钟的延迟可能会让消费者分心并打开其他东西,但企业用户可能更能容忍高延迟。对于有兴趣从 ML 应用程序构建公司的人来说,消费者应用程序可能更容易分发,但更难货币化。但是,除非您自己遇到过,否则大多数企业用例并不明显。
根据 Algorithmia 的 2020 年企业机器学习状况调查,企业中的 ML 应用程序多种多样,既服务于内部用例(降低成本、产生客户洞察和智能、内部处理自动化),也服务于外部用例(改善客户体验、留住客户、交互与客户)如图 1-3所示。8
图 1-3。2020 年企业机器学习现状。来源:改编自 Algorithmia 的图片
欺诈检测是其中之一ML 在企业界最古老的应用。如果您的产品或服务涉及任何价值的交易,则很容易受到欺诈。通过利用机器学习解决方案进行异常检测,您可以拥有从历史欺诈交易中学习并预测未来交易是否存在欺诈的系统。
决定对您的产品或服务收取多少费用可能是最困难的商业决策之一;为什么不让 ML 为您做呢?价格优化是在特定时间段内估计价格以最大化定义的目标函数的过程,例如公司的利润、收入或增长率。基于机器学习的定价优化最适用于交易量大、需求波动大、消费者愿意支付动态价格的情况——例如互联网广告、机票、住宿预订、拼车和活动。
做生意,做人很重要能够预测客户需求,以便您准备预算、库存库存、分配资源和更新定价策略。例如,如果您经营一家杂货店,您希望有足够的库存,以便客户找到他们想要的东西,但您又不想库存过多,因为如果您这样做,您的杂货可能会变质并且您会赔钱。
获得新用户的成本很高。截至 2019 年,应用获取将进行应用内购买的用户的平均成本为 86.61 美元。9 Lyft 的购置成本估计为每名乘客 158 美元。10对于企业客户来说,这个成本要高得多。获客成本被投资者誉为创业杀手。11少量降低获客成本,可大幅增加利润。这可以通过更好地识别潜在客户、展示更有针对性的广告、在正确的时间提供折扣等来实现——所有这些都是 ML 的合适任务。
在你花了这么多钱获得客户之后,如果他们离开,那就太可惜了。获得新用户的成本大约是保留现有用户的 5 到 25 倍。12 流失预测是预测特定客户何时将停止使用您的产品或服务,以便您可以采取适当的行动来赢回他们。流失预测不仅可以用于客户,也可以用于员工。
为防止客户离开,重要的是要在他们出现问题时立即解决他们的问题,让他们感到高兴。自动支持票证分类可以帮助解决这个问题。以前,当客户打开支持票或发送电子邮件时,需要首先对其进行处理,然后将其传递给不同的部门,直到它到达可以解决问题的人的收件箱。机器学习系统可以分析票证内容并预测票证应该去哪里,这可以缩短响应时间并提高客户满意度。它还可用于对内部 IT 工单进行分类。
另一个在企业中流行的 ML 用例是品牌监控。品牌是企业的宝贵资产。13监控公众和您的客户如何看待您的品牌非常重要。您可能想知道何时/何地/如何提及它,无论是明确的(例如,当有人提到“Google”时)还是隐含的(例如,当有人说“搜索巨头”时),以及与之相关的情绪。如果您的品牌提及中突然出现负面情绪,您可能希望尽快解决。情感分析是典型的 ML 任务。
一组最近引起广泛关注的机器学习用例是在医疗保健领域。有可以检测皮肤癌和诊断糖尿病的机器学习系统。尽管许多医疗保健应用程序是面向消费者的,但由于它们对准确性和隐私的严格要求,它们通常是通过医疗保健提供者提供的,例如作为医院或用于协助医生提供诊断。
了解机器学习系统
了解 ML 系统将有助于设计和开发它们。在本节中,我们将讨论机器学习系统与研究中的机器学习(或学校经常教授的机器学习)和传统软件有何不同,这激发了对本书的需求。
研究与生产中的机器学习
由于行业中的 ML 使用仍然相当新,大多数具有 ML 专业知识的人通过学术界获得了它:学习课程、进行研究、阅读学术论文。如果这描述了您的背景,那么您可能需要一个陡峭的学习曲线来了解在野外部署 ML 系统的挑战,并为这些挑战提供大量解决方案。生产中的 ML 与研究中的 ML 非常不同。表 1-1显示了其中五个主要差异。
研究 | 生产 | |
---|---|---|
要求 | 基准数据集上最先进的模型性能 | 不同的利益相关者有不同的要求 |
计算优先级 | 快速训练,高吞吐量 | 快速推理,低延迟 |
数据 | 静态a | 不断变化 |
公平 | 往往不是重点 | 必须考虑 |
可解释性 | 往往不是重点 | 必须考虑 |
不同的利益相关者和要求
参与研究和排行榜的人项目通常只针对一个目标。最常见的目标是模型性能——开发一个在基准数据集上实现最先进结果的模型。为了排除性能上的小幅提升,研究人员经常求助于使模型过于复杂而无用的技术。
将 ML 系统投入生产涉及许多利益相关者。每个利益相关者都有自己的要求。拥有不同且经常相互冲突的需求可能会使设计、开发和选择满足所有需求的 ML 模型变得困难。
考虑一个向用户推荐餐馆的移动应用程序。该应用程序通过向餐厅收取每笔订单 10% 的服务费来赚钱。这意味着昂贵的订单比便宜的订单给应用程序更多的钱。该项目涉及机器学习工程师、销售人员、产品经理、基础架构工程师和一名经理:
机器学习工程师
想要一个模型来推荐用户最有可能订购的餐厅,并且他们相信他们可以通过使用具有更多数据的更复杂模型来做到这一点。
销售团队
想要一个模型来推荐更昂贵的餐厅,因为这些餐厅会带来更多的服务费。
产品团队
注意到延迟的每一次增加都会导致通过服务的订单下降,因此他们需要一个能够在 100 毫秒内返回推荐餐厅的模型。
机器学习平台团队
随着流量的增长,这个团队因为扩展现有系统的问题而在半夜被吵醒,因此他们希望推迟模型更新以优先改进 ML 平台。
经理
想要最大化利润,实现这一目标的一种方法可能是放开 ML 团队。14
“推荐用户最有可能点击的餐厅”和“推荐能为应用带来最多收入的餐厅”是两个不同的目标,在“解耦目标”一节中,我们将讨论如何开发满足不同目标的机器学习系统。剧透:我们将为每个目标开发一个模型并结合他们的预测。
现在让我们想象一下,我们有两个不同的模型。模型 A 是推荐用户最有可能点击的餐厅的模型,模型 B 是推荐将为应用带来最多收入的餐厅的模型。A 和 B 可能是非常不同的模型。应该为用户部署哪种模型?为了让决策更加困难,A 和 B 都不满足产品团队提出的要求:他们不能在 100 毫秒内返回餐厅推荐。
在开发 ML 项目时,ML 工程师了解所有相关利益相关者的要求以及这些要求的严格程度非常重要。例如,如果能够在 100 毫秒内返回推荐是必须具备的要求——公司发现如果你的模型花费超过 100 毫秒来推荐餐馆,10% 的用户会失去耐心并关闭应用程序——那么模型 A B型也行不通。但是,如果这只是一个很好的需求,您可能仍需要考虑模型 A 或模型 B。
与研究有不同要求的生产是成功的研究项目可能并不总是用于生产的原因之一。例如,集成是一种在许多 ML 比赛的获胜者中流行的技术,包括著名的 100 万美元的 Netflix Prize,但它并未广泛用于生产。集成结合了“多种学习算法,以获得比单独的任何组成学习算法更好的预测性能。” 15虽然它可以给您的 ML 系统带来小的性能提升,但集成往往会使系统过于复杂而无法在生产中使用,例如,做出预测的速度变慢或难以解释结果。我们将在“合奏”一节中进一步讨论合奏。
对于许多任务,性能的微小改进可以带来收入的巨大提升或成本节约。例如,产品推荐系统的点击率提高 0.2% 可以为电子商务网站带来数百万美元的收入增长。但是,对于许多任务,用户可能不会注意到小的改进。对于第二种类型的任务,如果一个简单的模型可以完成合理的工作,那么复杂的模型必须表现得更好,以证明复杂性是合理的。
对 ML 排行榜的批评
近年来,对 ML 排行榜有很多批评者,既有诸如 Kaggle 之类的竞赛,也有诸如 ImageNet 或 GLUE 之类的研究排行榜。
一个明显的论点是,在这些比赛中,构建 ML 系统所需的许多艰难步骤已经为您完成。16
一个不太明显的论点是,由于当您有多个团队在同一个保留测试集上进行测试时会发生多假设测试场景,一个模型可能会比其他模型做得更好只是偶然。17
研究人员注意到研究和生产之间的利益错位。在 EMNLP 2020 的一篇论文中,Ethayarajh 和 Jurafsky 认为,基准有助于推动自然语言处理 (NLP) 的进步,因为它鼓励创建更准确的模型,但牺牲了从业者重视的其他品质,例如紧凑性、公平和能源效率。18
计算优先级
在设计机器学习系统时,那些没有部署机器学习系统经常犯错误,过度关注模型开发部分,而对模型部署和维护部分关注不够。
在模型开发过程中,您可能会训练许多不同的模型,并且每个模型都会对训练数据进行多次传递。然后,每个经过训练的模型都会对验证数据生成一次预测以报告分数。验证数据通常比训练数据小得多。在模型开发过程中,训练是瓶颈。然而,一旦部署了模型,它的工作就是生成预测,因此推理是瓶颈。研究通常优先考虑快速训练,而生产通常优先考虑快速推理。
一个推论是研究优先考虑高吞吐量,而生产优先考虑低延迟。如果您需要刷新,延迟是指从接收查询到返回结果所需的时间。吞吐量是指在特定时间段内处理了多少查询。
术语冲突
有些书做出了区分延迟和响应时间之间。根据 Martin Kleppmann 在他的《设计数据密集型应用程序》一书中的说法,“响应时间就是客户端所看到的:除了处理请求的实际时间(服务时间)之外,它还包括网络延迟和排队延迟。延迟是请求等待处理的持续时间——在此期间它是潜在的,等待服务。” 19
在本书中,为了简化讨论并与 ML 社区中使用的术语保持一致,我们使用延迟来指代响应时间,因此请求的延迟衡量的是从发送请求到收到请求的时间。收到响应。
例如,谷歌翻译的平均延迟是从用户点击翻译到显示翻译的平均时间,吞吐量是它每秒处理和服务的查询数量。
如果您的系统总是一次处理一个查询,则较高的延迟意味着较低的吞吐量。如果平均延迟为 10 毫秒,即处理一次查询需要 10 毫秒,则吞吐量为 100 次查询/秒。如果平均延迟为 100 毫秒,则吞吐量为 10 次查询/秒。
然而,由于大多数现代分布式系统批处理查询以一起处理它们,通常是并发的,更高的延迟也可能意味着更高的吞吐量。如果您一次处理 10 个查询并且运行一个批处理需要 10 毫秒,则平均延迟仍然是 10 毫秒,但吞吐量现在提高了 10 倍——1,000 次查询/秒。如果您一次处理 50 个查询并且运行一个批处理需要 20 毫秒,那么现在的平均延迟为 20 毫秒,吞吐量为 2,500 个查询/秒。延迟和吞吐量都增加了!图 1-4说明了一次处理一个查询和批量处理查询在延迟和吞吐量权衡方面的差异。
图 1-4。一次处理一个查询时,较高的延迟意味着较低的吞吐量。但是,在批量处理查询时,更高的延迟也可能意味着更高的吞吐量。
如果要批量在线查询,这会更加复杂。批处理要求您的系统在处理它们之前等待足够的查询以批处理方式到达,这进一步增加了延迟。
在研究中,您更关心在一秒钟内可以处理多少个样本(吞吐量),而不是处理每个样本需要多长时间(延迟)。您愿意增加延迟以增加吞吐量,例如,通过积极的批处理。
但是,一旦将模型部署到现实世界中,延迟就很重要。2017 年,Akamai 的一项研究发现,100 毫秒的延迟会降低 7% 的转化率。20 2019 年,Booking.com 发现延迟增加约 30% 会导致转化率下降约 0.5%——“这是我们业务的相关成本”。21 2016 年,Google 发现超过一半的移动用户会在加载时间超过 3 秒的情况下离开页面。22今天的用户更没有耐心了。
为了减少生产中的延迟,您可能必须减少一次可以在同一硬件上处理的查询数量。如果您的硬件能够一次处理更多查询,那么使用它来处理更少的查询意味着您的硬件利用率不足,从而增加了处理每个查询的成本。
在考虑延迟时,重要的是要记住延迟不是一个单独的数字,而是一个分布。通过使用单个数字(例如时间窗口内所有请求的平均(算术平均值)延迟)来简化此分布是很诱人的,但这个数字 以上是关于:机器学习系统概述的主要内容,如果未能解决你的问题,请参考以下文章