NLP系统的MLOps与Charlene Chambliss
回到博客主页

NLP系统的MLOps与Charlene Chambliss

播客 2022年5月16日

在这期节目中,我将和水族馆的软件工程师Charlene Chambliss对话。Charlene拥有丰富的将NLP模型投入生产的经验。我们将深入研究这些模型的复杂性,以及它们与其他ML子领域的区别,生产它们的挑战,以及如何对数据质量问题感到兴奋。

听音频

阅读转录

院长:大家好,欢迎来到ML播客。我是主持人迪恩,今天和我一起的是夏琳·钱布利斯。夏琳拥有加州大学统计硕士学位和斯坦福大学心理学学士学位。她是CrunchBase的数据分析师,currology的数据科学家,Sharpest Minds的机器学习研究员。她当时是Primer AI的一名高级软件工程师,在那里她参与了Primer automated的构建——一个用于NLP任务的AutoML平台。她现在是水族馆学习的高级软件工程师,在那里她正在开发其他令人惊叹的东西。Charlene,你是将NLP系统投入生产领域的专家。我很好奇你是否一直特别喜欢自然语言处理这个领域,还是碰巧就在这个领域工作?

沙琳:嗯,我从更广泛的数据科学开始。我之所以感兴趣,是因为我看到了它的各种很酷的应用方式,以及对社会的影响。所以ML的不同应用,比如森林砍伐遥感和其他有趣的事情,市民数据分析来减少交通事故,所有这些很酷的东西。所以我就想,在我在curlogy有了数据科学的经验之后,我怎么才能更深入地研究ML。然后我在想不同的字幕,我意识到我对语言有亲和力。我一直都很喜欢分析语言的细微差别。我小时候是个爱读书的人。所以这似乎是天作之合。另一个原因是,我认为NLP更欢迎那些来自非传统背景的人,比如我自己。因为我的专业是心理学,而不是计算机科学或电子工程之类的,而这些往往在一般的计算机科学或其他分支领域更常见。 And so I noticed that people in NLP, a lot of them, had pretty diverse backgrounds, but had still made really interesting contributions.

院长:你认为这是人的问题,还是NLP的具体细节使它更适合不同的背景?到目前为止,我们建立的最复杂的模型是NLP模型。你不能说NLP是一个不那么复杂的领域。所以你可能会说,也许它没那么复杂,所以人们会去研究它。你有什么想法?为什么它比机器学习的其他领域更多样化?

沙琳:我认为这是你所说的综合作用。一件事是人们,那些对语言感兴趣的人来自各种不同的背景。他们可能有文学背景或语言学背景或语言专业背景或类似的背景,然后他们从那个学术方法转到NLP。

院长:我遇到了一些研究语言学的人,我不知道为什么——这可能只是我在那里遇到的一群随机的人,但我觉得研究语言学的人是我遇到的最兴奋、最热情的人。所以这可能意味着平局。我也认为语言有其独特之处。这就是我们的独特之处。也许这就是吸引你的原因。这是人类更基本的一部分。因此,人工智能在这方面有更强的基础是有道理的,但它对很多人来说也是有吸引力的,因为思考语言是非常人性化的。

沙琳:还有一点是ML的一些细节,首先,在计算机视觉模型中,你必须了解很多关于卷积和傅里叶变换的知识,如果你有物理背景,你只会接触到这些知识。这可能有点吓人。如果你要考虑的主要是矩阵乘法,那就简化了一点。更不用说NLP,我们有HuggingFace,它给了我们这个漂亮的,非常高级的,抽象的界面,你可以用它来建立这些模型。我认为还有一些PyTorch Fiddling和你必须做的计算机视觉的东西。

院长:因为这是个人的事情,但是傅里叶变换得到了一个不好的代表,我想它在客观上比发生在数学世界里的其他事情更复杂那些与现实世界中有意义的,有应用的东西有关。但我还是想推荐YouTube频道三蓝一棕,他们有一个很好的关于傅里叶变换的视频。我确实学过物理,我记得第二年,上第一堂课的时候,我第一年没有学过物理,和很多和我一起学习的人不同。这是一种文化冲击。但最后,理解它是很有趣的,现在有很多很好的视频。但是我们在这里讨论的是ML和mlop。显然,无论您使用的是哪种类型的模型,将模型投入生产都有其挑战。但有一件事让我很惊讶当我第一次和你们讲话的时候当我们谈论NLP系统的时候,有很多独特的事情是关于将机器学习模型投入生产的。这不仅与模型有关,还与数据的处理有关。您认为使用NLP和使用其他ML子字段之间的主要区别和限制是什么?

