Download PDF version of this article PDF

声明式机器学习系统

机器学习的未来将取决于它是否掌握在我们其余人手中。

Piero Molino 和 Christopher Ré

在过去的 20 年里,ML(机器学习)逐渐从一项学术活动转变为一种普及的技术,几乎应用于计算的各个方面。ML 驱动的产品现在嵌入到我们数字生活的方方面面:从观看推荐,到洞察我们的搜索意图,再到为消费者和企业环境中的虚拟助手提供动力。此外,近期 ML 在自然科学应用方面的成功表明,ML 可用于解决当今人类面临的一些最棘手的现实世界问题。19

由于这些原因,ML 已成为科技公司战略的核心,并比以往任何时候都更受学术界的关注。促成当前以 ML 为中心的计算世界的旅程,是由几个因素共同加速的,包括硬件的改进,从而实现了大规模并行处理;数据基础设施的改进,从而实现了训练大多数 ML 模型所需的海量数据集的存储和消费;以及算法的改进,从而实现了更好的性能和扩展。

尽管取得了这些成功,但这些 ML 应用实例仅仅是冰山一角。目前,训练和使用 ML 模型的人员通常是在大型组织内工作、具有多年学习经验的资深开发人员,但下一波 ML 系统应该允许数量更多的人,可能无需任何编码技能,即可执行相同的任务。这些新的 ML 系统将不需要用户完全理解模型是如何训练和用于获得预测的所有细节(这是一个巨大的入门门槛),而是将为他们提供一个更抽象、要求更低、更熟悉的界面。声明式界面非常适合这一目标,它隐藏了复杂性,有利于关注点分离,并最终提高生产力。

我们通过开发两个声明式 ML 系统——Overton16 和 Ludwig13——研究了这种抽象界面,这两个系统只需要用户声明他们的数据模式(输入的名称和类型)和任务,而无需编写底层 ML 代码。本文的目标是描述 ML 系统目前的结构,强调哪些因素对于 ML 项目的成功至关重要,哪些因素将决定 ML 的更广泛应用,当前 ML 系统面临的问题,以及我们开发的系统如何解决这些问题。最后,本文描述了从 ML 和系统多年来的发展轨迹中可以学到什么,以及下一代 ML 系统将会是什么样子。

 

软件工程与 ML 的结合

在 ML 的成功中,一个未被充分重视的因素是对生产现实世界 ML 应用程序的过程的理解的提高,以及它与传统软件开发的不同之处。构建一个可用的 ML 应用程序需要一套新的抽象概念和组件,David Sculley 等人18 对此进行了很好的描述,他们还指出了 ML 项目的特殊性方面如何导致技术债务的大幅增加(例如,返工通过偷工减料而不是遵循软件工程原则获得的解决方案的成本)。ML 开发的这些定制方面与软件工程实践相反,主要原因是每一步都存在大量的不确定性,这导致了更面向服务的开发过程。1

尽管每个 ML 项目都有其定制的方面,但研究人员首先,然后是行业,提炼出通用的模式,这些模式抽象了构建 ML 项目中最机械的部分,形成了一套工具、系统和平台。例如,考虑一下 scikit-learn、TensorFlow、PyTorch 和许多其他项目是如何实现 ML 的广泛应用,并通过更标准化的流程快速改进模型的:曾经实现一个 ML 模型需要高技能 ML 研究人员数年的工作,而现在同样的工作只需几行代码即可完成,大多数开发人员都能够编写这些代码。在最近的一篇论文中,Sara Hooker 认为,加速器硬件的可用性决定了 ML 算法的成功,甚至可能超过其内在优点。8 我们同意这种评估,并补充说,为 ML 算法量身定制的易于使用的软件包的可用性,至少与其成功和应用同等重要,甚至更为重要。

 

即将到来的 ML 系统浪潮

编译器、数据库和操作系统方面几代人的工作,可能会启发关于如何构建下一代 ML 驱动系统的新基础性问题,这些系统将允许没有 ML 专业知识的人员通过更抽象的界面来训练模型并获得预测。从整个计算历史中的这些系统中吸取的众多教训之一是,采用率的大幅提高始终伴随着关注点分离和复杂性的隐藏,如图 1 所示,这是一个近似描述学习和使用软件工具(语言、库或整个产品)的复杂性与可能能够使用它的用户数量之间关系的图示,涵盖了计算的不同领域。

Declarative Machine Learning Systems

