在Mailchimp构建ML平台的学习经验

Mailchimp构建ML平台的学习经验——经验分享

这篇文章最初是ML Platform Podcast的一集,Piotr Niedźwiedź和Aurimas Griciūnas与ML平台专业人士一起讨论设计选择、最佳实践、示例工具栈以及一些最优秀的ML平台专业人士的实际经验。

在这一集中,Mikiko Bazeley分享了她在Mailchimp建立ML平台的经验。

您可以在YouTube上观看:

或者您可以以播客的形式收听:

但如果您更喜欢书面版本,这里有:

在这一集中,您将了解以下内容:

  • 1. Mailchimp的ML平台和生成式AI用例
  • 2. Mailchimp的生成式AI问题和反馈监控
  • 3. 作为MLOps工程师更接近业务
  • 4. Mailchimp的ML平台能力成功案例
  • 5. Mailchimp的黄金路径

Mikiko Bazeley是谁

Aurimas:大家好,欢迎收听机器学习平台播客节目。我是您的主持人Aurimas,与我一起的还有联合主持人,Piotr Niedźwiedź,他是neptune.ai的联合创始人和首席执行官。

今天在节目中与我们同在的嘉宾是Mikiko Bazeley。Mikiko在数据界非常有名。她目前是虚拟特征存储FeatureForm的MLOps负责人。在那之前,她在MailChimp建立了机器学习平台。

很高兴你能来,Miki。你能告诉我们一些关于你自己的事吗?

Mikiko Bazeley:你的细节确实很准确。我去年十月加入了FeatureForm,之前我在Mailchimp的ML平台团队工作。我参与了Mailchimp被Intuit以140亿美元收购(或者类似的金额)之前和之后的工作 – 所以我在整个交接过程中都在那里。有时候非常有趣,也非常混乱。

但在那之前,我花了几年时间担任数据分析师、数据科学家,甚至是一些初创企业的奇怪的MLOps/ML平台数据工程师角色,我试图为他们构建机器学习平台,并意识到在五个人的初创企业中做到这一点实际上非常困难,从中得到了很多经验教训。

所以我老实地告诉人们,过去的八年里,我的工作涉及数据和ML价值链的各个环节 – 这是一种华丽的说法,也就是说“工作跳槽”。

如何从数据分析转向MLOps工程师

Piotr:Miki,你以前是一名数据科学家,对吗?后来成为了MLOps工程师。我知道你不是一个热衷于职称的人,你更愿意讨论你实际能做什么。但我要说你所做的不是一种常见的组合。

你是如何成功从更多分析和科学类型的工作跳到更多工程类型的工作中的?

Mikiko Bazeley:大多数人听到我在大学里的背景并不是计算机科学时都非常惊讶。我实际上在距离我转行成为数据科学家还有一年左右的时候才开始学习Python。

当我在大学时,我学习了人类学和经济学。我对人们的工作方式非常感兴趣,因为说实话,我不了解人们的工作方式。所以这似乎是一个合理的学习领域。

我一直对人们是如何做出决策的感到着迷,尤其是在群体中。例如,有哪些我们几乎不加思索就接受的文化或社会规范?当我大学毕业时,我的第一份工作是在一个发廊担任前台接待员。

当时,我没有任何编程技能。

我想我读过一门生物统计的R课程,但我勉强及格。并不是因为智力或野心的问题,主要是因为我不理解这么转行的路线图——我不懂得如何进行这种转变的过程。

我的第一个转变是朝着增长运营和销售黑客方向,当时在硅谷被称为增长黑客。然后,我制定了一套转型指南。所以我能够从增长黑客转向数据分析,然后从数据分析转向数据科学,再从数据科学转向MLOps。

我认为从数据科学转变为MLOps工程师的关键因素有:

对我想解决和工作的问题有真正的渴望。这是我一直致力于的事业发展方式——“今天我想解决什么问题?”和“我认为一两年后这个问题会有趣吗?”

第二部分非常有趣,因为有一年我有四份工作。我当时是一名数据科学家,同时在两个职业训练营担任导师,并且在周末还在一个房地产科技初创公司工作。

后来在疫情期间,我最终离职全职投身于这个公司,这是一次很好的学习经历,但从财务上来说,或许这不是得到回报的最佳方式。但没关系——有时候你必须稍微追随自己的激情。你必须追随自己的兴趣。

Piotr:谈到做决定,我还记得当我还是学生的时候。我的职业起点是在科技领域,我第一份工作是在Google实习,担任软件工程师。

我来自波兰,我记得当我得到Google的一份正式软件工程师职位的邀请时,月薪超过了我一年的开销。是二到三倍多。

当时非常诱人去追随金钱。我看到很多人在这个领域,尤其是职业生涯的初期,更倾向于短期利益的考量。放眼未来几步、几年的概念,我认为是有些人思考不足的地方,这最终可能导致更好的结果。

每当我遇到像这样的决定时,我都会问自己:“如果在一年后它失败了,我不开心了怎么办?我能回去选择其他选项吗?”通常答案是“是,你可以。”

我知道这样的决定很考验人,但我认为你做出了正确的选择,你应该追随你的激情。思考这个激情将带你走向何方。

可以帮助填补技术差距的资源

Aurimas:我的背景也非常相似。我从分析转向数据科学,然后转向机器学习,然后转向数据工程,最后到MLOps。

对我来说,这个过程可能比较漫长,因为我在这之间还做了数据工程、云工程和DevOps工程。

而你直接从数据科学转变,如果我理解正确的话。你是如何填补这个——我称之为技术鸿沟——以成为一名MLOps工程师的?

Mikiko Bazeley:没错,绝对是这样的。这是我在初创的房地产公司的工作的一部分。我非常喜欢职业训练营这样的项目。当我大学毕业时,我的平均绩点非常糟糕——非常、非常糟糕。

我不知道欧洲是如何评定成绩的,但在美国,例如,通常是4.0制,而我的绩点只有2.4,在大多数美国标准下被认为非常糟糕。所以我没有机会回到研究生课程和硕士课程。

这很有趣,因为到那时,我已经与公司高管合作了大约六年,这些公司包括Autodesk、Teladoc和其他在全球范围内或至少在美国国内非常著名的公司。

有高管级别的人对我说:“嘿,我们会写推荐信帮你申请研究生项目。”

然后研究生项目说:“不好意思,没有机会!你必须重返大学重修绩点。”我回答说:“我都快30岁了,知识是昂贵的,我不会这样做的。”

所以我是一个大型训练营的忠实粉丝。

在过渡到数据科学家角色,以及在过渡到MLOps工程师角色时,对我有帮助的是参加了一系列的训练营,而在我准备成为MLOps工程师时,我还参加了一个很有名的名叫Full Stack Deep Learning的研讨会。这个研讨会由去创办了Gantry的Dimitri和Josh Tobin教授。我非常喜欢这个研讨会。

我觉得有时候人们参加训练营是希望通过这样做得到一份工作,但实际上并不是这样的。它只是一种非常结构化、加速学习的形式。

在这两个过渡阶段,对我帮助最大的是真正投入我的导师关系。例如,当我从数据分析转向数据科学时,我当时的导师是现在在Hugging Face担任开发者倡导者的Rajiv Shah

从那时起,我一直在几个训练营担任导师。很多时候,学生们会来向我请教并让我帮忙评估他们的项目或者检查他们的代码。

但这并不是充分发挥行业导师价值的方式,尤其是当他们具备像Rajiv Shah那样的资质时。

在全栈深度学习课程中,有一些助教非常出色。我就向他们展示了我的项目供他们评估。但是,例如在转向数据科学家角色时,我就问Rajiv Shah:

  • 如果我的CMO要求我创建预测并预测结果,该如何进行模型可解释性?
  • 如何将此模型投入生产环境?
  • 如何在这些数据科学项目中获得支持?
  • 如何利用我已经拥有的优势?