沙琳:其他ML子领域在使用更容易部署的较小到中等规模的模型解决问题方面取得了很多成功。然而,现在所有最好的NLP模型,像Roberta, GBT 3和它的所有后代,基本上任何大型变压器的变种,它们都是巨大的。它们可以是虚拟机内存中的1g空间。这在操作上是很难处理的。它需要非常强大的gpu,以便在合理的时间内运行推理。运行这种模式的计算成本可能非常高,如果你是一家试图真正利用这些东西的企业,就会真正消耗你的利润,如果你是这样一种企业,你的产品只有在每个客户都有自己的定制模式时才有价值,情况就更糟了。然后你必须管理部署所有这些模型用于推断的成本。这可能很粗糙。但现在人们正在寻找不同的方法来缩小模型,如修剪、蒸馏、量化,只在一些层中运行示例。我们在Primer中使用了一种叫做“推理分类”(Inference Triage)的方法,即使用较小的模型来把关较大的模型。 So it handles the easy examples, and then if something is a more difficult example, it passes it on to the big model. That can save you a lot of time and cost. The second thing that makes MLOps challenging for NLP is: it's really hard to do data augmentation in a way that's actually, semantically valid and automated. Because language is discrete and contextual. So if you change a given word in a sentence to try and make a second example, that's slightly different. "I love this person" vs. "I adore this person". Those two things are synonyms, but the connotation of each word is different enough that they're not quite the same. Whereas with something like computer vision, if you cut part of the image off or something like that, it's still more or less the same image, just with that part missing. Another thing is that a lot of tasks are actually really hard to automate or evaluate without having humans in the loop. Those are also the tasks that are the most useful applications of NLP, like translations and summarization, particularly anything that is taking a sequence and going to another generated sequence. There's no such thing as an automated fact-checking algorithm. So if you have a summarization model and it's outputting completely made-up facts that were not in the original article, you have to have a human read that and notice that, because if you're using Rouge score or one of the other traditional metrics, it's just going to measure token overlap. It has no sense of whether it's actually true and useful to a human.

院长:我还有几个问题要问。我在以色列,我们说希伯来语。今天我在Facebook上看到一个讨论,有人试图训练希伯来语的大型语言模型。显然,世界上没有多少语言拥有真正从头开始训练的大型语言模型。我说的不是微调之类的东西。所以他向有训练大型ML模型经验的人寻求建议。基本上,压倒性的建议是,你从小模型中知道的一切并不适用于大模型。这是另一类问题。其中一些就是你刚刚描述的。你说的第一件有趣的事是模型分类。 The idea is very intuitive. I'm very curious about how the sort of application actually looks. I'm guessing that there are no frameworks for that. Is this something that you had to custom tailor for your use case? Does that work? The smaller model predicts and also provides a confidence interval, and then depending on that, it either goes to the larger model or not. Does that make sense?

沙琳:在Primer,任何一种我们必须建立的自定义管道之类的东西,他们有自己的ML平台来处理它,所以我们把它从片段组成。所以我们有深度学习库,深度学习库有单独的模型,在此之上,你有一个管道协调器,它通过不同的模型运行文档。

院长:当我第一次从你那里听说增强NLP的挑战时,对我有意义的是计算机视觉。人们所知道的大多数应用程序都在处理自然图像。如果你有一棵树,树上有只鸟,然后你把鸟拿掉,这棵树还是有意义的。任何会说不止一种语言的人,或者是母语是另一种语言的人,看到别人写的某些句子,可能会觉得没有意义。但你不知道为什么它没有意义,就像语法或其他什么东西,就是不合拍。你知道要指出这一点,但你不知道确切地解释为什么。人们在图像或视频的语境中比在语言的语境中更直观。因为我们不能正确地定义问题,所以很难将其传递到计算机上。深度学习正试图通过让计算机自己理解来接管这个问题。但是当您需要定义数据时,这个任务在一定程度上还是由您承担的。 When you do work on data augmentations in NLP, is there a way or some recommendations you have for being able to actually understand what's going on? Make sense of whether augmentation makes sense, especially if it's unfeasible to just look at everything.