正如编译器将底层机器代码的复杂性隐藏在更高级、更易于人类阅读的语言的外观之下,正如数据库管理系统将数据存储、索引和检索的复杂性隐藏在声明式查询语言的外观之下,ML 系统的未来也应该朝着隐藏复杂性和暴露更简单的抽象概念的方向发展,很可能是以声明式的方式。这种转变所暗示的关注点分离,将允许高技能的 ML 开发人员和研究人员改进底层模型和基础设施,这类似于编译器维护人员和数据库开发人员今天改进其系统的方式,同时允许更广泛的受众通过更高级别的抽象界面来使用 ML 技术。这很像程序员使用简单的语言编写代码,而不知道它如何在机器代码中编译,或者数据分析师编写 SQL 查询,而不知道数据库索引中使用的数据结构或查询计划器的工作原理。这些类比表明,声明式界面是下一波 ML 系统的良好候选者,隐藏复杂性和关注点分离是将 ML 带给非编码人员的关键。

以下概述了 ML 开发生命周期和 ML 平台的当前状态,以及 ML 系统的一些挑战和期望。本文描述了我们亲身参与构建新的声明式抽象概念的一些初步尝试,这些尝试旨在应对这些挑战。这些声明式抽象概念被证明对于使最终用户更容易访问 ML 非常有用,因为它避免了编写容易出错的底层 ML 代码的需要。最后,本文介绍了从这些尝试中吸取的教训,并推测了未来的发展方向。

 

机器学习系统

 

机器学习开发生命周期

人们提出了许多机器学习项目开发生命周期的描述,但图 2 中采用的描述是一个简单的粗粒度视图,由四个高级步骤组成

1. 业务需求识别

2. 数据探索和收集

3. 管道构建

4. 部署和监控

这些步骤中的每一个都由许多子步骤组成,整个过程可以看作是一个循环,从 ML 系统的部署和监控中收集的信息有助于识别下一个周期的业务需求。尽管该过程具有顺序性,但每个步骤的结果都具有高度不确定性,并且任何步骤的负面结果都可能使过程返回到之前的步骤。例如,数据探索可能会揭示可用数据不包含足够的信号来满足已识别的业务需求,或者管道构建可能会揭示,在给定可用数据的情况下,没有模型可以达到足够高的性能来满足业务需求,因此应该收集新数据。

Declarative Machine Learning Systems

由于 ML 过程固有的不确定性,为 ML 项目编写代码通常会导致特殊的实践:代码重用性很低,抽象概念之间没有逻辑/物理分离,即使在过程早期做出的微小决策也会影响下游代码的各个方面。这与数据库系统中发生的情况相反,在数据库系统中,抽象概念通常定义明确:在数据库系统中,更改数据存储方式不会更改应用程序代码或编写查询的方式,而在 ML 项目中,数据大小或分布的更改最终会更改应用程序代码,从而使代码难以重用。

 

机器学习平台和 AutoML

ML 过程的每个步骤都由一组工具和模块支持,这有可能使这些复杂系统更易于管理和理解。

不幸的是,这些工具和模块之间缺乏定义明确的标准接口,限制了模块化方法的优势,并使架构设计选择难以更改。其结果是,如果在过程的任何阶段,尤其是在早期(例如,当新版本的分词器发布时带有错误),发生错误或更改,这些系统就会遭受级联复合效应,并且所有后续部分(嵌入层、预训练模型、预测模块)都开始返回错误的结果。数据帧抽象是迄今为止组件之间唯一广泛使用的接触点,但由于不同实现之间的广泛不兼容性,它可能存在问题。

为了解决这个问题,人们正在构建更多的端到端平台——主要是在大型公司中作为整体内部工具——但这通常会以组织或技术层面的瓶颈为代价。ML 平台团队可能会成为整个组织 ML 进步的守门人(例如,当一个研究团队设计出一种不符合平台已支持模式的新算法时,这使得将新算法投入生产变得极其困难)。ML 平台可能会成为不断变化的 ML 格局中过时实践的结晶。

与此同时,AutoML 系统承诺自动化流程某些部分(特别是管道构建)中涉及的人工决策,并通过超参数优化10 和架构搜索3 等技术,抽象 ML 流程的建模部分。

AutoML 是一个很有前景的方向,尽管研究工作通常集中在优化管道的单个步骤(特别是找到模型架构),而不是优化整个管道,并且找到比普遍接受的解决方案略好一些的解决方案的成本最终可能会超过收益。在某些情况下,这会加剧可重用性问题,并与最近的发现形成对比,后者表明,至少对于在足够大的数据集上训练的自回归模型而言,架构实际上可能不是模型最重要的方面,而模型的大小才是最重要的。7 尽管如此,AutoML 带来的自动化总体上是积极的,因为它允许开发人员专注于最重要的事情,并自动化掉开发过程中更平凡和重复的部分,从而减少他们必须做出的决策数量。

这些平台和 AutoML 系统封装最佳实践并简化 ML 流程部分环节的意图非常值得赞赏,但可能会有一种更好、不那么单体的方式来思考 ML 平台,这种方式可以实现这些平台的优势,同时大幅减少其问题,并且可以同时纳入 AutoML 的优势。

 

挑战与期望