我将这些问题与我正在开发的技术技能相结合。

在机器学习平台角色中,我也做了同样的事情,我会问:

  • 这门课程现在没有教我哪些我应该学习的内容?
  • 如何开展我的工作?
  • 如何填补这些空白?

我认为我通过一系列的方式来培养了这些技能。

你需要一个结构化的课程体系,但你还需要有项目可以参与,即使它们只是沙盒项目——这样可以让你接触到开发机器学习系统中的许多问题。

寻找训练营导师

Piotr:当你提到导师时,你是在训练营期间找到他们的,还是有其他办法找到导师?是怎么回事?

Mikiko Bazeley:对于大多数训练营来说,关键是选择合适的训练营。对我而言,

我选择了Springboard进行我的数据科学转型,然后在过渡到MLOps角色时,我在一定程度上还参考了他们,但更多地依赖于全栈深度学习课程,以及很多独立学习和工作。

对于MLOps的Springboard课程,我没有完成,因为在那时我已经收到了四到五家不同公司关于MLOps工程师角色的工作机会。

在训练营之后找工作和社交媒体影响力

Piotr:这是因为参加训练营的缘故吗?因为你说很多人通过参加训练营来找工作。在你的情况下是如何运作的?

Mikiko Bazeley:训练营没有让我与招聘经理联系。但我做的是,这也是公共品牌的重要性体现。

我绝对不认为自己是一个影响者。首先,我的观众数量不够。我试图做的,与现在播客上的很多人非常相似,就是尽力与人们分享我的学习经历。我尝试将我的经验分享给他人,并提供“好的,是的,这些种种问题可能会遇到,但这也是你可以应对它们的方式”等观点。

对我来说,在公众场合建设并分享学习经验非常关键,这让我能够找到工作。我经常看到很多求职者,特别是在MLOps领域或机器学习工程师领域。

你总是会看到他们的头衔写着:“数据科学,机器学习,Java,Python,SQL,或者区块链,计算机视觉。”

实际上是两个问题。首先,他们没有将他们的LinkedIn个人资料看作是网站的落地页。但归根结底,它就是一个网站落地页,对待你的个人资料就像对待一个网站或一个SaaS产品一样。

但更重要的是,他们实际上没有在社交网络中做你应该做的重要事情,那就是你必须与人们交流。你必须与人们分享。你必须产出你的学习成果。

所以当我在参加这些训练班时,我会做的事情就是这样。我会把我学到的东西和我工作中的项目结合起来,然后公开分享。

我试图做的就是非常真实,我不想说是真实的,这个词有点被过度使用了,但有一句话是这样说的:“有趣的人是有兴趣的。”你必须对你身边的问题、人们和解决方案感兴趣。人们可以和你产生共鸣。如果你只是像许多Chat GPT和Gen AI的人一样虚假,没有实质内容,人们无法与你产生共鸣。

你需要真正的兴趣,并且你需要有实质内容。这就是我为什么这样做。我觉得大多数人都没有这样做。

Piotr:还有一个需要的因素。我在分享方面遇到了困难。我在学习不同的东西,但一旦学会了,感觉似乎太显而易见了,然后我会有点羞愧,觉得也许这个知识对别人来说太显而易见了。然后我就想:让我们等待一些更复杂的东西来分享。但那从来没有发生过。

Mikiko Bazeley:这就是冒充综合征。

Piotr:是的。我需要克服它。

Mikiko Bazeley:奥利马斯,你觉得你曾经克服了冒充综合征吗?

Aurimas:没有,从来没有。

Mikiko Bazeley:我也没有。我只是找到了绕过它的方法。

Aurimas:我发表的每一篇文章,我觉得它可能不值得别人花时间,但它看起来是值得的。

Mikiko Bazeley:这就像你必须设置一些方法来解决你最糟糕的天性。你的所有不安全感,就像有一个良好的饮食和锻炼计划欺骗自己一样。

什么是FeatureForm,以及其他类型的特征存储

Aurimas:让我们谈谈你目前的工作,Miki。你是< a href=”/?s=FeatureForm”>FeatureForm的MLOps负责人。有一次,我有机会和FeatureForm的CEO交谈,他给我留下了很好的印象。

FeatureForm是什么?FeatureForm与今天市场上其他竞争者有何不同?

Mikiko Bazeley:我认为关键是要理解不同类型的特征存储,并且甚至要理解为什么虚拟特征存储可能只是FeatureForm在分类上的一个可怕的名称。它并不具备很好的描述性。

特征存储有三种类型。有趣的是,它们大致对应于MLOps的发展阶段,反映了不同的范式的发展。

这三种类型是:

  • 1 真实的
  • 2 物理的
  • 3 虚拟的

大多数人直观地理解真实特征存储。一个真实的特征存储只是一个特征存储。它将存储特征(包括定义和值),然后提供服务。它实际上就是一个非常专门的数据存储解决方案。

例如, Feast。 Feast是一个字面上的特征存储。它是一个非常轻量级的选项,您可以轻松实现,这意味着实施风险很低。实际上没有进行任何转换、协调或计算。

Piotr: Miki,如果我没有错误的话,它为什么轻量级?我理解字面上的特征存储存储特征。它有点像替代存储吧?

Mikiko Bazeley: 当我说轻量级时,我的意思是像实现Postgres一样。所以,从技术上讲,它不是非常轻量级。但是如果我们将它与物理特征存储进行比较并将两者放在一个谱上,它是轻量级的。

物理特征存储拥有以下所有内容:

  • 它存储特征,
  • 它提供特征,
  • 它协调特征,
  • 它进行转换。

从这个角度来看,物理特征存储在实现、维护和管理方面是笨重的。

Piotr: 从谱上来看,物理特征存储是最重的一类?

对于字面上的特征存储,转换是在其他地方实现,然后保存吗?

Mikiko Bazeley: 是的。

Aurimas: 特征存储本身只是一个库,基本上是针对存储执行操作的库。对吗?

Mikiko Bazeley: 是的,嗯,基本上是这样。比如,Feast就是一个库。它带有不同的提供者,所以您有选择余地。

Aurimas: 您可以将其配置为与S3、DynamoDB或Redis等进行通信。我觉得这种笨重感来自于它只是在这个存储之上的一个薄薄的库,您需要自己管理存储。

Mikiko Bazeley: 百分之百。

Piotr: 那么没有后端吗?没有存储关于这个特征存储的元数据的组件吗?

Mikiko Bazeley: 对于字面上的特征存储而言,它所做的只是存储特征和元数据。它实际上不会承担转换或协调的重任。

Piotr: 那么虚拟特征存储是什么?我理解物理特征存储,对我来说很清楚,但我很好奇虚拟特征存储是什么。

Mikiko Bazeley: 是的,所以在虚拟特征存储范式中,我们试图兼顾两者的优点。

不同类型的特征存储有不同的用例。物理特征存储起初出现在像Uber、Twitter、Airbnb等公司。当面临大量数据以流式进行处理时,它们解决了非常棘手的问题。

物理特征存储的挑战是,您几乎完全被限制在提供商或者他们选择的提供商上。您无法更换它。例如,如果您想使用Cassandra或Redis作为您所谓的“推理存储”或“在线存储”,那么在物理特征存储中是做不到的。通常,您只能使用它们提供的提供商。它几乎就像一种专门的数据处理和存储解决方案。

在虚拟特征存储中,我们试图兼顾字面上的特征存储的灵活性,您可以更换提供商。例如,您可以使用BigQuery、AWS,或者Azure。如果您想使用不同的推理存储,您有那个选项。

虚拟特征存储所关注的是实际上特征存储应该解决的问题,不仅仅是版本控制、文档和元数据管理,以及服务,还有协调转换。