院长:首先,我想提一下,现在有一些框架使NLP的数据扩充变得更容易一些。它们有许多不同的规则,您可以使用和定制这些规则来从给定的示例生成新的示例。你仍然需要手动检查这些,以确保它们不是太奇怪,疯狂或不同,但这对过程有很大帮助。如果您不想走那条路,那么可以在当前示例的基础上扩展空间,获得更多与模型发现的具有挑战性的文档类似的文档。可以将文档投射到由该特定文档向量生成的嵌入空间中。然后你可以对它周围的文档进行最近邻搜索,然后你可以对它们进行抽样。当然,这需要访问一个非常大的未标记的数据集,该数据集恰好是与您的模型没有很好处理的文档相同的分布。例如,人们通常只使用模型隐藏层的输出。现在也有所有可访问的标准嵌入模型,如Word2Vec和类似的东西。数据总是成为一个问题。 I know that data labeling is part of the platform that you're working on. Can you share what role that has within the broader workflow and how important that is?

沙琳:在过去的几年里,NLP的范式发生了转变最初,为了使NLP模型工作,你需要训练一个RNN或CNN,你需要成千上万个你正在做的特定任务的例子。现在,我们有这些巨大的变压器模型,它们已经接受了所有这些网络文本的预先训练。所以他们已经有了足够的语境来大致理解语言的规则,以及句子中的事物如何相互联系等等。现在你只需要几千个例子就能得到80到85分的F1分。你可以用相对较少的例子得到一个相当好的模型。但不同的是,它不再是创建一堆潜在的嘈杂的,无监督的数据,或半监督的数据,就像你有10万个例子时那样,现在你需要更加小心你给模型的例子是什么因为它非常聪明,很容易被错误的数据所动摇。需要特别注意数据标记过程。我们需要更多的QA,需要更强的任务定义。对于如何处理某些边缘情况,每个人都需要完全一致。这在新的NLP领域变得非常重要。

院长:在相同的讨论,我对培训大语言描述模型,首先提到的是关于数据,相反,你想要质量而不是数量,因为模型可以学习很多坏事他们越大,你必须确保你扔掉坏的例子,否则你可以花大量的金钱和时间在培训一个大模型,然后把它学到很多的噪音,这是无用的。这是一种“条条大路通罗马”的事情,无论你在机器学习的哪条道路上走下去,你都能达到数据质量很重要的地步。我们第一次交谈时,我对您对数据质量非常感兴趣这一事实感到非常兴奋。你为什么对它感到兴奋?你如何让更多人对它感到兴奋?

沙琳:关心数据质量实际上是很有力量的,因为就我个人而言,在我的ML职业生涯中,我注意到,为你的模型获得更多的数据和更好的数据对模型性能的影响要比任何数量的超参数调优或架构调整或任何类型的更纯粹的ML留在代码中那种花哨的东西要大得多。我宁愿有一千多个标签示例,也不愿在一周的任何一天进行全面的超参数搜索。1000个例子可以给我另外10个F1点,而超参数最多只能给我2到3个F1点。这不仅因为您作为ML工程师的潜在影响而令人兴奋,而且从业务角度来看也是令人兴奋的,因为您不需要有大量的研究数据科学家和ML工程师来获得一个相当好的模型。在NLP中,您所需要的只是创建一个定义良好的任务的严谨和耐心,并在新的边缘情况出现时仔细地加强和调整这些定义。现在的NLP工具非常好,任何具有良好批判性思维能力的人都可以使用NLP模型。

院长:这是本集里很有分量的片段。如果您的梦想是进行超参数调优并对体系结构进行调整,在某些情况下这仍然是有意义的。但在大多数情况下,您需要从处理数据开始。

沙琳:如果你真的想这么做,那就去谷歌、Facebook或OpenAI工作吧,但大多数公司并不需要这些来处理他们正在处理的任务。

院长:在大多数公司中,你试图构建一些产品,机器学习应该帮助产品的构建,但它本身并不是目的。为了最终得到一个对人们有用的好产品,通常你需要好的数据。根据您的经验,对于如何在NLP中进行数据标记以及如何在一般情况下更好地进行数据标记,您有哪些建议和最佳实践?