我们在开发研究和工业 ML 项目及平台的经验使我们能够识别大多数项目中常见的一系列挑战,以及一些期望的解决方案,这些挑战和解决方案促使我们开发了声明式 ML 系统。

 

• 挑战 1:指数级决策爆炸。构建一个 ML 系统涉及许多决策,所有决策都需要正确,每个阶段都会累积错误。

• 期望 1:良好的默认值和自动化。应该通过引导开发人员使用合理的默认值和可重复的自动化流程(例如,超参数优化)来减少决策的数量。


• 挑战 2:新模型至上。ML 生产团队试图构建新模型,但由于不了解以前模型的质量和失败模式,因此无法提高性能。

• 期望 2:标准化和关注质量。ML 流程中低附加值的部分应该通过标准化的评估和数据处理以及自动化的模型构建和比较来自动化,从而将注意力从编写底层 ML 代码转移到监控质量和改进监督,以及将注意力从基于单维度性能的模型排行榜转移到整体评估。


• 挑战 3:组织鸿沟。在管道中工作的团队之间存在差距,这使得代码和想法难以共享(例如,当虚拟助手项目中的实体消歧和意图分类团队不同且不共享代码库时,这会导致重复和技术债务)。

• 期望 3:通用接口。可以通过提出标准接口来提高可重用性,这些标准接口有利于模块化和实现的可互换性。


• 挑战 4:专业知识稀缺。即使在大型公司中,也没有多少开发人员能够编写底层 ML 代码。

• 期望 4:更高级别的抽象。开发人员不应该手动设置超参数或实现其自定义模型代码,除非确实必要,因为这仅占项目生命周期的一小部分,并且差异通常很小。


• 挑战 5:流程缓慢。由于需要多次迭代,某些组织中 ML 项目的开发可能需要数月或数年才能达到期望的质量。

• 期望 5:快速迭代。ML 项目的质量通过整合从每次迭代中学到的知识来提高,因此每次迭代越快,在相同的时间内可以实现的质量就越高。自动化和更高级别抽象的结合可以提高迭代速度,进而有助于提高质量。


• 挑战 6:多元化的利益相关者。许多利益相关者参与 ML 项目的成功,他们拥有不同的技能和兴趣,但只有极少数人有能力亲身操作该系统。

• 期望 6:关注点分离。通过强制关注点分离和多个用户视图,ML 系统将更容易被堆栈中的更多人访问,从而使开发人员能够专注于交付价值和改进项目结果,并使消费者更容易地利用创造的价值。

 

声明式 ML 系统

声明式 ML 系统可以通过实现大多数上述期望来履行解决上述挑战的承诺。这个术语在大量的 ML 模型和系统文献中可能被过度使用,因此,这里声明式 ML 系统的定义被限制为那些在 ML 系统应该做什么和它实际如何做之间强制分离的系统。做什么 部分可以用配置来声明,根据其复杂性和组合性,配置可以被视为一种声明式语言,并且可以包括关于 ML 系统要解决的任务以及它应该在其上训练的数据模式的信息。这可以被认为是一种低代码/无代码/零代码方法,因为声明式配置不是一种命令式语言,在命令式语言中指定了 如何做,因此声明式 ML 系统的用户不需要知道如何实现 ML 模型或管道,就像编写 SQL 查询的人不需要了解数据库索引和查询计划一样。声明式配置被翻译/编译成可训练的 ML 管道,该管道尊重提供的模式,然后可以使用训练后的管道来获得预测。

多年来,人们提出了许多声明式 ML 方法,其中大多数方法使用逻辑或概率论,或两者都作为其主要的声明式界面。此类方法的一些示例包括概率图模型9 及其对关系数据的扩展,例如概率关系模型5,12 和马尔可夫逻辑网络2,或纯粹的逻辑表示,例如 Prolog 和 Datalog。在这些模型中,领域知识可以指定为表示模型结构的变量(和关系)之间的依赖关系及其作为自由参数的强度。自由参数和结构都可以从数据中学习。这些方法是声明式的,因为它们将规范语义与推理算法分离开来。

然而,对这些模型执行推理通常很困难,并且可扩展性成为一个主要挑战。已经引入了 Tuffy14、DeepDive21 等方法来解决这个问题。尽管如此,通过将推理与表示分离,这些模型在允许声明多任务和高度联合模型方面做得很好,但通常性能不如更强大的特征驱动引擎(例如,基于深度学习的方法)。这些声明式 ML 模型与基于其范围的系统区分开来;后者侧重于声明式地定义整个生产 ML 管道。