例如,在FeatureForm中我们这样做是因为我们是Kubernetes原生的。我们假设数据科学家在很大程度上不想在别处编写转换。我们假设他们希望按照他们通常使用Python、SQL和PySpark与数据帧(data frames)一样进行操作。

他们只是想要能够,例如,将他们的特性包装在装饰器中或者将它们编写为类(如果他们想要的话)。他们不应该担心基础设施的一面。他们不应该提供所有这些花哨的配置,并试图弄清楚生产路径 – 我们试图使该过程尽可能简化。

这个想法是:你有一个新加入团队的数据科学家…

每个人都经历过这个:你去一个新公司,基本上花了前三个月在Confluence中寻找文档。你在阅读人们的Slack频道,以明确他们准确地使用这个预测和流失项目的情况。

你在寻找数据。你发现查询被打破了,然后你会说:”天啊,他们当时怎么想的?”

然后一个领导找到你,对你说:“哦对了,顺便说一下,数字是错的。你给了我这些数字,他们已经变了。”然后你说:“天啊!现在我需要查明关系了。我需要追踪。”

现在对很多企业来说真正痛苦的部分是法规。任何在欧洲开展业务的公司都必须遵守GDPR,这是一个重要的法规。但是,例如美国的许多医疗公司则受到HIPAA的监管,它是为医疗和健康公司制定的法规。所以对于很多公司来说,律师在机器学习的过程中起着非常重要的作用,大多数人不知道这一点。

在企业领域,律师是那些在面对诉讼或出台新法规时需要去,“好吧,我能追踪到哪些特性被使用和哪些模型?”这样的工作流程是我们真正努力解决的问题。

这就是确保数据科学家在进行特征工程时的情况,特征工程实际上是数据科学过程中最重要和最复杂的部分,他们不必在特征工程已经很难的情况下去到各个不同的地方学习新的语言。

虚拟特征存储在更广泛架构中的位置

Piotr:所以,Miki,从两个角度来看。从管理员的角度来看。假设我们要将虚拟特征存储作为我们技术堆栈的一部分进行部署,我需要有存储空间,比如S3或BigQuery。我需要有进行计算的基础设施,可能是由Kubernetes运行的集群或其他什么。然后,虚拟特征存储是在存储和计算组件之上的一种抽象。

Mikiko Bazeley:是的,实际上我们在Data Council上做了一个演讲。我们发布了我们称之为“市场地图”的东西,但这并不完全正确。我们发布了一个我们认为机器学习堆栈的架构应该是什么样子的图表。

我们的看法是,在每个团队中都有计算和存储,这些只是一些可以运行的事物。这不是我们所谓的零层、一层。这不一定是机器学习的关注点,因为你需要计算和存储来运行一个电子商务网站。所以,我们将使用电子商务网站作为一个例子。

上面的一层是你有供应商,或者对于很多人来说 – 如果你是一个独立的数据科学家,比如,也许你只需要访问机器学习模型的GPU。也许你真的喜欢使用Spark,并且在该层有其他的服务提供商。所以在这里我们开始看到机器学习问题的一些差异。

在其下面,你可能还有Kubernetes,对吗?因为它也可能是为整个公司进行编排。所以,虚拟特征存储位于你的Spark、Inray和Databricks等上层。

但是,现在在我们看到的中等规模的空间中,有很多人已经发布了关于他们机器学习系统的惊人描述。例如,Shopify发布了关于Merlin的博文。还有一些其他的人,我认为DoorDash也发布了一些非常棒的内容。

但现在,人们也开始关注我们所谓的统一的MLOps框架。这是你拥有的ZenML等一些在顶层的框架。虚拟特征存储会在您的统一MLOps框架和Databricks、Spark等提供商之间进行适配。在下面会有Kubernetes和Ray。

从最终用户角度看虚拟特征存储

Piotr:以上都是从架构角度考虑的。那用户角度呢?我猜,当涉及到特征存储的最终用户时,至少其中一个角色是数据科学家。数据科学家将如何与虚拟特征存储交互?

Mikiko Bazeley:理想情况下,这种交互应该是,我不想说它会很小。但你会像使用Git一样使用它。我们的原则是让人们做正确的事情变得非常容易。

我在Mailchimp工作时,我的团队的高级工程师和技术负责人告诉过我一些东西,那就是假设他人是有积极意图的,我认为这是一个很好的指导原则。我觉得很多时候,机器学习/MLOps工程师、软件工程师和数据科学家之间存在一种奇怪的对立关系,就像是,“哦,数据科学家根本不会编码,他们是可怕的人,太糟糕了。”

然后数据科学家看着DevOps工程师或平台工程师说:“你们为什么总是创建非常糟糕的抽象和易泄密的API,让我们很难工作?”大多数数据科学家根本不在乎基础设施。

而如果他们确实关心基础设施,那他们只是正在成为MLOps工程师。他们正在迈向新的旅程。

每个MLOps工程师都可以讲述这样的故事,“天哪,我曾经试图调试或故障排除一个流水线”,或者,“天哪,我有一个Jupyter notebook或一个pickled model,但我们公司没有部署基础设施。” 我认为这就是每个有超能力的MLOps工程师的起源故事。

从交互方面来说,理想情况下,数据科学家不应该自己设置Spark集群等基础设施。他们只需要获得凭证信息,这应该是,我不想说非常容易获得,但如果他们从平台工程师那里获得这些信息变得非常困难,那可能是一种更深层次的沟通问题的迹象。

但他们所需要做的就是获得凭证信息,将其放入配置文件中。此时,我们使用“注册”这个词来描述FeatureForm的操作,但实际上它主要通过装饰器来完成。他们只需要给一些东西加上标签,比如“顺便说一下,我们使用这些数据源。我们创建这些特征。我们创建这些训练数据集。”我们提供版本控制,并且我们说特征是一种一流的不可变实体或成员,他们还提供版本控制,永远不必担心覆盖特征或具有相同名称的特征。

假设您有两个数据科学家正在解决一个问题。

他们正在为我们的电子商务示例预测客户终身价值。也许是“客户旅程的前三个月花费的资金”或他们通过的营销活动。如果两个数据科学家都在处理相同的逻辑,并且他们都提交了,只要版本名称不同,它们都将被记录在该特征下。

这样我们就可以提供追踪和血缘关系了。我们帮助实现转换,但我们不会实际存储特征的数据。

数据集和特征版本控制

Piotr:Miki,我有一个问题,因为你提到了“装饰器”这个术语。我能想到的唯一的装饰器是Python装饰器。我们现在是在讨论Python吗?

Mikiko Bazeley:是的!

Piotr:您还提到了我们可以对特征进行版本控制,但是在这方面,概念上数据集是样本的集合,对吗?而一个样本由多个特征组成。这让我想到,特征存储是否也会对数据集进行版本控制?

美希子·巴兹利:是的!

Piotr:那么版本化特征之间的连接是什么呢?我们如何表示数据集?

美希子·巴兹利:我们不会对数据集进行版本化。我们会对源进行版本化,包括特征,目的是让您可以将特征作为其他模型的源使用。

您可以使用类似DVC的工具来使用FeatureForm。这已经多次提及过。我们对完整数据集的版本化兴趣不大。例如,对于源,我们可以使用表格或文件。如果人们对该源、表格或文件进行了修改,可以将其作为变体进行记录。我们将跟踪这些记录。但这不是真正的目标。

我们更关注特征工程方面。因此,我们会对定义进行版本化。每个特征由两个组成部分组成。即值和定义。因为我们使用FeatureForm创建了这些纯函数,所以想法是,如果您输入相同的内容并将其通过我们为您存储的定义,那么我们将对其进行转换,并且理想情况下应该得到相同的输出。