沙琳:我早期在Primer花了很长时间为应用研究团队管理数据标记过程。有一个具体的循序渐进的过程我们看到效果非常好。首先,构建模型的工程师应该自己手工标记50-100个例子,因为这将给你一个第一手的数据,你需要区分不同类型的例子。它将让您了解存在的不同类,例如,如果您有一个分类任务,您是否在最初的任务概念化过程中忘记了任何类,并需要稍后添加它们。然后你开始写一些你想让模型识别的类和概念的可靠定义。您应该包含关于如何处理特定边界情况的说明。理想情况下,你想要有不同类型的边界情况,而不是非常具体的边界情况,比如总是把亚利桑那大学作为位置标签或类似的东西。相反,你应该说“将大学标记为地点”,因为这是一个更有用的一般规则。然后,当您有更好的指示时,您可以通过外部合作伙伴或公司内部愿意帮助标记的其他人员迭代地获得更大批次的文档,比如一次100或200个。雷竞技网址是这使您有机会发现和纠正任何劳动者对任务或您对任务的误解,并在接触更多数据分布后对说明添加任何必要的澄清。 Iteratively, as the labeling team understands the task better, you can actually increase the batch size so you don't have to be doing small batches of 100 or so. When the labelers actually really get the task, you can give them a thousand and then they'll come back just as high quality as before.

院长:太实用了。这是有道理的。下一个合乎逻辑的步骤是,一旦你这样做了,你想开始自动化的东西,对吗?如何在一般情况下实现流程自动化?什么时候才说得通呢?什么时候说不通呢?谁不应该自动化标签过程?

沙琳:您需要小心处理数据标签和管理过程中的自动化。可以自动化的事情,根据一些预先指定的标准对新文档进行采样并进行标记,以前模型出错或在最后一次训练运行中发现有挑战性的文档的文档向量之间的相似性。可以自动向文档应用预标签。这是一种半监督的方式,但基本上,您使用现有的模型,然后将它们应用到您想要标记的新文档,然后给标记者这些文档的标签。不过,你不希望过早地这样做,因为它实际上可能会使标记者产生偏见,在数据中包含模型的错误,而不纠正这些错误,因为他们倾向于听从模型。理想情况下,当你的模型已经很好时,你就会想要这样做,并且你要走最后一英里,让它变得非常出色。您还可以自动收集来自最终用户的反馈。这一点对那些生产面向消费者产品的人尤其重要,但也与B对B产品相关。因为你可以直接在产品中建立一个反馈机制,然后你可以吸收这些结果以供以后查看。就用户发现的不协调的模型输出而言。 You should give them the opportunity to tell you that even if you're not going to use it right away. Things that you can't automate would be doing the actual error analysis and recognizing those patterns in the examples that your model got wrong. This is all still entirely manual and one of the things that we want to make much easier at Aquarium. Being able to explore your test data set and figuring out what the commonalities are between these examples that my model got wrong. That's still a very cognitive process that you have to do because there just isn't an automated way of doing that right now. Lastly, getting a sense of whether or not the model is actually good enough to what you need to use it for. Usually, that requires input from some stakeholders. You can't really automate like, oh, my model has 99% accuracy, therefore it's good enough. That's not guaranteed. It depends on the task. It depends on what's in that last 1% of accuracy. If your model has 100% precision of 0% recall, that's not very useful. You definitely need to have human eyes on the model's outputs rather than just relying on the metrics.

院长:你说我们不能自动化的东西也与整个监控领域有关。因为您需要将模型的结果固定在现实中,而这通常仍然很难自动化,您只需要一个人来查看这些东西。这里的部分想法是,一个度量可能永远都不够好,特别是对于复杂的任务。你仍然需要做预测,然后在一定程度上对这些预测进行定性评估。然后是第二部分,即决定部署一个模型或将主模型转换为新模型等,这是人们想要自动化的事情,但我还没有听说有人成功做到这一点。也许谷歌有广告模型之类的东西。但这种做法相对来说并不普遍,大多数公司仍然手动操作。

沙琳:有一些方法可以监视您的模型从上一个版本到新版本是否漂移过多。您可以分析模型预测的类的分布。你可以做一些事情。人们已经为更简单的例子做了自动化测试,你的模型肯定会得到正确的例子。然后在部署之前运行模型。有时人们会发现,哦,我们在训练代码中有一个错误,现在模型完全疯了。所以你可以找到一些病态的例子。但有时差异可能更微妙。

院长:这些东西有几个很好的软件包。我认为远大前程和最近的Deepchecks在这方面做得很好,这是非常必要的。这与软件开发的老问题一样,如果不编写任何测试,就不会出现bug。数据和模型的单元测试是一个很好的想法。对于基本的错误,它通常是几乎毫不费力的,它有可能为你省去很多悲伤。我有机会和一群人交谈,他们正在努力帮助你,作为一个用户,理解你的模型有困难的例子,或预测你的模型在生产中会有困难的例子,这似乎是你在Aquarium所做的部分与此相关。我觉得这还为时过早,但我对此感到兴奋。我们有可能改善这种体验。它还与标签联系在一起,因为理想情况下,你想要自动化整个过程,找到那些硬样本,给它们贴上标签或重新贴上标签,把它们推回训练集,改进你的模型。在那里有很多好的工作要做,有很多事情将保持手动,这是可以的。 You probably still want the human in the loop just to make sure that the model is doing something that is actually useful to humans. I try to avoid the robot takeover stuff, but we'll be in a very bad position if we don't need humans anymore because robots decide what's good for them and we don't matter.