其他潜在的更高级别的抽象概念隐藏了 ML 管道部分环节的复杂性,它们有其自身的优点,但我们不认为它们是声明式 ML 系统。此类其他抽象概念的示例可能是允许用户(ML 开发人员)编写更简单的 ML 代码的库,方法是消除必须编写神经网络层实现(如 Keras 所做的那样)或必须编写可分布式和可并行化的 for 循环(如 PyTorch Lightning 所做的那样)的负担。诸如 Caffe 之类的其他抽象概念允许通过声明其架构的层来编写深度神经网络,但它们是在接近命令式语言的粒度级别上执行此操作的。最后,诸如 Thinc 之类的抽象概念为参数化模型提供了强大的配置系统,但也需要编写可通过配置系统参数化的 ML 代码,因此没有将 做什么如何做 分离开来。

 

数据优先

自 90 年代以来,集成数据挖掘和 ML 工具一直是几项主要研究和工业工作的重点。例如,Oracle 的 Data Miner 于 2001 年发布,其特点是使用高级 SQL 风格的语法来使用模型,并支持在 Java 中或通过 PMML(预测模型标记语言)标准在外部定义的模型。这些模型实际上是围绕用户定义的函数的语法,用于执行过滤或推理。当时,ML 模型是使用专门的求解器专门构建的,这些求解器需要大量使用线性代数软件包(例如,L-BFGS 是 ML 模型中最流行的软件包之一)。

然而,ML 社区开始意识到,一种极其简单的经典算法,称为 SGD(随机梯度下降),或增量梯度方法,可以用于训练许多重要的 ML 模型。Bismarck 项目4 表明,SGD 可以利用数据库系统中已广泛可用的现有数据处理原语(与 SciDB 相比,SciDB 从线性代数的角度重新思考了整个数据库)。

反过来,集成梯度下降及其变体允许数据库管理系统管理训练。这导致了一种新型系统的出现,该系统集成了训练和推理。它们提供了 SQL 语法扩展,以声明式方式训练模型,从而在数据库内部管理训练和部署。此类系统的示例包括 Bismarck、MADlib6(已集成到 Impala、Oracle、Greenplum 等中)和 MLlib11。Bismarck 和 MADlib 中提出的 SQL 扩展仍然很流行,因为这种方法的变体已集成到 Google 的 BigQuery17 的建模语言中,以及集成到 SQLFlow20 等现代开源系统中。

以数据为中心的观点的优势在于,可以从数据所在的同一环境中使模型可用,从而避免了可能复杂的数据管道。出现的一个问题是,通过将模型训练作为 SQL 中的原语公开,用户无法精细控制建模过程。对于某些类别的模型,这变成了一个巨大的挑战,因为将数据管道传输到模型的痛苦(这些系统大大减少了这种痛苦)被执行特征化和调整模型的痛苦所掩盖。结果,许多模型存在于数据库之外。

 

模型优先

在深度学习模型在计算机视觉、语音识别和 NLP(自然语言处理)方面取得成功之后,研究和工业界的重点都转向了模型优先的方法,在这种方法中,训练过程更加复杂,并成为主要关注点。反向传播和微分的错误实现比数据预处理更会影响 ML 项目的性能,并且在 GPU 等加速硬件上高效计算深度学习算法,将训练速度太慢的模型转变为某些 ML 问题的标准解决方案,特别是感知问题。实际上,拥有 GPGPU(通用 GPU)库的高效包装器比通用的数据预处理管道更有价值。TensorFlow 和 PyTorch 等库专注于抽象张量计算的底层 C 代码的复杂性。

这些库的可用性使模型构建更简单,因此研究人员和从业人员开始共享他们的模型,并将其他人的模型调整为他们的目标。这种迁移(部分)预训练模型并在新任务上对其进行调整的过程从词嵌入开始,但后来在计算机视觉中被采用,现在通过 Hugging Face 的 Transformers 等库使其更容易。

Overton(在 Apple 内部构建)和 Ludwig(Uber 的开源系统)都是模型优先的,并且专注于现代深度学习模型,但它们也具有数据优先方法的一些特征(特别是声明式性质),通过增加关注点分离,并且它们都能够使用迁移学习。

 

Overton 简述

Overton16 源于本文开头表达的相同观察:商品工具改变了 ML 的格局,以至于可以构建能够将开发人员向上移动堆栈的工具,从而允许用户专注于监督的质量和数量。Overton 的设计旨在确保人们无需为搜索、信息提取、问答、命名实体消歧和其他任务的生产应用程序编写新模型,同时通过摄取额外的相关数据来获得最终部署模型的高质量结果,从而轻松评估模型并提高性能。

受关系数据库的启发,用户将声明一个模式,该模式描述名为 payload 的传入数据源。此外,用户还将描述任务之间的高级数据流,可以选择使用多个(弱)监督源,如图 3 所示,这是一个 Overton 应用程序应用于复杂 NLP 任务的示例。左侧是一个文本片段的示例数据记录,包含其 payload(输入、查询、分词和候选实体)和任务(输出、词性、实体类型、意图和意图参数);中间是 Overton 模式,详细说明了输入和输出的 payload 以及任务,以及它们各自的类型和参数;右侧是一个调整规范,详细说明了粗粒度架构选项,Overton 将从中为每个 payload 选择和比较。