Aurimas:如果您在特征存储之后插入一个机器学习流水线并检索数据集,那么您获得的已经是在特征存储中保存的一组预计算特征。为此,您可能需要提供一个实体ID列表,就像其他特征存储要求您做的一样,对吗?因此,您将对这个实体ID列表以及计算逻辑进行版本化,这样您版本化的特征加上源就等于一个可复制的块。

您会这样做吗,还是还有其他方法可以解决这个问题?

美希子·巴兹利:让我对问题进行重述:

基本上,您在问的是,我们是否可以复现准确的结果?我们如何做到这一点?

Aurimas:对于一次训练运行,是的。

美希子·巴兹利:好的。那回到我之前的说法。我们不会对数据集或数据输入进行版本化。我们版本化转换。在实际逻辑方面,人们可以注册单独的特征,但他们也可以将这些特征与标签一起使用。

我们保证的是,无论您为开发特征编写什么代码,相同的逻辑将在生产环境中得到镜像。我们通过我们的客户端来实现这一点。至于保证输入的问题,那是我们作为公司说的:“嘿,你知道的,有很多工具可以做到这一点。”

这就是虚拟特征存储的理念。MLOps的早期浪潮解决的是底层问题,比如“我们能有多快?”、“吞吐量是多少?”、“延迟是多少?”我们不做这些。对我们来说,“有很多很棒的选择可供选择。我们不需要关注那些。”

相反,我们专注于那些被告知非常困难的部分。例如,通过标准化使用的逻辑最小化训练和应用之间的偏差。我不想说这是可复制性的保证,但这是我们尽力帮助的地方。

关于实体ID:我们从前端团队作为API调用获取实体ID。只要实体ID与他们调用的特征或特征的版本相同,他们应该得到相同的输出。

这是人们告诉我们的一些用例。例如,如果他们想要测试不同的逻辑,他们可以:

  • 创建不同版本的特征,
  • 创建不同版本的训练集,
  • 将一版数据馈送给不同的模型

他们可以进行消融研究,以查看哪种模型表现良好,哪些特征表现良好,然后将其回滚到表现最好的模型。

特征存储的价值

Piotr:总结一下,您是否同意特征存储对机器学习团队的技术栈带来的价值在于版本化特征工程背后的逻辑?

如果我们对一组特征拥有版本化的逻辑,您希望使用这些特征来训练模型,并且在某个地方保存指向或源数据的指针,用于计算特定特征,我们所获取的基本上是数据集版本控制。

因此,一方面您需要拥有源数据,并且需要以某种方式对其进行版本控制,另一方面您还需要对处理原始数据和计算特征的逻辑进行版本控制。

Mikiko Bazeley:我认为该价值主张的三个或四个主要方面绝对包括逻辑的版本控制。第二个方面是文档,它非常重要。我想每个人都有过这样的经历,他们在查看一个项目时,完全不知道为什么有人选择了他们选择的逻辑。例如,用于在销售流程中表示客户或合同价值的逻辑。

所以版本控制、文档、转换和编排是我们所说的“一次编写,两次服务”。我们提供这样的保证。除此之外,还有编排方面的内容,例如调度等等。但这三个方面是主要的:

  • 版本控制
  • 文档
  • 通过转换来减少训练服务偏差

这些是人们要求我们提供的三个主要功能。

FeatureForm中的特征文档

Piotr:文档是如何工作的?

Mikiko Bazeley:有两种类型的文档。一种是辅助文档,一种是通过代码进行文档记录。

例如,辅助文档包括文档字符串。您可以解释“嘿,这是函数的逻辑,这是术语的含义等等。我们提供这个功能。

但是通过代码尽可能多地进行文档记录也非常重要。例如,您必须列出特征或训练集的版本,或者您正在使用的源文件。还要尽量解析正在创建的资源类型。至少对于FeatureForm的受管版本,我们还提供治理、用户访问控制等功能。我们还提供特征的血统信息,例如将特征与使用它的模型进行关联。我们尽量通过代码进行尽可能多的文档记录。

我们始终在研究通过辅助文档来扩展我们的仪表板功能的不同方法。我们还在考虑其他方式,使得机器学习周期或机器学习团队的不同成员(包括明显的成员,如MLOps工程师、数据科学家,以及非明显的成员,如律师)都能够看到和访问正在使用哪些特征以及使用了哪些模型。这是我们所提供的不同类型的文档。

Mailchimp的ML平台和生成式AI用例

Aurimas:在担任MLOps负责人之前,您在Mailchimp担任机器学习运营工程师,并帮助构建了那里的ML平台,对吗?在Mailchimp,数据科学家和机器学习工程师解决了哪些问题?

Mikiko Bazeley:有几个问题。当我加入Mailchimp时,已经有一个平台团队。那是一个非常有趣的情况,MLOps和ML平台问题大致分布在三个团队之间。

  1. 有一个团队,我们非常专注于为数据科学家制作工具并设置开发和训练环境,以及帮助进行实际的生产工作。
  2. 有一个团队专注于提供实时模型。
  3. 还有一个团队在不断发展。他们最初从事数据集成工作,然后成为ML监控团队。我离开后,情况就一直是这样。

总的来说,在所有团队中,我们试图解决的问题是:“在Mailchimp为数据科学家提供被动生产化的方式,鉴于他们正在进行的不同类型的项目。”

例如,Mailchimp是我所见过的第一个对生成式AI具有强大业务价值的公司。每当一个公司推出生成式AI能力时,我都会用Mailchimp来作为参照标准,因为他们对此有非常强烈的用例。

Aurimas:这是内容生成吗?

Mikiko Bazeley:是的,绝对是。了解Mailchimp的用途对进一步理解有所帮助。

Mailchimp是一家有20年历史的公司,总部位于乔治亚州的亚特兰大市。它之所以以如此高的价格被收购,部分原因是因为它是美国最大的……我不想说供应商。因为它最早是作为电子邮件营销解决方案而起家,所以他们拥有美国最大的邮件列表。但是大多数人可能不太清楚的是,在过去的几年里,他们已经采取了重大举措,成为小型VoAGI企业电子商务的一站式购物中心。

他们仍然提供电子邮件营销服务,这是他们的重要业务之一,因此NLP在那里非常重要。但他们还提供诸如社交媒体内容创作、电子商务虚拟数字网站等服务。他们试图将自己定位为小型和VoAGI规模企业的前端CRM。他们被Intuit收购成为Intuit后台运营的前端,例如QuickBooks和TurboTax。

在这种背景下,Mailchimp的目标是提供营销相关的东西,换句话说,那些小型的家庭式企业需要做的事情。Mailchimp的目标是使这一切更加容易和自动化。

其中一个他们正在努力研发的强大应用场景是:假设你是一家运营着T恤或蜡烛店的小商业主人。你可能是唯一的业主,或者可能有两到三个员工。你的企业规模相对较小,没有钱雇佣全职设计师或市场人员。

你可以去Fiverr找人,但有时你只需要发送一些假日促销的电子邮件。

尽管这是低价值的工作,但如果雇佣承包商来完成这项工作,会需要很大努力和金钱投入。Mailchimp通过他们的创意工作室产品或服务提供了一个解决方案:

然后莱斯利说:“好吧,现在给我一些模板。”

比如蜡烛店的莱斯利想要发送一个假日电子邮件。她可以进入创意工作室并说:“嗨,在这里是我的网站或店铺,为我生成一些电子邮件模板。”首先它会生成电子邮件的库存照片和颜色配色方案。

然后莱斯利说:“好吧,现在,请使用我的品牌为我编写假日电子邮件模板,使用我的语调和说话风格。”然后它会列出她的商店的其他一些详细信息。接下来,当然,它会生成电子邮件的内容。接着,莱斯利说:“好的,我想要几个不同版本,这样我可以进行A/B测试。”然后它会完成这一切……

我认为这是一个强有力商业应用案例的原因是因为Mailchimp是最大的提供商。我故意不说提供电子邮件的提供商,因为他们实际上并不提供电子邮件……

