制作和凯尔·加勒廷一起表演的模型
回到博客主页

制作和凯尔·加勒廷一起表演的模型

MLOps 2022年6月20日

在本期节目中,我有幸与Etsy的机器学习软件工程师Kyle Gallatin进行了交谈。我们讨论了他如何在Etsy建立机器学习平台,在生产中进行实验(是的,你没听错),以及如何在非常大的范围内优化模型性能。

听音频

阅读转录

院长:大家好!我是迪恩,您正在收听的是MLOps播客。你可能知道,一般来说,机器学习和数据科学是两个一直在发展的领域,很难跟上时代的步伐。具体来说,将机器学习引入生产或现实世界的领域似乎非常令人困惑。有很多事情在发生,很难理解你周围发生的一切。但另一方面,也有许多聪明的人在将自己的项目投入生产过程中做着出色的工作,我们也有机会与他们中的许多人交谈,但这显然是信息不够广泛,许多人不知道最佳实践以及其他团队是如何工作的。这就是为什么我们决定开始这期播客,在这里我们将和在各种类型的机器学习团队工作的人交谈,并听到他们是如何将他们的项目投入生产的。我希望你觉得有趣,我们开始吧。今天我请到了凯尔·加拉廷。凯尔拥有分子和细胞生物学硕士学位。 He trained as a data scientist at the NYC Data Science Academy, where he now serves as a mentor to students. Since graduating, he's been a data scientist at Fleetwick, followed by Pfizer, and then he transitioned into machine learning engineering. He's currently a software engineer at Etsy, where he is building their machine learning platform. Hi Kyle, thanks for joining. You have a very unique path into the world of data science, and I'd love for you to share a bit about how you got into this.

凯尔:我总是喜欢用这个短语,我有点绊倒了,掉进了里面。当我在攻读生物学硕士学位并计划在这方面深入研究时,我最终在一家小型生物技术公司获得了实习机会,在那里我的工作是自学R和Python来分析我们的内部数据。雷竞技网址是通过这段经历,我了解了整个数据科学的世界以及所有可能发生的事情。我在大学里上过一些编程课,但它们并没有引起我的共鸣,但通过那次实习,我真的对R和Python感兴趣了,这让我追求了那个全职新兵训练营,然后从那里进入了数据科学领域。从生物学一直到数据科学。

院长:你提到的一点是,你以前确实有编码的经验,但你并不喜欢它。是有现实世界的问题在起作用,还是有别的什么?

凯尔:我想这绝对是不同之处。我花了一段时间才克服了编码的第一个学习曲线。大一的时候我上了一门MATLAB课程,大二的时候我上了一门学者课程。一点统计编程,一点类似于函数实验室的东西,但我总是发现尝试解决课堂上布置的问题非常困难。但当我为一家公司做一些真正的事情,看到它推动价值时,它绝对改变了我对编程的看法,也改变了我从编程中获得的雷竞技网址是满足感和乐趣。

院长:你做了所有与数据相关的工作,现在你在更面向工程的领域。有没有一个变化或点,你说,好吧,也许编码的事情比我最初想象的更有趣,或者你是如何结束你现在的位置的?

凯尔:相比数据科学和机器学习的数学部分,我一直对编码部分更感兴趣。我想我很早就知道我不会取得突破性进展,写关于深度学习的论文或类似的东西,我的专长一直是实践方面的事情,比如实现东西,编写代码,并实际运行它们。通过我在辉瑞的工作,我开始看到许多机器学习项目没有产生影响,因为团队或组织中缺乏软件工程专业知识,缺乏将这些模型部署到生产和管理它们的工程实践,以及诸如此类的事情。这就是我对mlop和ML基础设施和平台这一新领域产生兴趣的地方,我看到了成为这一新领域专家的巨大机会。

院长:我的主要收获是,如果你现在正在学习一门课程,或者正在进入数据科学的世界,而你觉得你对编码并不像你想象的那样感兴趣,在某种意义上,你的故事有点鼓舞人心,对吧?因为你基本上是在说,技术部分并不是对技术部分感到兴奋的先决条件。这不是进入这个领域的先决条件。您将需要使用代码,而且目前几乎没有办法绕过这一点,至少对于更有趣的用例来说是这样。但你可以接受它或学会喜欢它在你学会喜欢或对你正在解决的实际问题感兴趣之后,我认为这应该是激励和安慰很多人现在正在进入这个领域。

