人工智能
埃里克·盖瑟,SPR 数据实践首席架构师 – 采访系列

埃里克于 2018 年加入 SPR 的新兴技术集团的数据实践部门,担任首席架构师。埃里克专注于数据、使用 Java 的开源开发以及实用的企业架构,包括构建概念验证、原型和最小可行产品(MVP)。是什么最初吸引你对机器学习的兴趣?是它能够使应用程序持续学习的能力。我曾作为高级数据分析师使用 SPSS,在一家后来成为全球市场研究公司的公司工作,并后来将名为 Drools 的业务规则引擎纳入我为客户构建的应用程序,但所有这些工作的输出基本上是静态的。我后来参加了流程改进培训,在此期间,讲师详细展示了他们如何通过统计和其他方法改进客户使用的业务流程,但这里的输出主要集中在某一时刻。与同事合作改进我们在此期间构建的医疗保健产品的经历让我认识到为什么需要连续学习,但当时可用的资源并不存在。有趣的是,我对机器学习的兴趣已经回到了起点,因为我的研究生导师当时警告我不要专攻当时称为人工智能的领域,因为当时正在经历人工智能的冬天。我选择使用诸如 ML 之类的术语,因为它们的内涵较少,而且即使 AWS 也承认其人工智能服务层实际上只是构建在其机器学习服务层之上的更高级别的抽象。虽然外界对机器学习的一些炒作是不切实际的,但从开发人员的角度来看,它提供了强大的功能,只要这些从业者承认机器学习提供的价值仅与它处理的数据一样好。 您是开源的坚定倡导者,能否讨论为什么开源如此重要?我这些年需要向高管解释的一个关于开源的方面是,开源的主要好处不是使用此类软件不需要花费金钱,而是源代码可以免费使用。另外,使用此源代码的开发人员可以修改它以供自己使用,如果建议的更改被批准,可以使这些更改对其他使用它的开发人员可用。事实上,开源软件的运动是因为开发人员等待商业公司对他们许可的产品进行更改而启动的,所以开发人员自己编写了具有相同功能的软件,并将其开放给其他开发人员改进。商业化的开源利用了这些好处,现实是许多现代产品在表面下使用开源,即使商业版本的此类软件通常提供开源版本中不可用的附加组件,提供了区别和支持,如果需要支持。我的开源经验始于构建我之前提到的医疗保健产品,使用诸如 Apache Ant 之类的工具来构建软件,以及当时的一款早期 DevOps 产品,称为 Hudson(其代码库后来成为 Jenkins)。我们决定使用这些开源产品的主要原因是它们提供了比商业替代品更好的解决方案,或者它们提供了商业实体甚至没有提供的创新解决方案,更不用说一些我们使用的商业产品的商业许可过于限制,导致在需要更多许可证时出现过多的繁琐手续。随着时间的推移,我看到开源产品不断演进,提供了急需的创新。例如,我的同事和我在构建这个医疗保健产品时遇到的许多问题后来都被一款开源的 Java 产品解决了,这款产品叫做 Spring Framework,它已经存在超过十年了,其生态系统现在已经远远超出了它最初提供的创新,如依赖注入。 您使用开源构建了概念验证、原型和最小可行产品。您能否分享一些这些产品背后的经历?正如我在向最近的一位客户提出的一项指导原则中所解释的那样,我们为他们构建的数据平台的开发应该继续在需要时随着时间的推移迭代进行。构建的组件不应被视为静态的,因为需求会发生变化,新的组件和组件功能将随着时间的推移而变得可用。在构建平台功能时,应该首先从最小可行的开始,然后添加不必要的附加功能,这在某些情况下甚至包括配置。首先从功能性开始,确保您理解它,然后再演进它。不要浪费时间和金钱构建可能不太可能被使用的东西,但要努力领先于未来的需求。我们为该产品构建的最小可行产品(MVP)需要以便能够继续在其上构建其他用例,即使它带有一个用例的实现,即费用异常检测。与这位客户不同,我之前构建的一个产品在我到来之前就有一定的历史。在这种情况下,利益相关者已经辩论了三年(!)他们应该如何处理他们想要构建的产品。一位客户高管解释说,他之所以请我过来,是为了帮助公司摆脱一些内部辩论,特别是因为他想要构建的产品需要满足参与的组织等级结构。我的任务是帮助公司摆脱一些内部辩论,特别是因为他想要构建的产品需要满足参与的组织等级结构。我发现这些领地之争在很大程度上与客户、其子公司和外部客户拥有的数据有关,所以在这种情况下,整个产品待办事项列表都围绕着如何摄取、存储、保护和使用数据来为成本分析生成医疗保健提供者网络。在我的职业生涯早期,我意识到一个名为“可用性”的架构质量不仅限于最终用户,还包括软件开发人员自己。这种情况的原因是,编写的代码需要像用户界面需要被最终用户使用一样被使用。为了使产品变得可用,需要构建概念验证来证明开发人员能够做他们想做的事情,特别是在他们正在做出的特定技术选择相关时。但是,概念验证只是开始,因为产品在随着时间的推移而演进时最好。在我看来,MVP 的基础应该理想地建立在表现出一定稳定的原型之上,这样开发人员就可以继续演进它。 在审阅《企业规模机器学习》一书时,您表示“使用开源产品、框架和语言,以及由开源和商业组件混合而成的敏捷架构,为许多公司提供了他们需要但最初没有意识到的灵活性”。您能否详细说明为什么您认为使用开源的公司更具灵活性?许多商业数据产品在表面下使用关键的开源组件,并使开发人员能够使用流行的编程语言,例如 Python。构建这些产品的公司知道他们选择纳入的开源组件为他们提供了一个起点,因为这些组件已经被社区广泛使用。具有强大社区的开源组件更容易销售,因为它们带来了熟悉感。主要由闭源组件或仅由特定商业产品使用的开源组件构成的商业产品通常需要供应商提供培训或许可证才能使用此类软件。此外,此类组件的文档通常不公开提供,这迫使开发人员继续依赖这些公司。当 Apache Spark 等广泛接受的开源组件成为中心焦点时,例如 Databricks Unified Analytics Platform,许多这些项目已经在社区中提供,减少了开发团队需要依赖商业实体来完成工作的部分。此外,由于组件如 Apache Spark 被广泛接受为事实上的行业标准工具,代码也可以更容易地在商业产品的实现之间迁移。公司将始终倾向于纳入他们认为的竞争差异化因素,但许多开发人员不想使用完全新颖的产品,因为这被证明对他们来说具有挑战性,并且往往会切断他们与期望的强大社区的联系。根据我的个人经验,我曾经使用过这样的产品,获取有能力的支持可能具有挑战性。而这很讽刺,因为这些公司以客户期望支持将及时提供为由来销售他们的产品。我曾经向开源项目提交过拉取请求,并在同一天将修复程序纳入构建中,但我不能说我曾经与之合作过的任何商业项目都能做到这一点。 您还相信开源可以带来“强大的开发者社区”的另一个方面。这些社区的规模有多大,它们有什么使其如此有效?围绕特定开源产品的开发者社区可以达到数十万人。采用率并不能完全说明社区的实力,但由于它们往往产生良好的循环,这是一个很好的指标。我认为社区是强大的,当它们产生健康的讨论和有效的文档,并且正在进行积极的开发时。当一位架构师或高级开发人员正在选择要纳入他们正在构建的内容的产品时,通常会考虑许多因素,不仅仅是产品本身和社区的外观,还包括将采用这些产品的开发团队,以及这些产品是否适合正在开发的生态系统,以及是否有路线图可供参考,在某些情况下,还要考虑是否可以找到商业支持,如果需要的话。然而,在没有强大开发者社区的情况下,许多这些方面往往被忽视。 您已经在您的网站上审阅了数百本书,您能否向我们的读者推荐三本书?这些日子里,我很少阅读编程书籍,虽然有例外,但现实是这些书籍通常会很快过时,开发者社区通常会通过讨论论坛和文档提供更好的替代方案。我现在阅读的大多数书籍都是免费提供给我的,或者通过我订阅的技术新闻通讯,或者通过作者和公关人员联系我,或者通过亚马逊发送给我。例如,亚马逊在 2011 年向我发送了一份《精益创业》的预出版未经校对的证明稿,以供我审阅,这让我接触到了最小可行产品的概念,最近又向我发送了一份《初学者 Julia》的副本。(1)我推荐的一本 O’Reilly 书是《寻找数据库极乐世界》。作者详细介绍了数据查询引擎支持从事务处理到分析的工作负载的挑战,包括在线事务处理和在线分析处理,以及业务智能工作负载。这本书可以用作指南,以评估数据库引擎或查询和存储引擎的组合,以满足工作负载要求,无论是事务性、分析性还是两者的混合。此外,作者对近年来“数据库摆动”现象的描述尤其出色。(2)虽然数据领域在过去几年中发生了很多变化,新的数据分析产品不断被推出,《颠覆性分析》呈现了过去 50 年来分析创新史的一个可接近的、简短的历史,我在其他地方没有看到过,并且讨论了两种类型的颠覆:分析价值链内的颠覆性创新和分析创新对行业的颠覆。从初创公司和分析从业者的角度来看,成功是通过颠覆他们的行业来实现的,因为使用分析来区分产品是一种创造颠覆性商业模式或创造新市场的方式。从投资分析技术的角度来看,等待和观察可能是有意义的,因为有风险被颠覆的技术是有风险的投资,因为它们的有用寿命缩短了。(3)我读过的最好的技术商业文本之一是《战略的局限性》,由研究委员会(被 Gartner 收购)的联合创始人撰写,研究委员会是一个国际性智库,调查计算机世界的发展以及公司如何适应。作者在全书中提供了他与商业领袖交谈的详细笔记,并对他建立客户群(与妻子一起)的经历进行了深刻的分析,这些客户是需要将战略与计算机世界迅速发展的世界相协调的大公司。正如我在审阅中所说,这本书与其他相关尝试的不同之处在于,它同时具备两个看似相反的特征:行业范围的广度和只有面对面交互才能获得的亲密度。您是 SPR 的数据实践首席架构师,能否描述一下 SPR 是什么?SPR 是一家位于芝加哥地区的数字技术咨询公司,为从 Fortune 1000 企业到当地初创公司的各类客户提供技术项目。我们使用一系列技术能力构建端到端的数字体验,包括自定义软件开发、用户体验、数据、云基础设施、DevOps 教练、软件测试和项目管理。 您在 SPR 的一些职责是什么?作为首席架构师,我的主要职责是为客户推动解决方案的交付,领导架构和开发项目,这通常意味着我还要戴上其他帽子,比如产品负责人,因为能够从实践的角度理解产品的构建方式在确定如何优先安排工作时具有很大的影响力,特别是在从头开始构建时。我还被拉入与潜在客户的讨论中,当我的专业知识是需要的时,公司最近要求我开始与数据实践中的其他架构师进行一系列会议,讨论客户项目、副项目以及我的同事如何跟上技术的步伐,类似于我为之前的咨询公司所做的,但 SPR 的内部会议仅限于数据工作,而不是整个技术实践。在我的大部分职业生涯中,我专注于使用 Java 的开源开发以及实用的企业架构,包括构建概念验证、原型和最小可行产品。此外,我还做我的同事和我所说的“实用”或“务实”的企业架构,这意味着在要构建的内容的背景下执行架构任务,并实际构建它,而不仅仅是谈论它或画关于它的图,当然,这些其他任务也很重要。在我看来,这三个专长相互重叠,不是相互排斥的。我已经向过去几年的高管解释说,技术行业之间传统上划分的软件开发和数据工作之间的界线已经不再明确,部分原因是这两个领域之间的工具已经融合,部分原因是由于这种融合,数据工作本身已经基本上成为软件开发工作。然而,由于传统的数据从业者通常没有软件开发背景,反之亦然,所以我帮助弥补了这一差距。 您目前正在 SPR 中处理的一个有趣项目是什么?就在最近,我发表了第一篇关于我们过去一年在 AWS 中为一家芝加哥全球咨询公司的首席信息官从头开始构建的数据平台的多部分案例研究系列的帖子。该平台包括数据管道、数据湖、规范数据模型、可视化和机器学习模型,供公司的各个部门、实践和客户使用。虽然核心平台由公司的 IT 组织负责构建,但目标是该平台将被公司 IT 以外的其他组织使用,以便在整个公司中使用共同的架构来集中数据资产和数据分析。正如许多成熟的公司一样,Microsoft Excel 的使用很普遍,电子表格在组织内部和跨组织之间以及公司和外部客户之间都很常见。此外,业务单元和咨询实践已经变得孤立,每个单元都使用不同的流程和工具。因此,除了集中数据资产和数据分析外,另一个目标是实施数据所有权的概念,并以安全、一致的方式在组织之间共享数据。 您是否还有其他关于开源、SPR 或您正在处理的其他项目的信息想要分享?我最近领导的一个项目(请参阅这里和这里)涉及成功地为一家大型保险公司的数据工程总监实施 Databricks Unified Analytics Platform,并将机器学习模型从 Azure HDInsight(Hadoop 分布式系统)迁移到该平台。所有这些迁移的模型都是为了预测可以预期的各种保险产品的消费者采用率,其中一些模型几年前从 SAS 迁移过来,当时公司转向使用 HDInsight。最大的挑战是数据质量差,其他挑战包括缺乏全面版本控制、部落知识和不完整的文档,以及 Databricks 文档和支持在使用 R 时不成熟(Azure 中的 Databricks 实现仅在该项目开始前几个月就已经普遍可用)。为了解决这些关键挑战,在我们完成实施工作之后,我提出了关于自动化、配置和版本控制、数据问题的分离、文档以及他们的数据、平台和建模团队之间的对齐的建议。我们的工作说服了最初非常怀疑的首席数据科学家,认为 Databricks 是正确的选择,他们明确表示,在我们离开后,他们的目标是尽快将其余模型迁移到 Databricks。这是一次令人着迷的采访,涉及了很多话题,我觉得我对开源软件有了很多了解。希望了解更多的读者可以访问 SPR 公司网站或 Erik Gfesser 的网站。