Piotr: …发送者?

Mikiko Bazeley:是的,他们是最大的安全电子邮件业务。所以莱斯利已经建立起了自己的电子邮件列表,她可以做一些事情。她的电子邮件列表可以细分,这也是Mailchimp提供的功能之一。Mailchimp允许用户根据自定义的触发条件创建活动。他们为此提供了一个方便的用户界面。所以,莱斯利有三个电子邮件列表,她有高花费者、VoAGI花费者和低花费者。

她可以将不同的电子邮件模板与这些不同的列表连接起来,从而实现与她的业务直接相关的端到端自动化。对我来说,这是一个强有力的商业价值主张。其中很大一部分原因是,Mailchimp通过他们为20年来所进行的产品和策略工作,已经建立起了一个“防护壕沟”。

对他们来说,他们提供的生成式AI能力与他们的使命陈述是一致的。这不仅仅是产品。产品是“我们将使作为小型或VoAGI规模企业所有者的您的生活变得非常容易,您可能已经建立了一万封电子邮件的列表,并且与他们的网站和店铺互动”。现在,他们还提供了分段和自动化能力 – 通常需要使用Zapier或其他提供商才能实现。

我认为Mailchimp正获益于新浪潮。对于许多其他公司来说,我不能说同样的事情。作为一名机器学习平台工程师当我在那里时,这是非常令人兴奋的,因为它早期让我接触到了一些挑战,不仅仅是使用多模型集成管道,这在那里当然有,还有测试和验证生成式人工智能或LLMs。

例如,如果你在你的系统或者模型管道中使用它们,你实际上如何评估它?如何监控它?许多团队最大的问题是他们的模型的数据产品反馈。公司和团队实际上并不了解如何将其整合以进一步丰富他们的数据科学机器学习计划以及他们能够提供的产品。

Piotr: Miki,有趣的结论是,在假期期间从公司那里得到的问候不仅没有个性化,连正文内容也不是写手写的。

Mikiko Bazeley: 但是它们是个性化的。它们是针对你的角色进行个性化的。

相关播客集数

将会话型AI产品部署到生产环境中

了解更多

Mailchimp的生成式AI问题和反馈监控

Piotr: 这是公平的。无论如何,你说了一些很有趣的东西:“公司不知道如何处理反馈数据”,而我认为对于生成式AI类型的问题而言,这更具挑战性,因为反馈不够结构化。

您能和我们分享一下Mailchimp是如何处理的吗?这是什么类型的反馈?你的团队对此怎么做?它是如何工作的?

Mikiko Bazeley:我要说的是,当我离开时,监控项目刚刚起步。再次理解Mailchimp的背景对此很有帮助。它是一家私有公司,已经有20年历史,从未获得过任何风投资金。

他们仍然租用物理数据中心,并拥有自己的服务器机架。他们只是在相对较短的时间内(或许不到8年或者更接近6年)开始转向云端。

这是一个很好的决策,也许一些公司应该考虑。与其将整个公司迁移到云端,Mailchimp说:“目前,我们将把新兴的数据科学和机器学习项目,包括需要支持这些项目的数据工程师,迁移到云端,而其他部分仍然采用传统堆栈。”

然后,他们慢慢开始将数据迁移到云端并进行评估。由于他们是私有公司,并且有一个非常明确的目标,他们能够根据年份做出技术决策,而不是季度 -这和一些高科技公司不同。

这对反馈意味着什么?这意味着通过产品数据产生的反馈将再次服务于产品本身 – 很多核心遗留堆栈中都有这样的情况。

数据科学/机器学习组织的数据工程师的主要任务是将数据从遗留堆栈复制到GCP中,而我们当时是在GCP上工作的。对于数据科学家和机器学习人员来说,数据的延迟约为一天。

在那时,做事情非常困难。我们可以进行实时服务模型-这是一种非常常见的模式-但很多模型需要离线训练。我们将其创建为实时服务,暴露了API端点等等。但是延迟大约是一到两天。

话虽如此,他们正在解决的一个问题,例如,就是…这是需要与产品紧密集成的地方。

其中一个反馈是关于创建活动的——我们称之为“旅程构建器”。许多小型和VoAGI规模的企业的所有者都是CEO、CFO和CMO,他们全都在做。他们说:“这实际上很复杂。你能向我们提供构建活动的建议吗?”这是通过产品提出的反馈。

负责该项目的数据科学家说:“我将构建一个模型,为所有者的活动提供接下来的三个步骤或三个操作的推荐。”然后我们都与数据工程师合作,说:“嘿,我们能得到这些数据吗?”

再次提及,这就是法律发挥作用的地方,法律人员说:“有任何法律限制吗?”然后将其纳入可用于模型的数据集中。

Piotr:这个反馈不是数据,而是基于用户需求的产品的定性反馈,对吗?

Mikiko Bazeley:但我认为你需要两者兼备。

Aurimas:没错。

Mikiko Bazeley:我认为数据反馈不能没有产品和前端团队。例如,一个很常见的获取反馈的地方是在你分享一个推荐时对其进行确认,对吧?又或者,例如,Twitter的广告。

你可以说:“这个广告对你是否相关?”回答是“是”还是“否”。这在界面上提供这个选项非常简单。而且我觉得很多人认为实现数据反馈非常容易。当我说“容易”时,并不是说不需要对实验设计有深入的了解。但是假设你已经具备了这一点,有很多工具,如A / B测试、预测和模型。然后,你只需要将结果写回表格中。这实际上并不难。但是很多时候真正困难的是让不同的工程团队同意并愿意设置这个。

一旦你有了实验、网站和附属模型,数据部分就变得容易了,但我认为让产品接受并让工程或业务团队认识到丰富我们的数据集具有战略价值是困难的。

例如,上周我参加Data Council时,他们有一个生成AI的讨论小组。我从那次讨论中得到的是,无聊的数据和机器学习基础设施非常重要。现在它们甚至更重要。

很多这样的MLOps基础设施不会消失。事实上,它们变得更重要。大家讨论的主要问题是:“哦,我们的公共数据语料库用于训练和微调的数据快用完了。”他们所指的是,我们在英语中可以用来与我们的模型一起使用的高质量学术数据集变少了。所以人们会问:“如果我们在网络上找不到数据集会怎么样?”答案是回到第一方数据-回到你作为企业实际拥有并可以控制的数据。

当谷歌说:“嘿,我们将取消跟踪第三方数据”的能力时,发生了同样的讨论。很多人感到恐慌。如果你建立了数据反馈收集,并将其与机器学习工作对齐,那你就不用担心。但是如果你的公司只是环绕像OpenAI API这样的东西提供服务,那你就应该担心了,因为你无法提供其他人无法提供的价值。

机器学习基础设施也是如此,对吗?

作为MLOps工程师更靠近业务

Piotr:基线提升了,但为了保持竞争力,你仍然需要拥有一些专有的东西。

Mikiko Bazeley:没错,百分之百。而且这实际上是我认为MLOps和数据工程师们像工程师那样思考过多的地方…

Piotr:你能详细解释一下吗?

Mikiko Bazeley:我不想只说他们认为挑战是技术性的。很多时候确实存在技术难题。但是很多时候,你需要的是时间、空间和投资。很多时候,这意味着将你的对话与企业的战略目标保持一致。

我认为很多数据工程师和MLOps工程师在这方面做得不好。我认为数据科学家往往做得更好。

Piotr:那是因为他们需要更经常地与业务打交道,对吗?

Mikiko Bazeley:对!

Aurimas:开发人员并没有直接提供价值…

Mikiko Bazeley:就像公共卫生一样,对吧?人们总是低估公共卫生,直到你因为水源感染问题而濒临死亡。这非常重要,但人们并不总是意识到其重要性。更重要的是,他们从“这是最好的技术解决方案”而不是“这将给公司带来巨大价值”角度来看待问题。公司真正关心的只有两三件事:

  • 1 生成更多收入或利润
  • 2 削减成本或优化成本
  • 3 以上两者的结合