凯尔:我听到很多没上过编码课或没有上过编码课的人说,看看数据科学领域或软件领域,他们说,我永远也做不到。我说,听着,我知道这绝对是那种感觉,但相信我,就像所有人一样,这只需要时间和一些兴趣,你肯定会达到你能把它做好的程度。

院长:这已经是本集的一个很好的开始。你现在是Etsy上建立机器学习平台的带头人。为什么?根据我们的经验,现在很多公司都想做机器学习。下一步就是我们需要一个平台来支持机器学习。在很多情况下,这实际上并不是一个好的开始。在系统化之前你要先证明这是有价值的。所以,是的。你为什么要建立这个平台?它是如何构建的?

凯尔:我绝对不是这个平台的架构师,也不是唯一的工程师。这个平台实际上是在2017年开始的,远早于我加入Etsy。作为满足公司内数据科学家需求的一种手段。雷竞技网址是他们想要一个更标准化的软件工程,MLOps实践方法来部署模型并在生产中维护它们。所以我认为从那时起,甚至可能在那之前很久,机器学习在Etsy就已经有了价值。它推动了搜索广告和推荐,他们确实建立了框架,让我们可以衡量这些框架的真正货币影响,这很好。本质上,机器学习对Etsy的价值证明了一个非常全面的平台的存在,以满足组织内数据科学家和机器学习实践者、应用科学家的所有需求。

院长:你能分享一下这个平台的组成部分吗?

凯尔:有很多很多不同的组成部分。机器学习平台本身被分成两部分,很简单,训练和服务。还有一个ML系统可以处理很多其他的东西。我觉得这两个术语总是非常,我在很多不同的公司系统和平台中都听到过这两个术语的用法,但平台分为培训和服务两部分。雷竞技网址是服务方面是我的工作,那是实时模型推理。基本上,一旦数据科学家训练了一个模型,在生产中为它服务,监视它,对它具有可观察性,以及随之而来的所有规模和性能考虑,我们就会处理它。培训方面处理更多的是日复一日的实验,为新模型、现有模型等等建立管道,并随着时间的推移维护这些管道。

院长:ML系统端的定义是什么?这样人们就能在脑子里构思这些了吗?

凯尔:那边现在有很多不同的队伍。我个人认为这是训练和服务的上游。上面有很多功能系统。关于实验还有一些其他的事情要做。有一些计算机视觉专业系统和正在建造的东西。

院长:更少的是为生产做好准备,而更多的是为培训做好准备。这是较早的一步。

凯尔:这么说倒是个好方法。这两者之间绝不是一条硬性界限。我们合作的很多地方都有重叠,这取决于我们正在开发的系统的哪一部分。

院长:显然,所有这些都是为了使组织内的数据科学家的工作更容易、更简单、更有效地投入生产。你也提到过我们有分歧。即使在平台方面,也有培训方面,有部署方面。很明显,当事情成功时,它们是一个接一个地发生。我很好奇,Etsy的数据科学家是如何与这个平台的各个部分交互的?

凯尔:为了更加明确和技术性,我们现在主要使用Vertex AI,它是人工智能的谷歌云提供商。我们使用Vertex管道来编写Model dag,这是一个托管服务,为你提供访问Kubeflow的权限,然后我们使用Vertex平台或Vertex AI来实际训练那些模型。数据科学家可以登录Vertex,然后用他们想要的任何东西来训练实验。他们可以打开笔记本,使用任何他们想要的环境,试验代码,尝试模型,等等。当他们准备好将其进一步产品化时,他们可以将其工作到一个Kubeflow Dag中,它将按时间表每天运行或类似的东西。这非常好,非常有帮助。一旦它被移交给服务端,我们就有了一个模型管理服务,我们在内部称之为Barista,由服务组管理,它本质上是一个UI和API,充当Kubernetes的控制平面。因此,通过不同的模型服务,本质上是我们支持的图像或平台,比如我们支持TensorFlow服务,Selden,以及一个很久以前建立的基于Python编写的内部服务,数据科学家可以在Kubernetes上创建部署,然后使用他们的模型工件配置他们的部署,用该工件运行推理。

院长:它是有意义的。作为一名数据科学家,我需要使用TF服务或Selden或你们的内部系统吗?我是否需要支持某种特定的格式,或者在这些系统中工作的所有东西是否也适用于您?