Declarative Machine Learning Systems

该系统能够使用这些基本信息来编译可训练模型(包括数据预处理和符号映射);使用数据编程技术结合监督;15 在 TensorFlow、PyTorch 或 Core ML 中编译模型;生成性能报告;最后以 Core ML、TensorFlow 或 ONNX(开放神经网络交换)导出可部署模型。

一个关键的技术思想是,诸如架构搜索或超参数优化之类的许多子问题都可以通过简单的方法来完成,例如粗粒度架构搜索(仅选择架构类,而不是其所有内部超参数)或非常简单的网格搜索。用户可以覆盖其中一些决策,但自定义选项在运行时没有经过大量优化。其他功能包括多任务学习、数据切片和预训练模型的使用。

Overton 用户的角色变为监控性能,通过添加新示例和提供新形式的监督来提高监督质量;他们不需要用底层 ML 代码编写模型。Overton 在 Apple 的搜索和问答应用程序中实现了质量的大幅提升(错误减少了 40% 到 82%);因此,工程团队的规模大大缩小,并且没有人编写底层 ML 代码。

 

Ludwig 简述

Ludwig13 是一个系统,它允许其用户通过声明式配置来构建端到端深度学习管道,训练它们,并使用它们来获得预测。管道包括将原始数据转换为张量的数据预处理、模型架构构建、训练循环、预测、数据后处理和管道评估。Ludwig 还包括一个用于模型性能分析和比较的可视化模块,以及一个声明式超参数优化模块。

Ludwig 的一个关键思想是,它将数据模式和任务都抽象为数据类型特征接口,以便用户只需要定义输入和输出特征的列表,以及它们的名称和数据类型。这允许模块化和可扩展性:每次实例化包含文本特征的模型时,都会重用相同的文本预处理代码和相同的文本编码架构代码,而例如,每次将集合特征指定为输出时,都会采用相同的多标签分类代码用于预测和评估。

这种灵活性和抽象性是可能的,因为 Ludwig 对其构建的深度学习模型的结构持主张,遵循 Molino 等人13 引入的 ECD(编码器-组合器-解码器)架构,该架构允许轻松定义多模态和多任务模型,具体取决于训练数据中可用的输入和输出的数据类型。ECD 架构还定义了精确的接口,这大大提高了代码重用性和可扩展性:例如,通过强制图像编码器的输入和输出张量的维度,该架构允许图像编码的许多可互换实现(例如,卷积神经网络堆栈、残差块堆栈或 Transformer 层堆栈),并且在配置中选择使用哪个只需要更改一个字符串参数。

Ludwig 的通用性在于,根据配置中声明的输入和输出类型的组合,从 ECD 架构实例化的特定模型解决了不同的任务:文本输入和类别输出将使 Ludwig 编译文本分类架构,而图像输入和文本输出将导致图像字幕系统,而图像和文本输入以及文本输出将导致视觉问答模型。此外,基本的 Ludwig 配置易于编写,并隐藏了构建深度学习模型的大部分复杂性,但同时它们允许用户指定架构、训练循环和预处理的所有细节(如果他们愿意)。

图 4 显示了 Ludwig 配置的三个示例:(A)一个简单的文本分类器,其中包含有关已分类消息作者的附加结构化信息;(B)一个图像字幕示例;(C)一个详细的配置,用于给定书籍的标题和销售数据来预测其用户评分和标签的模型。A 和 B 显示了简单的配置,而 C 显示了每个编码器、组合器和解码器的控制程度,以及训练和预处理参数,同时还强调了 Ludwig 如何支持每个可能的配置参数的超参数优化。图 4(C) 中显示的声明式超参数优化部分使得自动化架构、训练和预处理决策成为可能。

Declarative Machine Learning Systems

最后,Ludwig 既是一个模块化系统,又是一个端到端系统:内部结构高度模块化,以便 Ludwig 开发人员可以添加选项、改进现有选项并重用代码,但从 Ludwig 用户的角度来看,它是完全端到端的(包括处理、训练、超参数优化和评估)。

 

相似之处与不同之处

Overton 和 Ludwig 尽管完全独立开发,但在相似的设计决策上趋于一致——特别是,在采用声明式配置方面,该配置包括(尽管语法不同)输入数据模式以及模型应在 Overton 中解决的任务的概念,以及 Ludwig 中类似的输入和输出特征的概念。这两个系统都具有与数据关联的类型概念,这些类型告知它们构建的管道的部分环节。