如果MLOps和数据工程师可以在努力方面保持一致,尤其是围绕建立ML平台,一个商业人士甚至是工程主管会说:“我们为什么需要这个工具?这只是又一个人们不会使用的东西。”

对抗这种情况的策略是考虑他们关心的关键绩效指标和度量标准。展示对这些指标的影响。下一步是提供攻击计划和维护计划。

我观察到非常成功的机器学习平台团队所做的是与你听到的故事完全相反。很多关于构建机器学习平台的故事都是这样的:“我们创建了这个新东西,然后引入了这个工具来使用它。然后人们就开始使用并喜欢它。” 这只是“如果你构建它,他们会来”的另一个版本,但事实并非如此。

你必须在很多成功的机器学习平台故事的背后读懂其中的含义。他们所做的是在已经启动但不够优化的过程中,找到一个领域或一个阶段。例如,也许他们已经有了将机器学习模型部署到生产环境的方法,但效果非常糟糕。

团队将建立一个更好的平行解决方案,然后邀请或接纳数据科学家加入。他们会处理与采用用户相关的手动工作 – 这就是所谓的“不可扩展的事情”,你知道的。做研讨会。帮助他们把项目推出去。

关键点是你必须提供真正更好的东西。当数据科学家或用户有一个基准:“我们已经在做这件事,但很糟糕。”然后你给他们提供一个更好的东西 – 我认为有一个叫“可区分价值”的术语 – 你就会有一个可以做更多事情的数据科学家用户群体。

如果你去找一个商业人士或你的CTO,说:“我们已经知道我们有100名数据科学家试图推动模型。完成这个过程需要多长时间。我们不仅可以将时间缩短一半,而且我们还可以以一种更让他们满意的方式完成。这将带来更多价值,因为这是我们想要推动的倡议。这大约需要我们六个月的时间,但我们可以确保将其缩短到三个月。”然后你可以展示这些基准和度量标准,并提供一个维护计划。

很多这些对话并不是关于技术优势。它涉及到如何社交化这个倡议,如何与你的行政领导的关切保持一致,并努力让ML平台得到采纳。

Mailchimp的ML平台能力的成功案例

Aurimas:你在Mailchimp有什么成功案例吗?你有什么与机器学习团队交流的建议?你如何从他们那里获得反馈?

Mikiko Bazeley:是的,当然。我们做得很好的几件事。我先从Autodesk开始介绍一下背景。

当我在Autodesk工作时,我担任数据科学家/数据分析师的混合角色。Autodesk是一个以设计为导向的公司。他们让你参加很多课程,比如设计思维,以及如何收集用户故事。这是我在人类学研究中也学到的东西:如何创造所谓的民族志,也就是“如何去接触人们,了解他们的实践,理解他们关心的事情,并用他们的语言交流。”

这是我在团队中所做的第一件事情。我到那里后说:“哇,我们有这么多在Jira上的工作任务。我们有这么多事情可以做。”团队的成员朝着不同的方向努力,我说:“好吧,首先,让我们确保我们都对什么是真正重要的有相同的基础理解。”

所以我做了几件事情。首先是回顾我们创建的一些任务单。我回顾了用户故事,与数据科学家和机器学习平台团队的成员进行交流,创建一个反馈收集的流程。让我们各自独立评分或分组反馈,并对工作任务进行“尺寸大小”的定义。然后,我们可以在此基础上建立一个大致的路线图或计划。

其中一件事我们确定了是模板化。模板化有点令人困惑。更重要的是,在这个时候,M1 Mac发布了。这破坏了一堆与Docker相关的东西。模板化工具的一部分实际上是创建一个Docker镜像,并根据机器学习项目的类型填充它。我们想要摆脱的是本地开发。

我们所有的数据科学家都在我们的AI平台笔记本上进行开发。然后他们需要把工作拉到本地,然后再把工作推送回一个独立的GitHub实例,类似这样的事情。我们希望尽可能简化这个过程,特别是想要找到一种连接AI平台笔记本的方式。

您可以在GCP(谷歌云平台)中创建一个模板,然后将其推送到GitHub,然后触发CI/CD,最后触发部署过程。这是我参与的一个项目。看起来似乎有所帮助。我参与了V1版本的开发,然后其他同事进一步完善。现在,数据科学家在开发过程中理想情况下不需要在远程和本地之间进行奇怪的推拉。

对我来说,这是一个非常有趣的项目,因为我对数据科学家和甚至是我自己的工作有一种印象,即您在本地开发。但这是一个有些不连贯的过程。还有其他一些东西。但是远程和本地开发之间来回切换是一个重要的问题。这也是一个困难的过程,因为我们不得不考虑如何将其连接到Jenkins,以及如何绕过VPC等等。

最近我正在阅读的一本非常喜欢的书叫做《用火将其毁灭》(Kill It With Fire),作者是Marianne Bellotti。这本书讲述了如何更新传统系统,如何现代化而不放弃它们。这是我在Mailchimp所做的很多工作。

在我职业生涯的这一阶段,我习惯了在初创公司工作,那里的机器学习倡议非常新颖,您不得不从头开始构建一切。我没有意识到,当您为企业公司构建一个机器学习服务或工具时,这要困难得多。您在实际使用什么方面有更多的限制。

例如,在Mailchimp我们不能使用GitHub Actions。尽管那是一个不错的选择,但我们无法使用它。我们有一个现有的模板化工具和一个数据科学家已经在使用的流程。这是一个存在的工具,但并不是最优化的。那么,我们如何优化他们愿意真正使用的产品呢?我们从中学到了很多东西,但在企业环境中工作的速度要比在初创公司或作为顾问时要慢得多。因此,这是一个缺点。很多时候,您能够参与的项目数量大约只有在其他地方的三分之一,但它非常令人着迷。

关联帖子

建立一个机器学习平台(终极指南)

阅读更多

Mailchimp的团队结构

Aurimas:我非常想知道数据科学家是否是你们平台的直接用户,或者是否还有机器学习工程师以某种方式参与进来-可能嵌入到产品团队中?

Mikiko Bazeley:对这个问题有两个答案。Mailchimp有一个注重设计和工程的文化。在那里工作的很多数据科学家,尤其是最成功的那些人,之前都有作为软件工程师的经验。即使过程有点困难,很多时候他们能找到方式来解决问题。

但是,在过去的两三年里,Mailchimp开始雇佣更多从产品和业务方面来的数据科学家。他们没有软件工程师的经验。这意味着他们需要一点帮助。因此,参与MLOps或ML平台项目的每个团队都有我们所称的“嵌入式MLOps工程师”。

他们在某种程度上类似于ML工程师的角色,但又不完全相同。例如,他们不会为数据科学家构建模型,只是帮助他们将项目成功推向生产环节。我通常喜欢将ML工程师看作是全栈数据科学家。这意味着他们会编写特征和开发模型。我们有一些人只是为了帮助数据科学家顺利完成项目流程而存在,而不是为他们建模。

我们的核心用户是数据科学家,他们是唯一的用户。我们有一些人会帮助他们回答问题,解决Slack的疑问,帮助优化漏洞。然后将这些问题带回给工程师,由他们来解决。每个团队都有这种由开发新功能和工具的人以及将大约50%的时间用于帮助数据科学家的人组成的混合团队。

在我离开之前,Intuit在我离开前大约六个月收购了Mailchimp,实际上通常需要那么长时间才会开始产生变化。我认为他们所做的是对团队进行重新调整,让大部分实施工程师成为一个团队,而平台工程师成为另一个团队。但在我在那里的时候,每个团队都有两者兼顾。