凯尔:这完全取决于你想用哪一个。当我们构建我们的新平台时,它是作为TensorFlow优先的平台构建的,所以内部有很多推动采用TensorFlow作为主要的服务框架。我们基于大多数人将使用TensorFlow这一事实,以及从TensorFlow服务的角度出发所需要的所有假设。我们确实有内部的助手库和东西,但我们现在真正需要的是一个TensorFlow保存的模型工件。你可以从Blob store或类似的地方传递它的位置,它会被加载到TensorFlow服务容器中你会在Kubernetes上得到一个部署。我们采用Seldon的原因是我们还想在平台中保持一定的灵活性。我们不希望TensorFlow成为唯一的建模框架。我们在遗留内部框架中使用的许多旧模型就像GBM一样。那里也有一些TensorFlow模型,我想可能还有其他一些框架,比如VW的一些语言东西。但我们希望人们不被局限于TensorFlow,能够写任何东西。 So Selvan is a little bit of a different workflow where data scientists write their own Python serving code and manage their own images, in their own repo. So that's the flexible side of things in that trade-off there where you can go with TensorFlow and just provide an artifact. But if you need or want more flexibility, you can write whatever you want, but then obviously you're responsible for more aspects of the code base and the serving code.

院长:这是一个很好的心智模式。很多时候,这是非此即彼的,然后你在一方的权衡中输了。要么你非常不灵活,要么你需要大量的前期工作来部署模型。这给了你一个“选择你自己的冒险”的范例,在那里你不能抱怨。如果你想要简单,就使用TensorFlow,你想要自定义,那么你需要做更多的工作来支持它。这对我来说很有意义,我希望市场能够朝着这个方向发展,让更多平台能够做到这一点,并实现选择,而不是非此即彼。在训练和部署方面都有实验的概念。在数据科学方面,您需要尝试不同的模型类型,看看哪些模型表现良好,然后在生产方面,您需要实际测试对下游的影响或业务指标,这些指标可能在培训后很难衡量。在你的系统中情况如何?这是你自己所支持的吗?

凯尔:ML培训的实验方面都是关于那些离线指标。曲线的面积或一些数据科学度量。我不再是数据科学家了,我甚至不会谈论它。但我们实际上有一个完整的实验平台,是围绕在线指标的AB测试实验概念建立起来的,从本质上确认,一个模型不仅在这些指标的线下表现良好,而且实际上产生更多的收入,或带来更多的点击或更多的产品互动或诸如此类的东西。所以我们实际上有一个完整的团队,在一个平台上工作,管理和测量这些在线指标,一旦它被提供给我们的机器学习平台。我想说在这方面它是相当成熟的,我们确实有全面的系统来评估这类事情。但我在实验方面并没有花太多时间。我主要关注的是确保模型的性能达到实验阶段。

院长:我将在这里深入挖掘一点,然后我们将继续讨论性能,我认为性能也非常有趣。但这将使Etsy处于一个非常先进的阶段,与大多数公司相比,至少我有机会与它们交谈。我们都是数据人,所以我们知道AB测试的价值,知道在你的决策中数据驱动的价值,知道把什么东西投入生产等等。但是建立这样的框架是我不经常看到的。很多公司都说他们想在未来这么做。它通常还没有实现,这是公平的。我们的市场仍在增长,这没关系。但是是的。你有什么建议吗?如果我是一家公司的首席技术官,想要做雷竞技网址是到这一点,我怎样才能更快更好地做到呢?

凯尔:这是一个价值连城的问题。如果我能有效地回答这个问题,我可能会处于不同的位置。第一件事就是不要忘记它们的存在。如果你正在考虑你公司的布局,至少几年前是这样的,或者对那些只雇佣数据科学家而不雇佣软件工雷竞技网址是程师的公司来说是这样的。那就是建模和机器学习不应该存在于真空中,你应该有适当数量的团队来支持一个真正的机器学习模型将进入的每一个阶段。所以这可以是一个简单的建议,有一个团队致力于建立一个实验平台。拥有一支致力于构建机器学习平台的团队。您将需要不同的团队为您的数据科学家和建模人员提供内部服务,以便您可以通过机器学习交付价值。您希望建模人员专注于建模,然后,一旦他们准备好了,您希望他们通过一些干净的界面将其转交给专门从事基础设施和规模的团队。你需要一个专门从事实验或数据的团队,编写能够将性能与生产中的东西进行比较的软件,并生成你可以信任的良好指标,这样你就可以从那里升级。 I think it would be almost the structure of your organization and the good folks that you hire to build that out and define that workflow. Because machine learning by itself is not going to deliver value without all of those other considerations.