沙琳:我宁愿不去想那个,那是相当遥远的未来。

院长:你说的很多事情都与这样一个事实有关,即良好的数据标签或良好的数据处理与产品管理之间有很多共同点。把您的数据当作您需要处理的产品对待。这是整个MVP阶段。你自己做这些事情,你手动做这些事情,在你试图设定规则并将其自动化,然后将其扩展到团队中的其他人之前。这是产品管理中很重要的一点,也许对于创业来说也是如此,但是你想要缩短迭代周期,能够快速学习,然后改进你正在开发的产品。那么数据标记的迭代周期是多长时间呢?如果你在自动化方面做得很好,它能工作多快?

沙琳:这是迭代周期和产品管理之间的一个很好的观察。在ML项目管理方面,数据绝对应该是第一类对象。就迭代周期而言,如果你与标签团队的沟通循环非常紧密,那么最好是几天或更短。也许你在一个连接的Slack频道上有他们,所以如果贴标签的人在贴标签的时候有问题,他们可以直接问你,当然你可以告诉他们你是否在线。但随着时间的推移,时间会越来越短。当然,就像你说的,在MVP阶段,当你真的在努力找出所有东西的正确定义并抓住20%的边缘情况来处理80%的例子。这些周期会稍微长一些,但是一旦你的标签团队开始真正理解这个任务,他们就可以很快地将文件返回给你。QA可以快速完成。

院长:很好。我认为这是一个很好的经验法则或数量级如果你想在你的组织中建立一个标签功能或与人合作。这要么是一个瞄准目标的好地方,要么是当你迭代数据时,它会给你一个你所关注的范围。

沙琳:我不能和计算机视觉领域说话,因为那里的数据集往往更大。但是对于NLP文档,使用另外300-500个文档,您的模型通常可以得到很好的改进。

院长:我必须与计算机视觉领域的工作人员进行讨论,以比较意见,但我认为这仍然是一个很好的数量级。你也可以用计算机视觉进行迁移学习,你也可能有更短的迭代周期。但是它很有趣。所以最后,这里的一个挑战是,大多数的NLP测试都没有标注NLP试卷。这意味着你的涉众可能是领域专家,但他们并不来自你所擅长的专业领域。有一个问题是,你如何使它可访问或优化,以缩短迭代周期。我也很想听听你对此的看法。

沙琳:我和很多外包团队合作过,也和很多贴标签的团队合作过,我还亲自在各种贴标签工具上给很多数据贴标签。当你在设计标签的过程时,你应该帮助你的用户做正确的事情。例如,如果你有自己的内部标签平台,或者你试图选择一个标签工具,如果你的任务是突出显示跨度,而不是允许两边留白或类似的东西,那么寻找像抓拍跨度这样的工具。你可以做一些事情,比如突出显示可能的错误,比如如果在跨度中包含了一些标点符号,你可以可视化地显示出来。键盘快捷键和导航让操作变得更快。您还可以使用关于任务的信息来防止做错误的事情。例如,对于关系提取,您有两个可以相互关联的实体,而且这些实体通常是实体的特定类型。比方说,一个组织与另一个组织合作建立一个合资企业。当你设计突出显示的时候。如果有人选择了一个组织,他们要建立的关系是与组织合作,你可以让其他非组织实体不那么突出,让组织实体更可见,这样就更容易快速扫描页面,找到你想要连接的那个。 You can also completely prevent making relationships between the wrong entity types, because that's just something that you have to go back and fix in your data later. So you might as well just prevent it at the labeling stage. Lastly, you should try to minimize kind of the number and complexity of actions that you need to label. A big pet peeve of mine is actions that require click and drag, because some folks working on annotation teams are using a touchpad to label. They're working on a laptop, they're not working at a desktop computer, and this is a lot less accessible for them. Not to mention it just takes longer. If you can do "click here and then click there" for the destination, that can be a lot better than clicking and dragging.