Piotr:那么没有一个中央的ML平台团队吗?

Mikiko Bazeley:没有。它基本上是按照培训和开发、服务和监控以及集成的方式进行划分。

Aurimas:这仍然是一个中央平台团队,但是由多个精简过的团队组成。它们在某种程度上是平台团队的一部分,可能提供平台功能,就像在团队拓扑中描述的那样。

Mikiko Bazeley:是的,对。

Piotr:他们是否共享技术堆栈和流程,还是每个包含数据科学家和支持人员的ML团队都有自己的领域、技术堆栈和流程。或者你是否有共享一些基础知识的计划,例如,你提到了模板在团队之间的使用。

Mikiko Bazeley:大部分技术堆栈是共享的。我认为团队拓扑方式描述组织中的团队实际上非常好。这是一种很好的描述方式。因为有四个团队,对吧?有精简过的团队,也就是数据科学和产品团队。还有复杂子系统团队,如Terraform团队或Kubernetes团队。然后还有服务和平台团队。

每个团队都是平台和支持的结合体。例如,我们共享的资源有BigQuery、Spanner和Airflow。但区别在于,我认为这是很多平台团队常常忽视的一点:平台团队的目标并不总是要拥有特定的工具或者特定的技术堆栈的一层。很多时候,如果你足够大,拥有这些专门的人员,平台团队的目标是将不仅是现有工具,还有可能新引入的工具融合在一起,为最终用户-也就是我们的数据科学家提供一个统一的体验。虽然我们共享BigQuery、Airflow和其他很棒的工具,其他团队也在使用这些资源。但他们可能对将机器学习模型部署到生产环境没有兴趣,或者根本不涉及这个方面。

我们的做法是说:“嘿,我们将成为你们学习使用这些内部工具的指导者。我们将创建和提供抽象接口。”有时,我们还会引入我们认为必要的工具。例如,一种由服务团队不使用的工具是Great Expectations。他们并没有真正使用它,因为这是在开发和训练中使用的工具-在生产环境中并不真正使用Great Expectations。

还有一些其他的东西……抱歉,我不能一下子想起所有的东西,但是数据科学家在开发和训练中还需要使用三到四个其他的工具,但是他们在生产中不需要使用这些工具。我们将这些工具纳入到生产路径中。

服务层是一个轻量级的Python客户端,它会获取用于模型的Docker容器或图像。然后将其公开到API端点,以便前端团队可以将任何请求路由到模型以获取预测结果。

流程化堆栈

Piotr:你们使用过任何流程化工具吗?例如,用于自动或半自动重新训练模型。或者是数据科学家仅仅训练一个模型,将其打包为Docker图像,然后就完成了?

Mikiko Bazeley:我们有各种自动化程度的项目。我们使用了一个很重要的工具,叫做Airflow。这是公司里所有人都在使用的工具。我们使用Airflow的方式如下:很多时候你需要自己去编写DAG并创建它。但是事实上,这部分通常可以自动化,特别是当你只需要运行与cookiecutter模板中构建的机器学习流程类型相同的流程时。因此,我们说:“嘿,当你设置你的项目时,你需要回答一系列的面试问题。你需要Airflow吗?是或否?”如果他们回答“是”,那么相关信息和其他内容会自动填写给他们。然后再补充凭证。

Piotr:他们怎么知道是否需要它?

Mikiko Bazeley:这实际上是cookiecutter模板优化的一部分工作。当我刚开始工作时,数据科学家需要填写很多这类问题。我需要Airflow吗?我需要XYZ吗?而且大部分时候,他们都不得不咨询让能工程师:“嘿,我应该做什么?”

有时,一些项目需要进行设计咨询,比如“我们能支持你正在构建的模型或系统吗?以及我们提供的现有路径是否能满足需求?”然后我们会帮助他们解决这个问题,以便他们能够继续设置项目。

当他们设置项目后,我们看了一眼,发现:“不,这不正确。你实际上需要做这个事情。”他们不得不重新运行项目创建流程。作为优化的一部分,我们说:“嘿,只需选择一个模式,然后我们将填写所有的配置信息。”他们中的大多数人很容易理解。例如,“这将是一个批量预测工作,我只需要复制数值吗?这将是一个实时服务模型?”对他们来说,这两个模式很容易理解,因此他们可以继续说:“嘿,这就是我想要的。”他们只需使用为该特定工作设计的图像。

模板流程会运行,然后他们只需填写一些内容。“哦,这是项目名称,等等……”他们不需要填写Python版本。我们会自动将其设置为最稳定、最新的版本,但如果他们需要3.2版本,而Python是3.11版本,他们可以指定。除此之外,理想情况下,他们应该能够完成编写特征和开发模型的工作。

另一个很酷的部分是我们一直在考虑为他们提供原生Streamlit支持。这也是流程的一个常见部分。数据科学家会创建初始模型。然后他们会创建一个Streamlit仪表板。他们会向产品团队展示,并且产品团队会根据此来做出“是”或“否”的决策,以便数据科学家能够继续项目。

更重要的是,如果新的产品人员想要加入,他们对某个模型感兴趣,想要了解这个模型是如何工作的,或者模型提供了什么能力,他们可以访问那个Streamlit库,或者数据科学家可以将链接发送给他们,他们可以快速查看模型的功能。

Aurimas: 这听起来像是一个用户验收测试环境,对吧?在预生产阶段进行用户验收测试。

Piotr: 也许更像是“按需技术堆栈”?你指定你的项目,然后获得技术堆栈和配置。以前有类似设置的类似项目的例子。

Mikiko Bazeley: 是的,我的意思是,对于数据科学家来说,这应该是他们的工作方式,对吧?

Piotr: 所以你不仅为Mailchimp的机器学习团队提供了一个适合所有人的技术堆栈,他们还有选择权。他们可以根据每个项目个性化地选择技术堆栈。

Mailchimp的机器学习组织规模

Aurimas: 你们支持了多少个路径?因为我知道有些团队的唯一工作就是每天创建新的模板存储库,以支持大约300个用例。

Piotr: 那个团队有多大?你们有多少个机器学习模型?

Mikiko Bazeley: 数据科学团队大约有20到25人,我想是这样。在工程方面,我的团队有6人,可能还有6人是服务团队,另外6人是数据集成和监控团队。然后我们还有一个数据平台团队。所以他们与数据工程非常密切相关,对吧?

他们会帮助维护并拥有将数据从Mailchimp的旧技术堆栈复制到BigQuery和Spanner的工作。他们还做了一些其他的事情,但这是最重要的一项工作。还要确保数据对分析使用案例是可用的。

还有一些人在使用这些数据,他们与机器学习项目无直接关系。那个团队大约有6到8个人。所以总共,我们有大约24名工程师,供25名数据科学家使用,还有那些使用这些数据的产品和数据分析人员。

Aurimas: 我理解得对吗?你们有18人在各个平台团队中,为25名数据科学家服务?你说每个团队有6人?

Mikiko Bazeley: 第三个团队分散在几个项目中,最近才涉足机器学习平台的倡议。在我离开Mailchimp大约三个月之前,他们才开始参与。

在那之前,他们一直在进行数据集成的工作,这意味着他们与分析和工程方面的工作密切相关,与数据科学方面完全不同。

我想他们最近聘用了更多的数据科学家。他们还聘用了更多的平台工程师。我认为他们试图使Mailchimp更加与Intuit(尤其是Quickbooks)接近。他们还在不断构建更多的机器学习能力,这对于Mailchimp和Intuit的长期战略愿景非常重要。

Piotr: Miki,你还记得在你在那里工作时有多少个机器学习模型在生产中吗?

Mikiko Bazeley: 至少有25到30个。但他们肯定正在构建更多。其中一些模型实际上是集成模型、集成流程。数量相当可观。