院长:从我们的经验中,我可以分享的一件事是,对我来说,第一步似乎是让构建模型的人理解业务端的语言。如果你问某人衡量成功的标准是什么,而他们的回答是准确性或曲线下面积,这表明他们认为这是一个需要解决的技术问题,而不是一个需要解决的业务问题。然而,即使你没有一个很好的AB测试方法,但你意识到你试图优化的目标是减少流失,增加转化率,无论如何,那么你已经领先了一步。接下来的部分是,我感觉我是在海拔30k英尺的地方说话,这很难实现。但我认为你可以考虑的另一件事是,在建立一个模型之前,先实现一些简单的解决方案,然后部署它,看看会发生什么。这通常为不要抱着用机器学习来解决问题的心态奠定了基础。这是危险的,因为机器学习是了不起的。我绝对比大多数人更理解为什么人们想要研究它并用它来解决问题。但拥有这样的心态,并将其视为一种产品,而不仅仅是一项技术,这可能是很好的第一步,这并不需要特殊的技术能力。

凯尔:要回顾大量的步骤,首先要评估是否需要机器学习。我的哲学是,除非有需要,否则绝对不要做。我看到过很多用例,人们要么想要机器学习,因为这是机器学习,要么想要对问题进行机器学习,因为这是他们知道的。但是这个问题可以通过数据结构和算法或者一个设计良好的通用层次结构框架来解决。

院长:让我们深入研究性能。您决定部署一个模型。比如说,你知道业务需求,顺便说一下,这也和性能有关。因为如果您不知道业务需求,也不关心模型是否在执行,您只需要尽可能多的神经元、层等,并拥有最酷的模型。但显然,如果你做出了最好的预测,但这需要3个小时,而用户希望它在3秒后发生,那么没有用户会等着看你的酷模型吐出什么。经常会出现的一个问题是,这是谁的责任?是平台团队吗?是数据科学家还是做优化的其他工程团队?

凯尔:这是一个共同的努力,因为我们必须看到正在发生的每一层面的事情。作为平台团队,我们负责集群、部署本身以及其他一些基础设施,比如我们的摄取控制器、负载平衡器,诸如此类的东西。但当涉及到实际的模型延迟本身时,由于数据科学家可以用TensorFlow Transform编写任何他们想要的代码,或者向网络添加任何他们想要的层,显然,在模型本身中可能会发生很多事情来引入延迟。所以如果我们到了性能测试的阶段,也就是在实验之前,我们就会想,哦,这个延迟相对来说比较高,我们实际上现在正在开发一个内部框架,以便尽可能早地通过培训和实验来识别这个问题。可以说,这将是一个高延迟模型,或者在低延迟服务上花费很大,我们试图与他们合作,优化基础设施设置或确定模型中可以改进的特定地方。例如,在TensorFlow Transform中,我们已经有了一些实例,其中一个简单的嵌套For循环而不是更多的向矢量化代码,导致了200毫秒的p99延迟,下降到15毫秒的p99延迟在相同的RPS下。正是这些事情,你会觉得,哇,你可以在代码中做一些小事,这些小事真的会对模型在生产中运行的方式产生巨大影响。

院长:你如何保存这方面的知识?因为似乎很多事情都是有人尝试了一些东西或者看了TensorFlow背后的字节码然后意识到使用for循环会更好。你有提高速度的Wiki吗,或者看起来怎么样?

凯尔:我们组建了一些代码实验室,这很有趣。因为我们首先是TensorFlow,我们使用TensorBoard primary来查看特定的操作和TensorFlow图等。不幸的是,对TensorBoard的支持在推理方面比在训练方面更受限制。你得到的功能也会减少。但你仍然可以看看TensorFlow图的很多不同部分,然后说,哦,哇,这个操作超级昂贵,或者占用这么多的时间,它在很多情况下帮助我们确定了瓶颈,数据科学家回过头来重写了一些代码,我们最终得到了一个性能更好的模型。

院长:你认为这通常是瓶颈吗?实际模型与数据转换的结果在瓶颈中所占的百分比是多少?类似这样的事情吗?

凯尔:因为它更多的是瓶颈的积累,而不是……我们有过一两次遇到瓶颈的情况,然后突然就解决了。但更多情况下,这是随着时间的推移而进行的多次改进,以及对代码进行的一些小的更改。在基础设施方面,我们当然也可以做一些事情。我们总是可以增加它获得的资源数量,这增加了成本。我们可以把客户端超时处理成,好吧,用户得到结果的速度会慢一点这是一般规则,但对于这个模型,我们可以接受因为它会给我们更好的结果。但是我们在建模方面做了更多的事情或者我们在建模方面做了更多的事情来减少延迟服务时间。