院长:设计在我们所做的每一件事中都扮演着非常重要的角色。无论是软件设计还是界面设计,所有这些东西都对事情的完成方式产生了巨大的影响,我们如何让工作人员和结果变得更好。这通常会转化为更好的标签。这里有很多很棒的提示如果我们有来自任何标签工具的听众,这里有很多很棒的想法可以实现。在本播客中,我们想讨论的一个主要主题是将机器学习和机器学习模型部署到生产中。我们讨论了一些更复杂的部署设置。您如何部署复杂的和NLP管道,特别是当您将模型和数据处理步骤组合到生产中时?

沙琳:通常,模型以集装箱的方式部署。每个容器通常有一个或多个模型类型。但有时,您需要将两个模型连接在一起。例如,对于关系提取。首先,您必须使用命名实体识别模型从文档中实际提取命名实体。然后你还会想要提取这些实体之间的关系,通常使用关系分类模型,它接受实体对并告诉你它们是否以特定的方式相关。对于这些类型的模型栈或级联或管道或任何您喜欢称呼它们的东西,如果它们确实适合,那么将所有模型部署到一个容器中是理想的。因为如果你能在GPU中容纳所有的模型,并留有足够的内存空间来合理地快速执行推断,这将允许你最小化延迟。如果你有一个实时的应用程序,而不是一个长时间运行的处理管道,这是特别重要的。它还允许您在如何向模型服务器发送和接收数据之间创建一个更加一致的接口,因为您不需要从不同的模型向服务器发送一些结构化推理数据。 You can just send a document and get the results back. So that can make it a lot easier to interact with those deployed models for the services that do interact with them.

院长:如果你要将这些系统部署到生产环境中,你刚刚描述的接口,你是在文化上强制执行它们,还是你在系统中构建了某种东西使它具有这些标准化的接口之类的东西?另外,如果不能将多个模型放入一个容器中会发生什么情况?你是放弃了标准化的界面,还是有其他创造性的解决方案?

沙琳:关于你的最后一个问题,我不确定是否有什么创造性的方法来解决这个问题。你最终只能做非理想的事情,然后可能从外部,让它看起来像是你发送了文档并得到了结果。至于如何在整个组织中实施,我的意思是,这可能取决于组织的规模。如果你是一个相对较小的公司,只有几百人,并且你有一个单独的雷竞技网址是平台团队管理所有的ML部署,他们通常可以标准化接口,每个人都必须使用它。但是一旦你有许多不同的团队扩展他们自己的ML解决方案,标准化就会变得有点困难。

院长:我也有机会与更大的组织交流,他们也试图在文化上标准化它。当我说到文化,我的意思是某人定义了一个接口或一组接口,而您的模型或转换必须符合其中一个接口。否则它就不会被部署,原因有很多。其中一个原因可能是它很难使用,但一个更合理的解释是,您想优化性能,如果您有随机接口,您可能无法做到这一点。最简单的例子是整个Pandas <> Spark兼容api等。通常,当您进行大规模部署时,您必须在这些框架中权衡某些操作或函数,因为它们并不高效,也没有好的方法使它们高效。限制是,如果你想被部署,你不能使用这组函数。否则,延迟就会太高,我们无法承受。我只是提供一个关于如何仍然标准化的想法,即使你确实需要更改模型,一种方法是,你可以有一个接收文档的输入接口和一个输出接口,输出你想输出的任何东西。从这些网关,您有一个标准化的模型接口,它获得一些标准化的输入,输出一些标准化的输出,然后您可以在不同的模型之间移动它。 Usually, the scientists or whoever it is that's deploying their specific model within this larger system, don't need to worry about the first input and the last output. They just need to worry about having a compliant interface for the prediction part. It's not always possible because you can say, what if the dimensions of my tensor are different per model and things like that, but you can relatively easily generalize that part because it's just different dimensions for the same type, as opposed to, if the user uploads a document and obviously you're not working with raw documents in your models, and you need to have some solution for getting that into the language of the model. There's a lot of interesting things that are maybe too specific to get into here, but you covered a lot of them, and that's really awesome. I want to end with a few higher level questions that I like to ask all my guests. The first is, what are you personally excited about? What are the strongest, most exciting trends in ML and MLOps?