这两个系统的不同之处在于某些假设、某些功能及其重点。Overton 更关注能够以各种格式编译其模型——特别是对于部署——而 Ludwig 只有一条生产化路线。Overton 还允许更明确地定义数据相关方面,例如弱监督和数据切片。另一方面,Ludwig 凭借 ECD 架构的组合性,涵盖了更广泛的用例,其中输入和输出的不同组合可以定义不同的 ML 任务。

尽管存在差异,但这两个系统都解决了本文前面强调的一些挑战。这两个系统都通过自动化生命周期的部分环节(期望 1)来引导开发人员做出更少的决策,并通过提供架构和评估的标准实现,这些评估也可以以更全面的方式组合(期望 2),来引导他们重用已提供给他们的模型并彻底分析它们。

这两个系统中的接口以及数据类型和相关的更高级别抽象(期望 4)有利于代码重用(期望 3)并解决了专业知识稀缺的问题。声明式配置提高了模型迭代的速度(期望 5),因为开发人员只需要更改声明中的详细信息,而无需重写具有级联效应的代码。这两个系统还在一定程度上提供了关注点分离(期望 6):它们将添加新模型、类型和特性的系统开发人员与使用声明式界面的用户分离开来。

 

下一步是什么?

Overton 和 Ludwig 在科技公司真实场景中的应用表明,它们实际上至少解决了这些公司面临的一些具体问题。通过将它们的优势与声明式 ML 系统的数据优先时代的更紧密的数据集成相结合,可以挖掘出更多的价值。最近深度学习工作的新浪潮表明,借助相对简单的构建模块和 AutoML,可能不再需要对训练和调整过程进行精细控制,从而解决了数据优先方法未解决的主要痛点,并为趋同于新的、更高级别的系统打开了大门,这些系统可以无缝集成模型训练、推理和数据。

在这方面,可以从计算历史中吸取教训,通过观察导致通用系统取代定制解决方案的过程

• 用户数量。ML 需要更高级别的抽象概念,不仅是为了使其得到更广泛的应用,而且是为了让没有编码技能的人员开发、训练、改进和使用 ML。为了再次与数据库系统进行类比,我们仍然处于 ML 的 COBOL 时代;正如 SQL 允许更多的人编写数据库应用程序代码一样,ML 也会发生同样的情况。

• 明确的用户角色。 并非每个与未来机器学习系统交互的人员都接受过机器学习、统计学甚至计算机科学方面的培训。正如数据库发展到数据库开发人员实现更快的算法、数据库管理员管理实例安装和配置、数据库用户编写应用程序代码以及最终用户获得对其请求的快速解答之间存在明显分离的程度一样,预计这种角色分离将在机器学习系统中出现。

• 性能优化。 更抽象的系统往往会在表达性或性能方面做出妥协。Ludwig 达到最先进水平,而 Overton 替换生产系统表明这可能已经是一种错误的权衡。编译器的历史表明了类似的模式:随着时间的推移,优化的编译器通常可以击败手工调整的机器代码内核,尽管任务的复杂性最初可能表明情况并非如此。这方面的进展将导致定制化的解决方案,这些解决方案可能仅限于组织内(不断增长的)ML 任务长尾中肥尾部分的高度特定任务,即使是微小的改进也很有价值,类似于如今人们可能想要编写汇编代码的关键任务用例。

• 系统和库之间的共生关系。 未来可能会有更多的机器学习库,它们将共存并以良性循环的方式帮助改进机器学习系统。在计算历史上,这种情况已经一次又一次地发生;最近的一个例子是全文索引库(如 Apache Lucene)的出现,填补了当时大多数数据库管理系统 (DBMS) 存在的功能空白,Lucene 最初用于定制应用程序,后来被用作完整搜索系统(如 Elasticsearch 和 Apache Solr)的基础,最终被集成到数据库管理系统(如 OrientDB、GraphDB 等)中。声明式机器学习系统仍面临一些开放性挑战:它们必须证明它们能够应对未来机器学习研究带来的变化,支持多样化的训练方案,并表明它们可以表示的任务类型涵盖了很大一部分实际应用。对此尚无定论。

当技术能够被比构建它们的人更多的人利用时,技术就会改变世界,因此我们相信机器学习的未来及其对每个人生活的影响最终取决于将机器学习技术掌握在我们其余人手中的努力。

 

致谢

作者要感谢 Antonio Vergari、Karan Goel、Sahaana Suri、Chip Huyen、Dan Fu、Arun Kumar 和 Michael Cafarella 提出的富有洞察力的评论和建议。

 

参考文献

1. Casado, M., Bornstein, M. 2020. AI 的新业务(以及它与传统软件的不同之处)。Andreessen Horowitz; https://a16z.com/2020/02/16/the-new-business-of-ai-and-how-its-different-from-traditional-software/.

2. Domingos, P. M. 2004. 马尔可夫逻辑网络的真实世界学习。《第 15 届欧洲机器学习会议论文集》17; https://dl.acm.org/doi/10.1007/978-3-540-30115-8_4.