院长:有区别,如果用户期望的东西发生在零时间然后取5秒之类的,或者如果你说喜欢,听着,我们在做魔法给你,然后你有一个加载器5秒钟,然后你可以得到很多,即使它只需要不到,有时产品建议实际上是负载超过行动都因为它看起来像你为用户做有意义的工作。抛开笑话不谈,有案例研究证明这能提高转化率等。因此,要想提高性能,有很多方法可以跳出固有的思维模式。其中一些可能不是为了提高性能,而实际上只是为了向用户反映,其中一些是发生在幕后的魔术。这是一种权衡,对吧?每个模型都需要不同的决策过程,这取决于任务,取决于组织的成熟度。你们是如何平衡绩效和结果的?如果你对如何思考这个问题有什么建议,比如一个框架来适应我的公司或其他公司。雷竞技网址是

凯尔:尽管我们是平台团队,但我们并不拥有这些模型。归根结底,这是一个产品决策你是否同意让某物在X时间以X成本返回。但是我们已经考虑过了我们已经有了一个模型的新迭代,这是非常昂贵的服务。这可以归结为简单的成本。好吧,我们每年要花这么多钱。与旧模式相比,它将净赚这么多利润。我们可以接受吗?从整体的货币角度来看?从环境的角度来看,如果这是一个荒谬的模型,我们可以接受吗?我们该如何从这里开始,以一种对产品最有意义的方式前进? Thought about it in the simplest terms, it's cost of implementation and maintenance versus the profit. It's often a somewhat clear cut whether or not it's worth it.

院长:你是在寻找一个上升的阈值吗?

凯尔:这可能取决于产品本身。我不认为我们有一个通用的框架不去,如果只有这么多的边际,是的,超过一个阈值。所以,我不会说它是具体的。我只能想象有多少变量会影响到对特定产品或特定业务的决策是否正确。但在一天结束的时候,我相信产品总是做出正确的决定。

院长:您顺便提到了这一点,但您基本上是在说,您正在尝试构建机制,以便尽快识别这些瓶颈。所以对我来说,我想到的是侧写器,对吧?我最近在一个网站上看到了这个你想看看有什么瓶颈和加载网站。因为如果它装载得很糟糕,人们就会离开。他们不想等。如果你有一台机器学习分析器,那就太酷了。我不知道现在是否存在这样的东西,但是你如何将它构建到模型构建过程中呢?这到底是怎么回事?

凯尔:我们正在做侧写,这很酷。我不想透露太多信息,但基本思想是,在数据科学家培训的模型实验过程中,我们要尽可能早地运行分析和小型包含的负载测试。因此,如果你是第一次在一个模型上测试,你可以很容易地导出一个TensorFlow工件,将它部署到附带TensorBoard的我们的开发环境中,并自动运行一些概要文件,使用一些你刚刚训练过的数据,以查看服务是否昂贵,还可以导出那些TensorBoard结果,以更深入地了解特定的操作。所以这种方法已经在一些模型的早期过程中发现了一些瓶颈。这很好,因为与数据科学家投入大量的时间,然后到最后阶段,我们花一两个月,然后试图减少功能或转换不同,我们可以从他们在这个过程早期尝试新事物的那一刻开始做。所以这对我们来说很重要,因为我们能尽早发现问题。

院长:这是CI的一部分吗?作为一个数据科学家,我什么时候做这个?

凯尔:是的,你随时都可以做。我们有一个CLI。但我们也在尝试编写一个自动化程序,你基本上可以把它作为你培训管道的一部分来运行。如果你有一个模型和数据,你可以把它写进你的管道,或者你可以以你想要的方式运行一个特别的,对你目前所处的实验阶段有意义的程序。重要的是要尽早完成。

院长:你的意思是,这些工具在软件开发中随处可见,但当你进入机器学习时,它们却不存在。拥有一个侧写器是一件非常有帮助的基本事情。然后进行单元测试,定义你关心的标准,然后尽早进行测试,这在软件开发和机器学习中是理所当然的,就像科幻小说一样。所以很高兴听到你也在采用这些模式。