沙琳:现在在ML有很多很棒的事情在进行。当然,作为曾经从事过此类工作的人,我看到的一个趋势是低代码和无代码工具。作为业务用户,访问这些非常强大的模型和模型部署变得越来越容易。为了构建和部署一个对您的团队有用的模型,您不必有两年的统计和编写Python的经验。我还注意到技术用户的工具正在变得更高层次。《水族馆》便是一个很好的例子。它是一个界面,你可以用它来探索你的数据,并轻松地围绕你看到的特定模式创建问题。最佳电子竞技即时竞猜平台。然而,以前,当我试图对我的模型进行错误分析时,我是手动打印文档,然后查找模型犯了什么样的错误,然后在我的Jupyter笔记本上滚动它们,这显然需要我在编写代码和思考之间切换。还有很多认知上的开销,这会让事情变慢。拥有这些高级接口将有助于真正简化技术用户的迭代步骤。The ML tooling space is also growing generally, I'm noticing a huge proliferation of ML tools, and many of these pain points that I described, for example, the manual-ness of dataset exploration, data augmentation, error analysis. These things will eventually be a thing of the past in terms of how tedious they are and how much manual work they require. There are also more platforms that are trying to abstract away some of the DevOps parts of MLOps, like model deployments. Verda is a good example of this, by making deploying, managing, and monitoring your models significantly easier. The data infrastructure space is consolidating, that's another cool trend that I'm seeing, and this has the benefit of allowing ML engineers to spend a lot less time thinking about the data engineering and the pipelining aspects of getting data into and out of their models, because the data storage and processing providers are starting to also provide adjacent integrated services to make their products stickier. Snowflake's acquisition of Streamlit is a good example of this.

院长:我觉得你的最后一点很有趣,一开始我觉得有点违反直觉,但事后看来是有道理的。直到最近,人们似乎还不确定工作流和机器学习的适当组成部分是什么。我们还没有到那一步,我仍然觉得在让ML领域变得不那么模糊方面还有很多工作要做,但我认为我们正在朝那个方向前进,在这种情况下,对用户来说主要的优势是,如果你知道某个任务的边界,你就可以做得更好。就像你说的,工具会更好。这就是为什么每个人都能从中受益。在决定你想要什么工具时,你会有较少的认知负荷,因为作为你工作流程的一部分,它们会给你带来什么价值会更清楚。他们也会在他们所做的事情上做得更好,因为他们不必说他们做的一切都是为了让你觉得他们有价值。如果你是那种感觉一切都很混乱的人,你不能理解这个领域发生的任何事情,接下来的几年将会改变这种情况,事情将会变得更清晰,更明确。坚持住,精彩的部分即将到来。这是我在这个领域交谈过的每个人都会想到的事情,就像你说的,发生了这么多事情。 How do you keep up to date with things? What channels do you follow? What things do you do on a regular basis to stay up to date?

沙琳:我在朋友和同事中是出了名的信息迷,所以希望我能帮上忙。特别是对于NLP,我所遵循的一些资源是NLP的精华。这是一个非常棒的播客。研究人员经常会去那里讨论他们有趣的新发现,他们通常会用比实际论文更容易理解的术语来讨论。特别是如果你计划稍后阅读论文,有一个初步的高层次的介绍是非常有帮助的。在过去的几个月里,它一直处于中断状态,但它的资料馆非常值得一看,因为那里有一些非常好的资料。Sebastian Ruder有一个惊人的博客和通讯。他太厉害了,简直就是个宝藏。他现在不像以前那样频繁地更新内容了,但是当更新内容出现时,它们仍然非常有趣,能够弥补你所等待的时间。《软件工程日报》也很好。 Great podcast for keeping tabs on what's going on in software generally, keeping track of trends in containerization and DevOps, in addition to ML. They specifically have an ML channel that you can subscribe to if you don't care that much about the other stuff. There's also TWIML AI, another podcast that I've been fortunate to guest on, which is awesome and covers tons of different areas of ML, not just NLP. Talk Python To Me is great for general Python stuff, and they often will have ML-specific guests or data science-specific guests. I also have a couple of articles that I can send along for you to put in the show notes. Taming the Tail by A16Z is a really great read on the challenges of running an ML-first business, particularly how it compares to running a more standard SaaS business, and how you can think more clearly about what you can expect for your margins and where you can expect most of your costs to be and stuff like that. Every year I also check out the State of AI report, which I thought about particularly when you were talking about, if you're someone who's looking on and seeing this massive proliferation of things. There's an infamous image from those reports where it will just be a big square and it'll have multiple different squares of different companies in different areas of ML. There are more and more companies every year, but it's a great way to help make sense of what the different areas are right now. What changes are we observing? And that's part of how I can notice some of these higher-level trends that are going on, just hearing about what's going on with other companies, because otherwise I'm pretty zoomed in on what I'm working on and what's directly adjacent to what I'm doing. I would also suggest following any researchers that you like on Twitter, any research groups, stuff like that so that you can hear about it when a splashy new paper comes out or something.