我团队所解决的最困难的部分,以及我所从事的工作,就是实验和生产之间的鸿沟。在我在那里工作的时候,我们通过优化模板项目,成功地大大减少了设置项目和开发环境的工作量。

如果他们增加了那个数量,我不会感到惊讶,至少也会大大增加在生产中的模型数量。

Piotr: 你还记得从一个机器学习解决方案的想法到将机器学习模型投入生产所需的时间吗?中位数或平均时间是多久?

Mikiko Bazeley: 我不喜欢从想法开始计算,因为产品方面可能有很多问题。但是假设产品方面一切顺利,他们没有改变主意,假设数据科学家没有超负荷,可能仍然需要几个月的时间。这在很大程度上是因为需要验证逻辑,以及获得产品支持。

皮奥特:验证逻辑?那是什么意思?

Mikiko Bazeley:例如,验证数据集。通过验证,并不是指质量,而是指语义理解,创建一系列不同的模型,创建不同的特征,与产品团队和其他数据科学团队共享这些模型,确保我们有正确的架构来支持它。然后,例如,确保我们的Docker镜像支持需要使用GPU的模型。这将需要至少几个月的时间。

皮奥特:我本来想问的是关键因素是什么。哪个环节花费了最多的时间?

Mikiko Bazeley:最初,我们在端到端的体验上遇到了一些困难。对于不同的团队来说,这种体验有些艰难。这是我刚到那里时收集到的反馈。

基本上,数据科学家会去开发和训练环境团队,然后他们会去服务和部署环境,必须与另一个团队合作。一个反馈是:“嘿,我们必须跨越这些不同的障碍,这并不是一个非常统一的体验。”

我们还遇到了战略路线图的困难。例如,当我到那里时,不同的人正在完全不同的项目上工作,有时甚至不清楚这些项目是什么。有时,一个项目不是关于“对数据科学家有多有用”,而更像是“那个项目上的工程师想要工作吗?”或者“那是他们的个人项目吗?”有一些这样的项目。

到我离开时,那里的技术主管Emily Curtin,她非常棒,她关于如何利用GPU来支持数据科学家的演讲非常出色。与她一起工作非常棒。当时我的经理Nadia Morris,她还在那里,我们三个人以及其他几个人的工作,我们能够更好地对齐路线图,真正开始将所有努力集中于提供更统一的体验。

例如,还有其他一些实践,有些工程师有了个人项目,他们会花两三个晚上的时间构建一些东西,然后将其发送给数据科学家,完全没有经过任何测试或其他处理,他们会说:“噢,是的,数据科学家,你们必须使用这个。”

皮奥特:这被称为热情 *笑*

Mikiko Bazeley:就像是,“等一下,为什么你们首先没有让我们在内部进行测试。”然后,你知道,现在我们需要帮助数据科学家,因为他们在使用这些个人项目工具时遇到了很多问题。

我们本可以完善这些工具,确保它们没有错误。然后,我们可以设置一个实际的使能过程,我们可以创建一些教程或文档,或者我们可以举办办公室时间,在那里展示这些工具。

很多时候,数据科学家会看着它们,然后说:“是的,我们不打算使用这个,我们还是继续做我们现在做的事情,即使它不太理想,但至少不会出错。”

相关文章

机器学习团队的角色及其如何相互协作

了解更多

Mailchimp的成功之路

奥里马斯:有没有什么情况下,一个团队内部创建的东西非常好,你们决定将其作为一项能力纳入平台?

Mikiko Bazeley:这是个很好的问题。我想没有,但很多时候数据科学家,特别是一些经验丰富的数据科学家,他们会去尝试各种工具,然后回到团队说“嘿,这看起来非常有趣。”我想这就是当他们看到WhyLabs时发生的事情。

这就是我认为是怎么发生的。还有一些其他的东西,但在很大程度上我们正在建立一个让每个人生活更轻松的平台。有时候这意味着牺牲一点新意,而我认为这就是平台团队有时候搞错的地方。

Spotify有一篇关于这个的博文,关于黄金路径,对吧?他们有一个黄金路径,一个银路径,还有一个青铜路径或者铜路径或者其他什么。

黄金路径得到了最好的支持。“如果您遇到任何问题,请了解我们支持和维护的内容。如果您遇到任何问题,我们将优先解决该错误,我们将修复它。”它将适用于85%的用例,85到90%。

银路径包含黄金路径的元素,但有些事情实际上或直接得到支持,但我们会进行咨询和通报。如果我们认为我们可以把它纳入黄金路径,那么我们会这样做,但必须有足够多的用例。

这时候,它就变成了“我们在哪里投入工程资源”的对话?因为,例如,有一些项目像创意工作室,对吧?它非常具有创新性。但支持它也非常困难。但MailChimp说,“嗨,我们需要提供这个,我们需要使用生成性人工智能来帮助简化我们用户的产品”。然后它就变成了一个关于“我们的工程师能够投入多少时间来为这个系统工作”的对话。

即使有了这些项目,就基础架构支持而言,实际上并没有人们想象的那么大的差别。我认为,特别是在生成性人工智能和LLMs方面,你所获得的最大基础架构和操作影响就是延迟,这是一个巨大的问题。第二是数据隐私,这是一个非常重要的问题。然后第三是监控和评估。但对于很多其他的东西来说… 上游的话,它仍然符合,例如基于自然语言处理的推荐系统。只要您有合适的提供者提供正确的需求,那这并不会有太大的改变。

所以,我们有一个黄金路径,但您也可以有一些银路径。然后你会有一些人只是按照自己的方式去做自己的事。我们当然有这样的人。我们有一些牛仔和牛仔女孩和牛仔人-他们会走出传统路线。

在那个时候,你可以说,“你可以这样做,但它不会在正式模型上投入生产”,对吗?你尽力而为,但我认为那也是一个让人们作为平台团队思考的时刻,你会想是否是因为这个人的个性导致他们这样做?或者确实是因为我们的工具环境有一个摩擦点?如果在25个人中只有一两个人在这么做,那就是“嗯,可能是这个人。”可能不是平台的问题。

Piotr:听起来你的教育背景在这里起作用了!

结束语

Aurimas:实际上,我们已经超过约定时间19分钟了。在结束本集之前,也许你有一些想法想要给我们的听众留下吗?也许你想说一下他们在哪里可以在网上找到你。

Mikiko Bazeley:是的,当然。大家可以在LinkedInTwitter上找到我。我有一个Substack一直被我忽视,但我将要重新激活它。所以大家可以在Substack上找到我。我还有一个YouTube频道,也正在进行重新激活,所以大家也可以在那里找到我。

在最后的思考方面,我知道有很多人对过去六个月发生的所有新事物感到焦虑和兴奋。有些人担心工作。

Piotr:你的意思是基础模型吗?

Mikiko Bazeley:是的,基础模型,但机器学习领域也有很多其他内容。我对人们的建议是,首先,无聊的机器学习和数据基础设施以及知识比以往任何时候都更重要。所以拥有在数据建模、编码、测试和最佳实践方面的强大技能是很重要的,这些技能将永远不会贬值。

其次,我的建议是,不管你是什么职称,或者你想成为什么职称:专注于参与项目,了解相关领域,并学会用商业语言沟通。

如果我真要诚实地说,我并不是最优秀的工程师或数据科学家。我充分意识到自己的优缺点,但我之所以能够在职业生涯中做出如此多的转变,以及能够取得如此大的成就,很大程度上是因为我试图理解所处的领域以及与之合作的团队,尤其是与收入中心或利润中心合作,这是人们所说的。这是非常重要的。这是一项技能。人们应该掌握的人际交往技能和知识。

而且,人们应该在社交媒体上分享他们的学习成果。这将为你带来工作机会和赞助。

Aurimas:感谢你的见解,也感谢你抽出时间与我们交谈。这真是太棒了。感谢所有聆听的人。下一集见!