3. Elsken, T., Metzen, J. H., Hutter, F. 2019. 神经架构搜索:综述。《机器学习研究杂志》20, 1-21; https://www.jmlr.org/papers/volume20/18-598/18-598.pdf.

4. Feng, X., Kumar, A., Recht, B., Ré, C. 2012. 面向 RDBMS 内分析的统一架构。《 SIGMOD 国际数据管理会议论文集》,325-336; https://dl.acm.org/doi/10.1145/2213836.2213874.

5. Friedman, N., Getoor, L., Koller, D., Pfeffer, A. 1999. 学习概率关系模型。《第 16 届国际人工智能联合会议论文集》,1300-1307; https://dl.acm.org/doi/10.5555/1624312.1624404.

6. Hellerstein, J. M., Ré, C., Schoppmann, F., Wang, D. Z., Fratkin, E., Gorajek, A., Ng, K. S., Welton, C., Feng, X., Li, K., Kumar, A. 2012. MADlib 分析库:或 MAD 技能,SQL。《超大型数据库基金会论文集》5(12), 1700-1711; https://dl.acm.org/doi/10.14778/2367502.2367510.

7. Henighan, T., et al. 2020. 自回归生成建模的缩放定律。arXiv; https://arxiv.org/abs/2010.14701.

8. Hooker, S. 2020. 硬件彩票。arXiv; https://arxiv.org/abs/2009.06489.

9. Koller, D., Friedman, N. 2009. 概率图模型:原理与技术。 自适应计算与机器学习系列。麻省理工学院出版社; https://mitpress.mit.edu/books/probabilistic-graphical-models.

10. Li, L., Jamieson, K. G., DeSalvo, G., Rostamizadeh, A., Talwalkar, A. 2017. Hyperband:一种新颖的基于 bandit 的超参数优化方法。《机器学习研究杂志》18 (1), 6765-6816; https://dl.acm.org/doi/abs/10.5555/3122009.3242042.

11. Meng, X., Bradley, J. K., Yavuz, B., Sparks, E. R., Venkataraman, S., Liu, D., Freeman, J., Tsai, D. B., Amde, M., Owen, S., Xin, D., Xin, R., Franklin, M. J., Zadeh, R., Zaharia, M., Talwalkar, A. 2016. MLlib:Apache Spark 中的机器学习。《机器学习研究杂志》17(1), 1235-1241; https://dl.acm.org/doi/10.5555/2946645.2946679.

12. Milch, B., Marthi, B., Russell, S. J., Sontag, D. A., Ong, D. L., Kolobov, A. 2005. BLOG:具有未知对象的概率模型。《第 19 届国际人工智能联合会议论文集》,爱丁堡,苏格兰编辑:L. P. Kaelbling 和 A. Saffiotti, 1352-1359。专业图书中心; https://nyuscholars.nyu.edu/en/publications/blog-probabilistic-models-with-unknown-objects.

13. Molino, P., Yaroslav Dudin, Y., Miryala, S. S. 2019. Ludwig:基于类型的声明式深度学习工具箱。arXiv; https://arxiv.org/abs/1909.07930.

14. Niu, F., Ré, C., Doan, A., Shavlik, J. W. 2011. Tuffy:使用 RDBMS 扩展马尔可夫逻辑网络中的统计推断。《超大型数据库基金会论文集》4(6), 373-384; https://dl.acm.org/doi/10.14778/1978665.1978669.

15. Ratner, A. J., De Sa, C., Wu, S., Selsam, D., Ré, C. 2016. 数据编程:快速创建大型训练集。《第 30 届国际神经信息处理系统会议论文集》,3574-3582; https://dl.acm.org/doi/10.5555/3157382.3157497.

16. Ré, C., et al. 2020. Overton:用于监控和改进机器学习产品的数据系统。第 10 届年度创新数据系统研究会议; http://cidrdb.org/cidr2020/papers/p33-re-cidr20.pdf.

17. Sato, K. 2012. Google BigQuery 内幕。《谷歌白皮书》; https://cloud.google.com/files/BigQueryTechnicalWP.pdf.

18. Sculley, D., Holt, G., Golovin, D., Davydov, E., Phillips, T., Ebner, D., Chaudhary, V., Young, M., Crespo, J.-F., Dennison, D. 2015. 机器学习系统中的隐藏技术债务。《第 28 届国际神经信息处理系统会议论文集》第 2 卷,2503-2511; https://dl.acm.org/doi/10.5555/2969442.2969519.

19. Senior, A. W., Evans, R., Jumper, J., Kirkpatrick, J., Sifre, L., Green, T., Qin, C., Žídek, A., Nelson, A. W. R., Bridgland, A., Penedones, H., Petersen, S., Simonyan, K., Crossan, S., Kohli, P., Jones, D. T., Silver, D., Kavukcuoglu, K., Hassabis, D. 2020. 使用深度学习的势函数改进蛋白质结构预测。《自然》577, 706-710; https://www.nature.com/articles/s41586-019-1923-7.