凯尔:我个人的一个哲学是,机器学习是软件开发或软件开发的一些专门学科。mlop花了我们很长时间才完成,但这对机器学习来说是一个巨大的震撼,它需要更像软件开发。然后我们对分析或治理做同样的事情,不管它是什么,它就像一件事接着另一件事一样不断发生。所以我认为我们越快地进行机器学习或者从软件开发中吸取尽可能多的知识到机器学习方面,我们就会越快地达到机器学习的终极状态,也许它是无限的,软件开发将会不断改进,变得更好,诸如此类。

院长:假设我们现在处于这样一种状态,您为数据科学家提供了工具,以确定瓶颈,以及可以改进的地方。这通常会导致一种情况,我们在与许多组织交谈时都看到过,即在数据科学家熟悉框架之间进行权衡。典型的例子就像Pandas,你可以做不同的转换,而事实是这些函数中有一些是没有性能的。然后你必须选择,我是让数据科学家使用他们所知道的整个框架,还是告诉他们,为了获得良好的性能结果,允许使用这些函数。我很好奇Etsy是如何运作的,你是否发现了一些其他人可以学习的东西。

凯尔:我们不是超级规范的,因为我们围绕TensorFlow提供了很多支持。例如,人们倾向于使用TensorFlow Transform和所有的TensorFlow函数,但当涉及到其中发生的事情时,我们肯定完全没有规定。我认为Etsy确实有一个高水平的ML从业者ד,在那里我们有一些人对开源TensorFlow资源库做出了贡献,因为他们注意到了瓶颈和特定的功能。雷竞技技官网下载到目前为止,他们是那里的专家,而我们不是。除了对一般框架的规定性,我们通常不会说,哦,不,你不能做那个或这个。从功能上讲,他们可以做任何事。即使在Selvin的例子中,在一天结束的时候,如果他们到达了一个点从产品的角度来看是不可行的,人们会意识到这一点,并会避免一开始就试图到达那个状态。

院长:我认为这与一点有关,如果你把它看作是产品的一部分,那么你自己就会意识到它的局限性。这并不是说,为什么他们强迫我不能使用这个函数,这太棒了。一般来说,对于那些试图改进模型并构建模型性能评估系统的人,您有什么建议吗?

凯尔:这是软件开发。尽早测试,经常测试。尽早编写那些单元测试,尽早理解模型的执行情况,因为在过程中做得越晚,就越难将模型还原到可以合理地服务于生产的状态。越早识别它,就越能在构建模型时考虑到它,而不是在模型构建后阻碍它。

院长:这也很有道理。你对机器学习基础设施有什么看法?自从你从事这个领域以来,它发生了什么变化?你看到了什么趋势?

凯尔:它已经成为一个领域,这是一方面。当我第一次接触数据科学时,MLOps还不是一个真正的术语,后来MLOps成为了一个术语,但我仍然没有真正听到像机器学习基础设施,机器学习平台这样的词。然后,我慢慢地开始看到更多的职位不是机器学习工程师,而是软件工程师/机器学习或机器学习软件工程师或机器学习平台工程师。我认为这就像机器学习中的其他事情上升到软件工程的水平一样,作为一个从事机器学习的平台团队,我们从,例如,我们的网络基础设施团队或搜索基础设施团队那里得到了很多技巧,他们是管理我们产品中一直运行的复杂基础设施的绝对专家,他们有大量的技巧和好的东西可以学习。然后他们还帮助我们识别机器学习的具体问题,比如在生产中服务一堆模型与托管web服务或其他不同的考虑。所以我们可以帮助他们,并与他们一起做出决定,从那里开始改进平台。总的来说,我认为它与所有其他平台和基础设施工具的水平相当。我看到很多公司都试图建立自己的平台团队。这并不是一个统计观察,只是针对我的LinkedIn DMs和我交谈过的人,但我看到很多人突然意识到,他们需要为他们的内部数据科学家建立一个机器学习平台,以推动机器学习的有效价值。

院长:事实上,采用这样一种心态,即你可以直接去找正在做完全不同的工作的工程团队,但那里已经发生了许多学习,可以支持你正在做的事情,这是一个很好的建议。因为大多数拥有机器学习团队的公司之前都有一个工程团队。不是全部,但大部分。所以如果你的上司是你的上级,那么你在公司里肯定有经验可以学习。正如你所说,我们之间存在差异。我很好奇,你是否发现了一些有用的东西,可以在前面提到,以便工程师在建议规模时有正确的心态。