院长:Sebastian Ruder太棒了。我真的很喜欢他的通讯。每次我看到另一个lumscape,它既让我兴奋,又让我烦恼。有太多了,太荒谬了。这取决于你愿意相信哪一个列表,但在300- 5000个工具之间。我理解人们看到这些时的沮丧。你给出了一堆与机器学习相关的建议,但我想问你是否有其他可能与机器学习无关或与你的工作完全无关的建议,无论是Netflix的节目还是你想推荐的任何东西。

沙琳:我确实有一个我可以给出的总体思路建议,就是如果你正在听这个,而且你是这个领域的新手,不管是ML还是NLP还是其他什么,如果这听起来让你不知所措,就像我们刚刚提到的,你会惊讶于你能通过耳旁风学到多少东西,通过听这样的东西。实际上,我之所以能从一个技术背景不那么丰富的人成功过渡到数据科学,很大程度上是因为我阅读了大量的数据科学和NLP相关内容。最终,你学会了词汇,你学会了这个领域的主要问题是什么。你会学到人们如何处理某些问题。你会了解到哪些工具和框架是人们实际使用的,而不是那些理论上存在的,你可能某天必须学习的,以及许多其他的实际细节,这些细节将在你每天的旅程中帮助你,只需要听实践者谈论它们。你也可以做信息面试之类的。我确实也阅读了教科书和其他东西,但为了了解事情的实际情况,播客、会议演讲和其他类型的对话是非常有用的,因为没有这些,你会真正得到这样的印象:在你能在这个领域有一点点能力之前,你需要知道所有可能的事情。但事实并非如此。我们中的很多人都是某一特定领域的专家,但如果你让我们做其他领域的事情,我们会说,给我一周的时间去学习。只要你有斗志,保持初学者的心态,你就可以学习任何你需要学习的东西来制作真正酷的东西。

院长:

这是一个很棒的观点。如果你愿意,你必须拥有的技能就是想要学习。如果你想学习,你可以做很多事情。部分原因是对一个领域真正感到兴奋。如果你强迫自己这么做,那就更难了,因为你听说如果软件开发人员在谷歌工作,他们会赚很多钱,而你的日子会更不好过。这不是不可能的,有些人有足够的天赋,但我认为如果你真的有热情,那么成为一个信息成瘾者,就像你之前所说的,是很有意义的。在这方面我要补充一点,我认为不管你想做什么,这一点都是正确的,它不一定是机器学习开发或类似的东西。现在有了新冠病毒,我们有很多时间所有的meetup和活动都是虚拟的。我仍然建议每个人保持安全,不要感染COVID,这仍然不有趣,但如果你有机会参加有面对面会议的Meetup……演讲很重要,但如果你和和你职位相同或比你高几年的人交谈,你可以从他们的经验中学习并建立关系,这是非常重要的,特别是如果你没有计算机科学或技术之类的背景的话。 Building relationships is super important no matter what you do, and the ability to find people that have gone a few miles in your future shoes and then learning from their experiences is really invaluable. If you can't go in person, go to the virtual Meetup, sometimes they do have mingling in the beginning, even though on Zoom it's not as fun and there's no pizza unless you order it in advance. But you should totally do that. If you go to the Meetup, don't only eat, also speak to people. That's also important. This is speaking from experience.

沙琳:我还有一个小建议可以告诉大家。它是关于一般学习的元建议。学习如何学习实际上是一种技能,一种你可以非常有效地提高的技能。你可以使用一些特定的技巧,比如空间重复,强迫自己回忆答案,而不是只看你的笔记然后说,哦,是的,我记得那个。我可以推荐两个非常擅长教授这类材料的人,一个是Scott Young,他是学习如何学习的博主之王。他在很短的时间内,在家完成了麻省理工学院四年的计算机科学学位。Cal Newport在这方面也很好。斯科特·杨的《超学习》是一本非常好的书,囊括了他的大部分建议。Michael Nielsen也有一个非常好的博客,关于如何使用Anki使用空格重复,这是一个抽抽卡应用程序,高度可定制的各种用例。它们将帮助你在很短的时间内学到很多东西,而不是把你的头撞在同样的材料上,试图学习效率低。

院长:这真是太棒了。我真的玩得很开心,谢谢你,夏琳,谢谢你的参与。

沙琳:谢谢你邀请我。

院长:感谢所有的听众和观众。我也很高兴你能来到这里,我们下集再见。

标签

院长Pleban

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

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