20. Wang, Y., Yang, Y., Zhu, W., Wu,Y., Yan, X., Liu, Y., Wang, Y., Xie, L., Gao, Z., Zhu, W., Chen, X., Yan, W., Tang, M., Tang, Y. 2020. SQLflow:SQL 和机器学习之间的桥梁。arXiv; https://arxiv.org/abs/2001.06846.

21. Zhang, C., et al. 2017. DeepDive:声明式知识库构建。《 通讯》60(5), 93-102; https://dl.acm.org/doi/10.1145/3060586.

 

Piero Molino 是斯坦福大学机器学习系统和算法研究人员,也是 Predibase 的首席执行官兼联合创始人。Piero 在意大利巴里大学完成了关于问答的博士学位。他曾在巴塞罗那的 Yahoo Labs 从事学习排序工作,并在纽约的 IBM Watson 从事基于深度学习的自然语言处理工作,然后加入了 Geometric Intelligence,在那里他从事基于常识的语言理解工作。在 Uber 收购 Geometric Intelligence 后,他成为 Uber AI Labs 的创始成员之一。在 Uber,他研究的课题包括对话系统、语言生成、图表示学习、计算机视觉、强化学习和元学习。他还参与了多个已部署的系统,如 COTA(用于客户支持的 ML 和 NLP 模型)、用于司机免提调度的对话系统、使用图学习的 Uber Eats 推荐系统以及串通检测。他是 Ludwig 的作者,Ludwig 是 Linux 基金会支持的开源声明式深度学习工具箱。

 

Christopher (Chris) Ré 是斯坦福大学计算机科学系的副教授。他在斯坦福人工智能实验室,隶属于统计机器学习组。他最近的工作是了解软件和硬件系统将如何因机器学习而改变,以及持续不断地努力解决数学问题。他的研究小组的研究成果已被纳入科学和人道主义工作,例如打击人口贩运,以及包括 Google Ads、GMail、YouTube 和 Apple 在内的技术和企业公司的广泛使用产品。他共同创立了四家基于其机器学习系统研究的公司,SambaNova 和 Snorkel,以及两家现已成为 Apple 一部分的公司,Lattice (DeepDive) 于 2017 年和 Inductiv (HoloClean) 于 2020 年。他的研究贡献涵盖了数据库理论、数据库系统和机器学习。他的作品在每个领域的顶级会议上都获得了最佳论文或时间考验奖。他仍然不敢相信自己获得了麦克阿瑟基金会奖学金。

 

版权所有 © 2021 归所有者/作者所有。出版权已授权给 。

acmqueue

最初发表于 Queue vol. 19, no. 3
数字图书馆 中评论本文





更多相关文章

Mark Russinovich, Ahmed Salem, Santiago Zanella-Béguelin, Yonatan Zunger - 智能的代价
大型语言模型 (LLM) 容易出现幻觉、提示注入和越狱,这对它们的大规模采用和负责任的使用构成了重大但可克服的挑战。我们认为,这些问题是固有的,当然在当前一代模型中是这样,并且可能在 LLM 本身中也是如此,因此我们的方法永远不能基于消除这些问题;相反,我们应该应用“深度防御”策略来缓解这些问题,并且在构建和使用这些系统时,要假设它们有时会在这些方面失败。


Sonja Johnson-Yu, Sanket Shah - 你对人工智能一窍不通
长期以来,很难确定人工智能到底是什么。几年前,此类讨论会演变成长达数小时的会议,绘制维恩图并尝试绘制人工智能的不同子领域。快进到 2024 年,我们现在都知道人工智能到底是什么。人工智能 = ChatGPT。或者不是。


Jim Waldo, Soline Boussard - GPT 和幻觉
本实验中的发现支持以下假设:基于 LLM 的 GPT 在更受欢迎且已达成普遍共识的提示下表现良好,但在有争议的主题或数据有限的主题上表现不佳。应用程序响应的可变性突显了模型依赖于其训练数据的数量和质量,这与依赖于多样化和可信贡献的众包系统类似。因此,虽然 GPT 可以作为许多日常任务的有用工具,但应谨慎解读它们对晦涩难懂和两极分化主题的参与。


Erik Meijer - 虚拟阴谋:将大型语言模型用作神经计算机
我们探索了大型语言模型 (LLM) 如何不仅充当数据库,而且还充当动态的、最终用户可编程的神经计算机。这种神经计算机的本机编程语言是一种受逻辑编程启发的声明式语言,它形式化并外部化了思维链推理,就像它可能发生在一个大型语言模型内部一样。





© 保留所有权利。

© . All rights reserved.