凯尔:其中一件事就是在生产环境中如何设置模型,具体来说,比如Kubernetes中的自动缩放。但对很多人来说,如果你已经有了一个图像,它真的很容易旋转一个容器,反应非常快,加载应用程序,无论你运行的是一组豆荚或副本。如果我们服务的是一个非常大的模型,它需要加载到内存中,有时在它真正开始推断之前需要预热。有些部署需要20分钟,因为我们要把一个非常非常大的模型加载到内存中。这不是那种你可以随便说,哦,我要对负载做出这样的反应。你需要抢占先机,或者在估计什么时候不应该扩展的时候更保守一些。这类事情在其他空间中并不适用在其他空间中,你只是将大量对象加载到内存中,比如在启动应用程序之前。但是像这样的事情就不那么像,哦,你可以这样做。就像,哦,好吧,你不能完全那样做。我们确实还有一些限制,因为这是机器学习领域,关于我们如何以及何时可以扩展,或者我们可以做什么来改进一个应用程序。

院长:这是一个非常有用的建议。谢谢分享。对于那些试图在脑海中对我们所谈论的尺度有一个印象的人,你能谈谈数据的尺度,你正在研究的模型的尺度吗,这样人们就能知道你在哪里,然后如果还有其他像你刚才提到的那种反直觉的适应,那就太棒了。

凯尔:每天产生的数据量高达千兆字节。我甚至没有使用数据平台,但就我所知,我们记录的功能请求的一小部分来说,在今年的大时期里,我们每天大约有30兆兆字节。我敢肯定,这只是我们在黑色星期五期间每天实际数据记录的一小部分,而今年,我们在机器学习平台上每秒收到28万个请求,其中大多数是批量处理的。这就是我们在这个平台上每秒产生的数百万的权限。在任何给定时间,集群中都有数百个节点,其中许多节点至少有32个CPU节点。

院长:您还可以将其部署到较小的用户子集,然后再将其部署到更广泛的系统中。我很好奇,当你在这两种模式之间转换时,为了支持更大的规模,你是否需要改变一些重复出现的主题,或者它是否相对简单?

凯尔:通常情况下,我们可以找出一个模型的良好设置,即使是用较小的分数。从机器学习平台的角度来说,我敢肯定,当我们在网络和上游客户端、搜索和所有的东西之间进一步发展时,还有更广泛的考虑,以及具有功能的机器学习系统和一切。但是对于机器学习部署带来的所有复杂性,我们在Kubernetes上运行无状态应用程序。这一点很简单。一旦你弄清楚了,你就没有太多的事情可以做更好的改进了。因此,即使是在很小的流量比例下,我们也可以相对容易地将这些设置转换为服务于更大流量的模型。它通常是确保我们没有为它的扩展设置一个非常低的上限,并有一个良好的感觉,当它达到全部流量时,它是否会线性扩展到什么程度,提前估计,并确保我们的集群可以处理它。

院长:很明显,你和Kubernetes紧密合作。我想我在我们录制的另一集里提到过这个。当你第一次使用Docker时,它就像魔法一样。用这么少的代码行可以做这么多的事情,这是不可思议的。它如此灵活和通用的事实是疯狂的。然后是Kubernetes,这是下一层魔法。这真的很疯狂,你可以用这么少的钱做这么多。但显然,人们有时会被这两种体系吓倒,这是合理的。您认为数据科学家应该对这些工具有多熟悉?如果我们的听众中有一个是数据科学家,他想要学习这些工具,因为他们知道这些工具很重要,你会如何让他们学习这些工具,而不会在一天之后把他们吓跑?

凯尔:Docker是一个无处不在的工具,每个开发人员的工具包中都应该有它,包括ML分区人员和数据科学家。它在日常生活中太有用了,所以你不应该忽视它。它非常重要,因为它对日常开发人员非常有用,我认为这是每个人都应该知道的东西,每个人都应该重视学习。另一方面,Kubernetes是一种特定于规模的东西。Kubernetes就像机器学习。如果你不需要,那就不要做。所以,如果你不是每天都在这里工作,那么学习这些技能和了解正在发生的事情可能是有价值的。但是不,你不一定要去学习它。我想以数据科学家和机器学习工程师的身份学习它,因为我觉得它真的很酷。我想这是我感兴趣的地方,是机器学习应用的规模。 But if you want to learn it, I think there are a lot of great resources now. If you have Docker Desktop, you can go into that drop-down UI, click Enable Kubernetes, and you have Kubernetes running locally. You can get the same kind of practice with KubeCTL commands And everyday Kubernetes stuff locally, that you can in a real cluster to a degree, but you can get the same low-level knowledge in everyday debugging knowledge of Kubernetes locally, which is great. So if someone wanted to learn it, I would say just install it locally with whatever framework that you want and play around, take some courses, find some blogs. I wrote an article about Kubernetes for Data Scientists, which just has a super high level serving machine learning model locally. With Kubernetes example. There's a ton of different stuff you can do to get familiar with it without breaking your personal bank and cloud costs. Or something nice.

院长:我有一个关于数据科学的Docker的博客。所以我们一起来解决所有问题。

凯尔:你知道这两件事就够了。

院长:有一个术语叫新手逐步接触复杂系统。如果你有一个包含十个功能的列表,用户开始使用你的工具或任何产品,然后你向他们展示所有功能的列表,他们会被吓跑,因为它太强大了。所以你实际上想做的是,这是一个功能,现在你知道了,这是另一个功能,可以改善你的生活。Docker和kubernet.net也有这样的关系。Docker是唯一的实例,你可以想想。Kubernetes是当我有一堆这样的东西在做不同的事情并且需要交流时发生的事情。所以一定要从Docker开始,看看你是否掌握了它。要达到使用它的基本水平并不难,要理解发生了什么,然后在必要的时候深入到特定的容器中。你不需要重写。对于机器学习,有很多课程告诉你要重新实现著名的模型,写你自己的支持向量机,写你自己的神经网络等等。 So you don't have to do that with Docker. It's okay if you just know how to use it without knowing how to build it yourself. And then Kubernetes would be the next step. And I think that there really is a lot of content, just Google Docker/Kubernetes for data science, you'll find great stuff and you can start there. What are your recommendations for the audience? It might be related to any of the topics that we discussed, but also books you like, Netflix shows, whatever.

凯尔:我总是看到很多人想进入数据科学或机器学习平台工程领域。我总是建议人们做你感兴趣的事情,因为在任何这些领域都有无限的学习机会。

院长:你不需要喜欢它。但如果你喜欢它,它将是你的一颗很好的北极星,因为你可以追随你的好奇心,就像拉绳子一样。热爱某样东西和好奇某样东西是不完全一样的。保持好奇心更像是有问题,如果你能达到这样的程度,你对自己正在做的事情有疑问,然后遵循这些答案去问下一个问题,那么你就能在任何你想要的领域发展。当然,还是有限制的,每个人都有不同的情况和时间分配等等。但我确实认为这是一个原因。也就是说,有些人只是为了生计而工作,这也没什么。

凯尔:我不想让任何刻板印象延续下去,认为这就是人们应该如何生活或软件工程,因为对很多人来说,这并不一定是一种心理健康的生活方式。但是好奇是一个很好的表达方式。这是培养对开发该领域的兴趣的好方法。

院长:很好。我在想我是否有什么新的建议。问题是我们在几天的时间里录制了最后几集,所以我觉得我没有什么新的建议可以给出。我开始看Netflix的一部剧,这部剧和时事有关,但Netflix把这部剧翻译成了《人民的公仆》,这部剧是乌克兰现任总统在剧中扮演一名教师,后来变成了总统。这是讽刺。它很有趣。我享受它。现在他们有英语字幕,所以现在非乌克兰语的人也能看得到。一个扮演总统的演员竟然变成了总统,这也太疯狂了。即使是美国也没有这样的好莱坞故事。 Anything else you want to add before we wrap up?

凯尔:我自己也看过不少Netflix的视频,所以我会推荐Netflix的动漫。小太郎的独身生活其实挺不错的。我看很多动漫。真的怀疑Netflix的原创动漫,但小太郎独自生活推荐。

院长:我收到了Netflix的推荐信,但我没有看,因为我觉得我看的动漫太多了,所以我会去看看。我刚看完最新一季的《恶魔杀手》,虽然不是Netflix原创,但我很喜欢。凯尔,我真的很感谢你能来。这非常有趣,我相信很多听众都会同意我的观点。再次感谢大家,希望以后还能再见到你们。

标签

院长Pleban

在与加卡贝里

DAGsHub联合创始人兼首席执行官。构建数据科学协作之家。对机器学习、物理和哲学感兴趣。加入https://DAGsHub.com

太棒了!您已经成功订阅。
太棒了!接下来,完成签出以获得完全访问权限。
欢迎回来!您已经成功登录。
成功!您的帐户已完全激活,您现在可以访问所有内容。