如果只能用一个词来描述2020年之后的人工智能(AI),那就是规模。支撑像ChatGPT、Google的Gemini以及Midjourney这样的应用的AI模型规模如此之大,它们消耗了全球相当大的一部分电力,并且我们可能很快就会耗尽可供训练这些模型的公开互联网数据。
AI模型规模的扩大带来了两个主要后果:
- 模型能力增强:AI模型变得更强大,可以完成更多任务,从而催生了更多应用。越来越多的人和团队利用AI提高生产力、创造经济价值,并改善生活质量。
- 模型训练资源需求高昂:训练大型语言模型(LLMs)需要数据、计算资源和专门的人才,这些资源只有少数组织能够承担。这导致了“模型即服务(Model as a Service)”的兴起:这些少数组织开发的模型被作为服务提供给他人使用。希望利用AI构建应用的任何人现在都可以使用这些模型,而无需在前期投资中构建自己的模型。
简而言之,AI应用的需求增加了,同时构建AI应用的门槛降低了。这使得AI工程——在现成模型之上构建应用的过程——成为增长最快的工程学科之一。
在机器学习(ML)模型之上构建应用并不是新鲜事。在大型语言模型崭露头角之前,AI已经为许多应用提供了动力,比如产品推荐、欺诈检测和客户流失预测。尽管生产化AI应用的许多原则保持不变,但新一代的大规模、现成模型带来了新的可能性和挑战,这也是本书关注的核心。
本章从介绍基础模型开始,它是引发AI工程爆发的关键催化剂。接下来,我将讨论一系列成功的AI用例,展示AI的优势以及当前尚未擅长的领域。随着AI能力日益扩展,预测其未来可能性变得越来越困难。然而,现有的应用模式可以帮助我们挖掘当前的机会,并为AI未来的应用方式提供线索。
最后,我将概述新AI技术栈,包括基础模型带来的变化、保持不变的部分,以及今天的AI工程师与传统ML工程师的角色有何不同。
人工智能工程的崛起
基础模型源自大型语言模型,而大型语言模型又起源于早期的语言模型。尽管像ChatGPT和GitHub Copilot这样的应用看似凭空出现,但它们实际上是几十年技术进步的结晶,最早的语言模型可追溯到1950年代。本节将追溯从语言模型到人工智能工程演变的关键突破。
从语言模型到大型语言模型
虽然语言模型存在已久,但只有通过自监督学习,它们才能发展到今天的规模。本节简要介绍语言模型和自监督学习的概念。如果你已经熟悉这些内容,可以跳过本节。
语言模型
语言模型编码了关于一种或多种语言的统计信息。直观地说,这些信息告诉我们某个词在特定上下文中出现的可能性。例如,给定上下文“My favorite color is __”,一个编码了英语的语言模型应该比“car”更频繁地预测“blue”。
语言的统计特性在几个世纪前就被发现了。在1905年的故事《跳舞的男人的冒险》中,福尔摩斯利用英语的简单统计信息解码了一系列神秘的火柴人图像。由于英语中最常见的字母是E,福尔摩斯推断最常见的火柴人图像代表字母E。
后来,克劳德·香农在第二次世界大战期间使用更复杂的统计方法解密敌方信息。他关于如何建模英语的研究成果发表于1951年的标志性论文《Printed English的预测与熵》中。该论文中介绍的许多概念,包括熵,至今仍在语言建模中使用。
在早期,语言模型仅涉及一种语言。然而,今天的语言模型可以涉及多种语言。
语言模型的基本单位是“token”。一个token可以是一个字符、一个词或词的一部分(如-tion),具体取决于模型。例如,ChatGPT背后的GPT-4模型将短语“I can’t wait to build AI applications”分解为九个token,如图1-1所示。需要注意的是,在这个例子中,单词“can’t”被分解为两个token:can和’t。你可以在OpenAI网站上查看不同OpenAI模型如何对文本进行分词。
将原始文本分解成tokens的过程称为分词(tokenization)。对于GPT-4来说,一个平均的token大约是一个单词长度的3/4。因此,100个tokens大约等于75个单词。
一个模型可以处理的所有tokens的集合就是模型的词汇表(vocabulary)。你可以使用少量的tokens来构建大量不同的单词,类似于你可以用字母表中的几个字母构造出许多单词。Mixtral 8x7B模型的词汇表大小为32,000,而GPT-4的词汇表大小为100,256。分词方法和词汇表大小由模型开发者决定。
注意 为什么语言模型使用token作为单位而不是单词或字符?主要有三个原因:
- 与字符相比,token允许模型将单词拆解为有意义的组成部分。例如,“cooking”可以被拆解为“cook”和“ing”,这两个部分都带有原单词的一些意义。
- 由于token的种类比单词少,这减少了模型的词汇表大小,从而提高了模型的效率(如第二章所讨论)。
- token还帮助模型处理未知单词。例如,一个虚构的单词“chatgpting”可以被拆解为“chatgpt”和“ing”,帮助模型理解它的结构。token在保持比单个字符更丰富的含义的同时,单位比单词更少。
语言模型主要有两种类型:掩蔽语言模型(masked language models)和自回归语言模型(autoregressive language models)。它们的区别在于模型可以使用哪些信息来预测一个token:
掩蔽语言模型 掩蔽语言模型是通过使用缺失token前后的上下文,训练模型预测序列中缺失的token。实质上,掩蔽语言模型的训练目标是能够填补空白。例如,给定上下文“My favorite __ is blue”,掩蔽语言模型应该预测空白处的内容是“color”。掩蔽语言模型的著名例子是基于变压器(transformers)的双向编码器表示(BERT)(Devlin等,2018)。
截至目前,掩蔽语言模型通常用于非生成性任务,如情感分析和文本分类。它们也用于需要理解整体上下文的任务,如代码调试,在这种任务中,模型需要理解前后的代码才能识别错误。
自回归语言模型 自回归语言模型是通过仅使用前面的tokens,训练模型预测序列中的下一个token。它预测“My favorite color is __”中的空白处会是什么。自回归模型可以不断生成一个又一个token。今天,自回归语言模型是文本生成任务中的首选模型,因此它们比掩蔽语言模型更受欢迎。
图1-2展示了这两种类型的语言模型。
语言模型的输出是开放性的。语言模型可以使用其固定的有限词汇表构建无限可能的输出。能够生成开放性输出的模型被称为生成性模型,因此有了“生成式AI”这一术语。
你可以把语言模型看作是一个完成机器:给定一段文本(提示),它试图完成这段文本。举个例子:
提示(用户提供) :“To be or not to be”
完成(语言模型输出) :“, that is the question.”
需要注意的是,完成是基于概率的预测,并不能保证一定正确。语言模型的这种概率性特征使得它们既令人兴奋又让人沮丧,我们将在第二章进一步探讨这一点。
尽管听起来简单,完成却是极其强大的。许多任务,包括翻译、总结、编码和解答数学问题,都可以被框定为完成任务。例如,给定提示:“How are you in French is …”,语言模型可能会将其完成为:“Comment ça va”,有效地实现了从一种语言到另一种语言的翻译。
另一个例子是,给定提示:
问题:Is this email likely spam? Here’s the email: <email content>
回答:
语言模型可能会将其完成为:“Likely spam”,这将使得语言模型变成一个垃圾邮件分类器。
尽管完成功能强大,但它并不等同于进行对话。例如,如果你向完成机器提问,它可能会通过添加另一个问题来完成你说的内容,而不是直接回答问题。章节《后期训练》讨论了如何使模型对用户的请求作出适当的回应。
自监督学习
语言模型只是许多机器学习(ML)算法中的一种。还有用于目标检测、主题建模、推荐系统、天气预测、股票价格预测等的模型。那么,是什么让语言模型在导致ChatGPT时刻的扩展方法中成为了核心?
答案是,语言模型可以通过自监督学习进行训练,而许多其他模型则需要监督学习。监督学习指的是使用标注数据训练机器学习算法的过程,而标注数据的获取通常既昂贵又耗时。自监督学习有助于克服数据标注的瓶颈,从而创建更大规模的数据集供模型学习,有效地让模型得以扩展。以下是其工作原理。
在监督学习中,你需要标注样本,以展示你希望模型学习的行为,然后在这些样本上训练模型。一旦训练完成,模型就可以应用于新数据。例如,为了训练一个欺诈检测模型,你使用带有“欺诈”或“非欺诈”标签的交易示例。一旦模型从这些示例中学习,你就可以使用该模型来预测一笔交易是否是欺诈。
2010年代,AI模型的成功依赖于监督学习。引发深度学习革命的模型——AlexNet(Krizhevsky等,2012)就是监督学习模型。它被训练用来分类ImageNet数据集中的100多万张图像,并将每张图像分类为1,000个类别之一,如“汽车”、“气球”或“猴子”。
监督学习的一个缺点是数据标注既昂贵又耗时。如果标注一张图像的成本是5美分,那么为ImageNet中的100万张图像标注就需要5万美元。如果你希望两个人分别标注每张图像——以便进行交叉检查——那标注成本就会翻倍。因为世界上包含的物体种类远超过1,000个,因此,要扩展模型以适应更多物体,你需要添加更多类别的标签。若要扩展到100万个类别,仅标注成本就会增加到5,000万美元。
标注日常物品是大多数人都能在没有专门训练的情况下完成的。因此,这种标注相对便宜。然而,并非所有标注任务都如此简单。例如,为英语到拉丁语的翻译模型生成拉丁文翻译就更为昂贵。而标注CT扫描图像是否显示癌症迹象,则可能是天文数字。
自监督学习有助于克服数据标注的瓶颈。在自监督学习中,模型无需明确的标签,而是从输入数据中推断标签。语言模型之所以是自监督学习的,是因为每个输入序列同时提供了标签(需要预测的token)和模型可以用来预测这些标签的上下文。例如,句子“I love street food.”可以生成六个训练样本,如表1-1所示。
表1-1. 从句子“I love street food.”生成的语言模型训练样本
| 输入(上下文) | 输出(下一个token) |
|---|---|
<BOS> | I |
<BOS>, I | love |
<BOS>, I, love | street |
<BOS>, I, love, street | food |
<BOS>, I, love, street, food | . |
<BOS>, I, love, street, food, . | <EOS> |
在表1-1中,<BOS>和<EOS>标记了序列的开始和结束。这些标记对于语言模型处理多个序列是必要的。每个标记通常被模型视为一个特殊的token。特别是结束标记非常重要,它帮助语言模型知道何时结束其响应。
注意
自监督学习不同于无监督学习。在自监督学习中,标签是从输入数据中推断出来的。而在无监督学习中,根本不需要标签。
自监督学习意味着语言模型可以从文本序列中学习,而不需要任何标注。因为文本序列无处不在——在书籍、博客文章、新闻稿和Reddit评论中——所以可以构建大量的训练数据,使得语言模型能够扩展成为大型语言模型(LLM)。
然而,LLM并不是一个科学术语。一个语言模型需要多大才能被认为是“大型”的?今天被认为大的,明天可能就会被认为是微小的。模型的大小通常通过其参数数量来衡量。参数是机器学习模型中的变量,通过训练过程进行更新。通常,尽管这并非总是如此,模型的参数越多,它学习所需行为的能力越强。
当OpenAI的首个生成式预训练变压器(GPT)模型于2018年6月发布时,它有1.17亿个参数,那时被认为是“大型”的。2019年2月,当OpenAI推出拥有15亿参数的GPT-2时,1.17亿被认为是“小型”的。截至本书写作时,拥有1000亿参数的模型被认为是“大型”的。也许有一天,这个规模会被认为是微小的。
在进入下一部分之前,我想探讨一个通常被视为理所当然的问题:为什么更大的模型需要更多的数据?更大的模型有更强的学习能力,因此需要更多的训练数据来最大化它们的性能。你也可以在小数据集上训练一个大模型,但那样会浪费计算资源。你本可以使用更小的模型在这个数据集上获得相似或更好的结果。
从大型语言模型到基础模型
虽然语言模型能够完成令人难以置信的任务,但它们仅限于文本。作为人类,我们不仅通过语言感知世界,还通过视觉、听觉、触觉等方式感知。能够处理超越文本的数据对于AI在现实世界中的运作至关重要。
因此,语言模型正在被扩展,以融合更多的数据模态。GPT-4V和Claude 3可以理解图像和文本。一些模型甚至能够理解视频、3D资产、蛋白质结构等。将更多的数据模态融入语言模型使它们变得更强大。OpenAI在其2023年发布的GPT-4V系统卡片中指出,“将额外的模态(如图像输入)融入LLM,被一些人视为AI研究和开发的关键前沿。”
尽管许多人仍然将Gemini和GPT-4V称为LLM,它们更适合被描述为基础模型。基础这个词既体现了这些模型在AI应用中的重要性,也表明它们可以根据不同的需求进行构建和扩展。
基础模型标志着AI研究传统结构的突破。长期以来,AI研究是根据数据模态进行划分的。自然语言处理(NLP)仅处理文本,计算机视觉仅处理视觉。仅限文本的模型可以用于翻译和垃圾邮件检测等任务。仅限图像的模型可以用于目标检测和图像分类。仅限音频的模型可以处理语音识别(语音转文本,STT)和语音合成(文本转语音,TTS)。
一个能够处理多种数据模态的模型也被称为多模态模型。生成性多模态模型也被称为大型多模态模型(LMM)。如果一个语言模型基于仅文本的tokens生成下一个token,一个多模态模型则根据文本和图像tokens,或模型支持的其他模态生成下一个token,如图1-3所示。
就像语言模型一样,多模态模型也需要数据来进行扩展。自监督学习同样适用于多模态模型。例如,OpenAI使用了一种称为自然语言监督的自监督变种,训练了他们的语言-图像模型CLIP(OpenAI,2021)。他们并没有手动为每张图像生成标签,而是找到了互联网上同时出现的(图像,文本)对。他们能够生成一个包含4亿个(图像,文本)对的数据集,这个数据集是ImageNet的400倍大,且无需人工标注成本。这个数据集使得CLIP成为第一个能够泛化到多个图像分类任务的模型,无需额外的训练。
注意 本书使用“基础模型”一词来指代大型语言模型和大型多模态模型。
需要注意的是,CLIP不是一个生成模型——它并不是为了生成开放性输出而训练的。CLIP是一个嵌入模型,训练目的是生成文本和图像的联合嵌入。章节《嵌入简介》会详细讨论嵌入。现在,你可以将嵌入视为旨在捕捉原始数据意义的向量。像CLIP这样的多模态嵌入模型是生成性多模态模型的核心,如Flamingo、LLaVA和Gemini(以前的Bard)等。
基础模型还标志着从任务特定模型到通用模型的过渡。之前,模型通常是为特定任务开发的,如情感分析或翻译。一个为情感分析训练的模型无法执行翻译任务,反之亦然。
得益于其规模和训练方式,基础模型能够处理广泛的任务。开箱即用的通用模型可以相对良好地执行许多任务。一个大型语言模型可以同时进行情感分析和翻译。然而,你通常可以对一个通用模型进行微调,以最大化其在特定任务上的性能。
图1-4展示了Super-NaturalInstructions基准测试用于评估基础模型的任务(Wang等,2022),为你提供了基础模型可以执行的任务类型的概念。
假设你正在与一家零售商合作,构建一个为其网站生成产品描述的应用程序。一个开箱即用的模型可能能够生成准确的描述,但可能无法捕捉品牌的语气或突出品牌的传递信息。生成的描述甚至可能充满了营销语言和陈词滥调。
你可以使用多种技术来使模型生成你想要的内容。例如,你可以设计详细的指令,并给出理想的产品描述示例。这种方法被称为提示工程(prompt engineering)。你还可以将模型连接到一个包含客户评论的数据库,模型可以利用这些评论生成更好的描述。使用数据库来补充指令被称为检索增强生成(RAG)。你还可以通过微调进一步训练模型,使用高质量的产品描述数据集进行训练。
提示工程、RAG和微调是三种非常常见的AI工程技术,你可以用它们来调整模型以满足你的需求。本书的其余部分将详细讨论这些技术。
将现有强大的模型调整到你的任务上通常比从零开始为你的任务构建一个模型要容易得多——例如,十个示例和一个周末的时间,和一百万个示例及六个月的时间。基础模型使得开发AI应用程序变得更便宜,并缩短了市场上市的时间。调整模型所需的数据量取决于你使用的技术。本书在讨论每种技术时也会涉及这个问题。然而,任务特定模型仍然有许多好处,例如它们可能小得多,使得它们更快、更便宜地使用。
是构建自己的模型还是利用现有模型,这是一个经典的“买还是做”的问题,团队需要根据自己的情况做出决定。本书中的讨论将有助于做出这个决定。
从基础模型到AI工程
AI工程指的是在基础模型的基础上构建应用程序的过程。人们已经在构建AI应用程序超过十年,这个过程通常被称为机器学习工程(ML工程)或MLOps(机器学习运维的缩写)。为什么我们现在要谈论AI工程?
如果传统的ML工程涉及开发机器学习模型,那么AI工程则利用现有的模型。强大的基础模型的可用性和可获取性导致了三个因素,这些因素共同为AI工程作为一门学科的快速发展创造了理想的条件:
因素一:通用AI能力
基础模型之所以强大,不仅是因为它们可以更好地完成现有任务,还因为它们可以完成更多的任务。以前被认为不可能的应用现在变得可能,而以前没有想到的应用也正在出现。即使是今天认为不可能的应用,明天也可能成为现实。这使得AI在更多生活方面变得更加有用,大大增加了用户基础和AI应用的需求。
例如,由于AI现在的写作水平能够媲美甚至超越人类,它可以自动化或部分自动化所有需要沟通的任务,几乎所有任务都可以自动化。AI被用来写电子邮件、回应客户请求、解释复杂的合同。任何拥有电脑的人都可以使用工具,瞬间生成定制的、高质量的图像和视频,用于创建营销材料、编辑专业头像、可视化艺术概念、插图书籍等。AI甚至可以用来合成训练数据、开发算法和编写代码,这些都将有助于训练未来更强大的模型。
因素二:AI投资增加
ChatGPT的成功促使了AI投资的急剧增加,既来自风险资本家,也来自企业。随着AI应用程序的构建成本降低、上市速度加快,AI的投资回报变得更加具有吸引力。公司纷纷将AI融入到产品和流程中。Scribd的应用研究高级经理Matt Ross告诉我,他的用例在2022年4月到2023年4月期间,估算的AI成本下降了两个数量级。
高盛研究预计,到2025年,美国的AI投资可能接近1000亿美元,全球可能接近2000亿美元。AI通常被提及为一种竞争优势。FactSet发现,2023年第二季度,每三家公司中就有一家公司在财报电话会议中提到AI,比去年增长了三倍。图1-5展示了2018年至2023年间,在财报电话会议中提到AI的标准普尔500公司数量。
根据WallStreetZen的报道,提到AI的公司在财报电话会议中的股票价格上涨幅度高于那些未提及AI的公司:前者的平均涨幅为4.6%,而后者为2.4%。目前尚不清楚这是否是因果关系(AI使这些公司更成功),还是相关性(公司成功是因为它们能够快速适应新技术)。
因素三:构建AI应用的低门槛
OpenAI和其他模型提供商普及的“模型即服务”方式使得利用AI构建应用程序变得更加容易。在这种方式中,模型通过API暴露,接收用户查询并返回模型输出。如果没有这些API,使用AI模型就需要拥有托管和服务该模型的基础设施。这些API让你能够通过单一的API调用访问强大的模型。
不仅如此,AI还使得以最少的编程构建应用程序成为可能。首先,AI可以为你编写代码,允许没有软件工程背景的人快速将自己的想法转化为代码,并将其呈现给用户。其次,你可以用简单的英语与这些模型互动,而不必使用编程语言。现在,任何人——我指的就是任何人——都可以开发AI应用程序。
由于开发基础模型需要大量资源,这一过程目前仅限于大公司(如Google、Meta、Microsoft、百度、腾讯)、政府(如日本、阿联酋)和雄心勃勃、资金充足的初创公司(如OpenAI、Anthropic、Mistral)。在2022年9月的采访中,OpenAI的首席执行官Sam Altman表示,对于绝大多数人来说,最大的机会将是将这些模型适应到特定的应用场景中。
世界迅速抓住了这个机会。AI工程已经快速成为最迅速发展的工程学科之一,甚至可能是增长最快的学科。AI工程工具的普及速度超过了以往任何软件工程工具。仅在两年内,四个开源AI工程工具(AutoGPT、Stable Diffusion eb UI、LangChain、Ollama)在GitHub上的星标数已经超过了比特币。它们有望在星标数上超越最流行的Web开发框架,包括React和Vue。图1-6展示了AI工程工具与比特币、Vue和React的GitHub星标增长情况。
2023年8月的一项LinkedIn调查显示,越来越多的专业人士在个人资料中添加了“生成式AI”、“ChatGPT”、“提示工程”和“提示制作”等术语,每个月的增长平均达到75%。ComputerWorld宣称,“教会AI如何表现”是增长最快的职业技能。
为什么使用“AI工程”这个术语?
有许多术语被用来描述在基础模型上构建应用程序的过程,包括ML工程、MLOps、AIOps、LLMOps等。那么,为什么我在本书中选择使用“AI工程”这一术语呢?
我没有选择使用“ML工程”这个术语,因为正如在《AI工程与ML工程》的讨论中所提到的,使用基础模型与使用传统的机器学习(ML)模型在多个重要方面有所不同。单纯的“ML工程”不足以体现这一差异。然而,“ML工程”是一个很好的术语,可以涵盖这两种过程。
我也没有选择所有以“Ops”结尾的术语,因为虽然这个过程确实包含一些运维(operations)组件,但重点更多是在于调整(工程)基础模型,以实现你所需要的功能。
最后,我对20位在基础模型上开发应用程序的人进行了调查,询问他们会使用什么术语来描述他们所做的事情。大多数人倾向于选择“AI工程”。我决定采纳大家的意见。
基础模型的应用场景
如果你还没有开始构建AI应用程序,我希望前面的章节已经说服你,现在是一个绝佳的时机。如果你已经有了应用的想法,可能想跳到《规划AI应用程序》部分。如果你正在寻找灵感,本节将涵盖一系列已经在行业中证明有效的有前景的应用场景。
使用基础模型构建的潜在应用似乎是无穷无尽的。无论你想到什么应用场景,可能都有相应的AI解决方案。列出所有AI的潜在应用是不可能的。
即使试图对这些应用场景进行分类也是一项挑战,因为不同的调查使用了不同的分类方法。例如,Amazon Web Services(AWS)将企业生成式AI的应用场景分为三个大类:客户体验、员工生产力和流程优化。2024年O'Reilly的一项调查将应用场景分为八类:编程、数据分析、客户支持、营销文案、其他文案、研究、网页设计和艺术。
一些组织,如德勤,将应用场景按照价值捕捉来分类,比如成本减少、流程效率、增长和加速创新。Gartner对价值捕捉的分类中还包括了“业务连续性”这一类,意味着如果一个组织不采纳生成式AI,它可能会面临倒闭的风险。Gartner在2023年对2,500名高管的调查中,7%的人表示,业务连续性是他们采纳生成式AI的动力。
Eloundou等人(2023)的研究很好地展示了不同职业对AI的暴露程度。他们将一个任务定义为“暴露的任务”,如果AI和AI驱动的软件能将完成该任务所需的时间减少至少50%。一个职业的暴露度为80%,意味着该职业80%的任务是暴露的。根据这项研究,暴露度达到100%或接近100%的职业包括口译员和翻译员、税务准备员、网页设计师和作家。部分数据如表1-2所示。不出所料,完全没有暴露于AI的职业包括厨师、石匠和运动员。这项研究为我们提供了AI擅长的应用场景的一个很好的参考。
表1-2. 人类标注的暴露于AI的职业(按暴露程度排序) α表示直接暴露于AI模型,β和ζ表示暴露于AI驱动的软件。表格来自Eloundou等(2023)。
| 组别 | 职业 | %暴露度 |
|---|---|---|
| 人类α | 口译员和翻译员 | 76.5 |
| 人类α | 调查研究员 | 75.0 |
| 人类α | 诗人、歌词作家和创意作家 | 68.8 |
| 人类α | 动物科学家 | 66.7 |
| 人类α | 公共关系专家 | 66.7 |
| 人类β | 调查研究员 | 84.4 |
| 人类β | 作家和作者 | 82.5 |
| 人类β | 口译员和翻译员 | 82.4 |
| 人类β | 公共关系专家 | 80.6 |
| 人类β | 动物科学家 | 77.8 |
| 人类ζ | 数学家 | 100.0 |
| 人类ζ | 税务准备员 | 100.0 |
| 人类ζ | 金融定量分析师 | 100.0 |
| 人类ζ | 作家和作者 | 100.0 |
| 人类ζ | 网页和数字界面设计师 | 100.0 |
在分析应用场景时,我考虑了企业和消费者应用两方面。为了理解企业应用场景,我采访了50家公司,了解它们的AI战略,并阅读了100多篇案例研究。为了了解消费者应用,我分析了205个在GitHub上至少获得500个星标的开源AI应用程序。我将这些应用程序分为八个类别,如表1-3所示。这里的有限列表最好作为参考。当你在第2章学习如何构建基础模型并在第3章学习如何评估它们时,你将能够更好地了解基础模型可以和应该用于哪些应用场景。
表1-3. 企业和消费者应用中的常见生成式AI应用场景
| 类别 | 消费者应用场景示例 | 企业应用场景示例 |
|---|---|---|
| 编程 | 编码 | 编码 |
| 图像和视频制作 | 照片和视频编辑 | |
| 设计 | 演示文稿 | 广告生成 |
| 写作 | 电子邮件 | 社交媒体和博客文章、文案撰写、搜索引擎优化(SEO) |
| 教育 | 辅导 | 论文评分、员工入职培训、员工技能提升训练 |
| 会话型机器人 | 普通聊天机器人 | 客户支持、产品助手 |
| 信息汇聚 | 摘要生成 | 市场研究 |
| 数据组织 | 图像搜索、记忆管理 | 知识管理、文档处理 |
| 工作流自动化 | 旅行规划、活动规划 | 数据提取、数据录入和注释、潜在客户生成 |
由于基础模型是通用的,基于它们构建的应用程序可以解决许多问题。这意味着一个应用程序可以属于多个类别。例如,一个机器人可以提供陪伴功能,也可以汇聚信息。一个应用程序可以帮助你从PDF中提取结构化数据,并回答关于该PDF的问题。
图1-7展示了这些应用场景在205个开源应用程序中的分布。需要注意的是,教育、数据组织和写作应用场景的占比较小,并不意味着这些应用场景不受欢迎。这只是意味着这些应用程序不是开源的。这些应用程序的构建者可能会觉得它们更适合企业应用场景。
企业界通常更倾向于选择风险较低的应用程序。例如,2024年a16z的增长报告显示,企业在部署面向内部的应用程序(如内部知识管理)时,比面向外部的应用程序(如客户支持聊天机器人)速度更快,如图1-8所示。内部应用程序帮助公司在减少与数据隐私、合规性和潜在灾难性故障相关的风险的同时,发展其AI工程专业知识。类似地,尽管基础模型是开放式的,可以用于任何任务,但许多基于它们构建的应用程序仍然是封闭式的,例如分类任务。分类任务更容易评估,因此它们的风险更容易估算。
即使在看到数百个AI应用后,我仍然每周都会发现一些让我惊讶的新应用。在互联网的早期,很少有人预见到社交媒体有一天会成为互联网上主导的应用场景。当我们学会最大限度地利用AI时,最终会占主导地位的应用场景可能会让我们感到惊讶。幸运的话,这个惊讶可能是一个好消息。
编程
在多项生成式AI调查中,编程无疑是最受欢迎的应用场景。AI编程工具之所以受欢迎,不仅因为AI擅长编程,还因为早期的AI工程师大多是程序员,他们更容易接触到编程挑战。
基础模型在生产环境中的早期成功之一是代码补全工具GitHub Copilot,它在发布仅两年后,年经常性收入突破了1亿美元。截至本书写作时,AI驱动的编程初创公司已筹集了数亿资金,Magic在2024年8月筹集了3.2亿美元,Anysphere筹集了6000万美元。像gpt-engineer和screenshot-to-code这样的开源编程工具在一年内就获得了5万个GitHub星标,更多类似的工具正在快速推出。
除了帮助进行通用编程的工具外,许多工具还专门用于特定的编程任务。以下是这些任务的一些示例:
- 从网页和PDF中提取结构化数据(AgentGPT)
- 将英语转换为代码(DB-GPT、SQL Chat、PandasAI)
- 给定设计或截图,生成代码渲染为一个与给定图像相似的网站(screenshot-to-code、draw-a-ui)
- 从一种编程语言或框架转换为另一种(GPT-Migrate、AI Code Translator)
- 编写文档(Autodoc)
- 创建测试(PentestGPT)
- 生成提交信息(AI Commits)
显然,AI可以完成许多软件工程任务。问题是,AI是否能够完全自动化软件工程。在这个问题的一个极端,NVIDIA的CEO Jensen Huang预测,AI将取代人类软件工程师,我们应该停止说“孩子们应该学习编程”。在一段泄露的录音中,AWS的CEO Matt Garman表示,在不久的将来,大多数开发人员将停止编写代码。他并不意味着软件开发者将消失,而是他们的工作将发生变化。
在另一端,有许多软件工程师确信他们永远不会被AI取代,既因为技术原因,也因为情感原因(人们不喜欢承认自己可能会被取代)。
软件工程包括许多任务。AI在某些任务上表现得更好。麦肯锡的研究人员发现,AI可以帮助开发人员在文档编写方面提高两倍的生产力,在代码生成和代码重构方面提高25%到50%的生产力。对于高度复杂的任务,生产力的提升较少,如图1-9所示。在与AI编程工具开发人员的对话中,许多人告诉我,他们注意到AI在前端开发方面比后端开发更为擅长。
无论AI是否会取代软件工程师,AI无疑可以提高他们的生产力。这意味着公司现在可以用更少的工程师完成更多的工作。AI还可能颠覆外包行业,因为外包的任务通常是公司核心业务之外的简单任务。
图像和视频制作
由于其概率性特征,AI在创意任务中表现出色。一些最成功的AI初创公司是创意应用程序,如用于图像生成的Midjourney、用于照片编辑的Adobe Firefly,以及用于视频生成的Runway、Pika Labs和Sora。到2023年底,Midjourney在成立一年半后,已实现了2亿美元的年经常性收入。截至2023年12月,Apple App Store上排名前10的免费图形与设计类应用中,半数包含“AI”字样。我猜测,很快图形和设计应用将默认集成AI,且不再需要在名称中加入“AI”这个词。第2章将更详细地讨论AI的概率性特征。
现在,使用AI生成社交媒体的头像图像已变得非常普遍,从LinkedIn到TikTok。许多求职者认为,AI生成的头像照片可以帮助他们展示最佳形象,并增加找到工作的机会。AI生成的头像照片的认知已经发生了显著变化。在2019年,Facebook出于安全原因禁止使用AI生成的头像照片的账户。但到了2023年,许多社交媒体应用提供了让用户使用AI生成头像照片的工具。
对于企业来说,广告和营销已经迅速开始融入AI。AI可以直接用于生成促销图像和视频。它可以帮助进行头脑风暴或生成初稿,供人工专家迭代。你可以使用AI生成多个广告,并测试哪个广告最适合目标受众。AI还可以根据季节和地点生成广告的不同版本。例如,你可以使用AI在秋天改变树叶的颜色,或者在冬天在地面上添加雪。
写作
AI早已被用于辅助写作。如果你使用智能手机,可能已经熟悉自动校正和自动补全功能,它们都由AI驱动。写作是AI的理想应用场景,因为我们写作的频率很高,写作过程可能相当枯燥,而且我们对错误有较高的容忍度。如果模型提出的建议你不喜欢,你可以选择忽略它。
考虑到LLM(大型语言模型)是为了文本补全而训练的,因此它们擅长写作并不令人惊讶。为了研究ChatGPT对写作的影响,麻省理工学院(MIT)的一项研究(Noy和Zhang,2023)将特定职业的写作任务分配给453名大学教育背景的专业人士,并随机让其中一半接触ChatGPT。研究结果显示,接触ChatGPT的受试者平均完成时间减少了40%,输出质量提高了18%。ChatGPT有助于缩小员工之间输出质量的差距,这意味着它对那些写作倾向较低的人更有帮助。在实验期间接触过ChatGPT的受试者在实验后两周内报告使用它的可能性是未接触者的2倍,实验两个月后,这一比例仍为1.6倍。
对于消费者来说,AI的应用场景非常明显。许多人使用AI来帮助他们更好地沟通。你可以在电子邮件中表达愤怒,然后请AI将其调整为更为温和的语气。你可以提供要点,然后获取完整的段落。一些人表示,他们现在在发送重要邮件之前,都会先请求AI对邮件进行改进。
学生们使用AI写论文,作家们用AI写书。许多初创公司已经使用AI生成儿童书籍、粉丝小说、浪漫小说和奇幻小说。与传统书籍不同,AI生成的书籍可以是互动式的,因为书中的情节可以根据读者的偏好而变化。这意味着读者可以主动参与创造他们正在阅读的故事。一个儿童阅读应用可以识别孩子在阅读过程中遇到困难的单词,并围绕这些单词生成故事。
像Google Docs、Notion和Gmail这样的记笔记和电子邮件应用都使用AI来帮助用户改善写作。Grammarly,这款写作助手应用,通过微调模型,使用户的写作更流畅、连贯和清晰。
AI的写作能力也可能被滥用。2023年,《纽约时报》报道指出,亚马逊充斥着劣质的AI生成旅游指南书籍,每本书都附有作者简介、网站和好评,所有这些内容都是AI生成的。
对于企业来说,AI写作在销售、营销和团队沟通中很常见。许多经理告诉我,他们一直在使用AI帮助撰写绩效报告。AI可以帮助撰写有效的冷邮件、广告文案和产品描述。像HubSpot和Salesforce这样的客户关系管理(CRM)应用也为企业用户提供生成网站内容和外展邮件的工具。
AI似乎在搜索引擎优化(SEO)方面特别擅长,可能是因为许多AI模型的训练数据来源于互联网上的文本,而这些文本往往经过SEO优化。AI在SEO方面的能力如此强大,甚至催生了新一代的内容农场。这些内容农场建立垃圾网站,填充AI生成的内容,以便它们在Google上排名靠前,从而吸引流量。然后,他们通过广告交换平台出售广告位。2023年6月,NewsGuard发现几乎有400个广告来自141个知名品牌,出现在垃圾AI生成网站上。其中一个垃圾网站每天生产1,200篇文章。如果不采取措施遏制这一现象,未来互联网内容将由AI生成,而这将是一个相当惨淡的前景。
教育
每当ChatGPT无法使用时,OpenAI的Discord服务器就会被大量学生涌入,他们抱怨无法完成作业。包括纽约市公立学校和洛杉矶联合学区在内的多个教育委员会,曾迅速禁止使用ChatGPT,担心学生用它来作弊,但几个月后又撤销了禁令。
与其禁止AI,学校可以将其纳入教育体系,帮助学生更快地学习。AI可以总结课本内容,为每个学生生成个性化的讲座计划。我觉得奇怪的是,广告会根据个人喜好进行个性化,因为我们知道每个人都是不同的,但教育却没有如此个性化。AI可以帮助将学习材料调整为最适合每个学生的格式。听觉学习者可以请求AI将材料朗读出来。喜欢动物的学生可以用AI来调整视觉效果,加入更多的动物元素。那些更容易理解代码而不是数学公式的学生,可以请AI将数学公式翻译成代码。
AI对语言学习尤其有帮助,因为你可以让AI进行不同情境的角色扮演练习。Pajak和Bicknell(Duolingo,2022)发现,在课程创作的四个阶段中,课程个性化是最能从AI中受益的阶段,如图1-10所示。
AI可以生成测验,包括选择题和开放性问题,并评估答案。AI还可以成为辩论伙伴,因为它在呈现同一主题的不同观点方面,比普通人更为擅长。例如,Khan Academy为学生提供AI驱动的教学助手,为教师提供课程助手。我见过的一种创新教学方法是,教师分配AI生成的作文,要求学生找出并改正其中的错误。
虽然许多教育公司积极采用AI来构建更好的产品,但也有许多公司发现他们的市场份额被AI抢走了。例如,Chegg,这是一家帮助学生做作业的公司,自从2022年11月ChatGPT发布以来,其股价从28美元暴跌至2024年9月的2美元,因为学生们转向AI寻求帮助。
如果风险在于AI可能取代许多技能,那么机会在于AI可以作为导师帮助学习任何技能。对于许多技能,AI可以帮助一个人快速掌握基础,然后继续自学,变得比AI更强大。
对话型机器人
对话型机器人非常多才多艺。它们可以帮助我们查找信息、解释概念和头脑风暴。AI可以成为你的伴侣和治疗师。它可以模拟个性,让你与任何你喜欢的人的数字化副本交谈。数字女友和男友在短短的时间内变得异常流行。许多人已经花更多时间与机器人交谈,而不是与人类交流(参见这里和这里的讨论)。一些人担心AI会破坏约会文化。
在研究中,人们还发现,他们可以使用一组对话型机器人来模拟一个社会,从而进行社会动态的研究(Park等,2023)。
对于企业来说,最受欢迎的机器人是客户支持机器人。它们可以帮助公司节省成本,同时改善客户体验,因为它们能够比人类代理更快地回应用户。AI还可以作为产品助手,帮助客户完成复杂且令人困惑的任务,如提交保险索赔、报税或查找公司政策。
ChatGPT的成功催生了一波基于文本的对话型机器人。然而,文本并不是对话型代理的唯一界面。像Google Assistant、Siri和Alexa这样的语音助手已经存在多年。3D对话型机器人在游戏中已经很常见,并且在零售和营销中也逐渐获得关注。
AI驱动的3D角色的一个应用场景是智能NPC(非玩家角色)(参见NVIDIA展示的Inworld和Convai)。NPC对于推动许多游戏的剧情发展至关重要。没有AI时,NPC通常通过脚本执行简单的动作,并且对话内容有限。AI可以使这些NPC变得更智能。智能机器人可以改变现有游戏如《模拟人生》和《上古卷轴》的动态,并开启全新类型的游戏,这些游戏在以前是无法实现的。
信息聚合
许多人认为,我们的成功取决于我们过滤和消化有用信息的能力。然而,跟进电子邮件、Slack消息和新闻有时会让人感到不堪重负。幸运的是,AI来拯救了我们。AI已经证明它能够聚合信息并进行总结。根据Salesforce 2023年《生成式AI快照研究》报告,74%的生成式AI用户用它来提炼复杂的想法并总结信息。
对于消费者来说,许多应用程序可以处理你的文档——合同、披露、论文——并以对话的方式让你检索信息。这一应用场景也被称为“与文档对话”。AI可以帮助你总结网站内容、研究,并生成你选择主题的报告。在写这本书的过程中,我发现AI在总结和比较论文时非常有帮助。
信息聚合和提炼对于企业运营至关重要。更高效的信息聚合和传播可以帮助组织变得更精简,因为它减少了中层管理的负担。当Instacart推出内部提示市场时,它发现最受欢迎的提示模板之一是“快速总结”。这个模板要求AI总结会议记录、电子邮件和Slack对话,列出事实、开放性问题和行动项。这些行动项随后可以自动插入到项目跟踪工具中,并分配给合适的负责人。
AI还可以帮助你提取潜在客户的关键信息,并对你的竞争对手进行分析。
你收集的信息越多,组织信息的重要性就越大。信息聚合与数据组织是密切相关的。
数据组织
未来有一件事是肯定的,那就是我们将继续产生越来越多的数据。智能手机用户将继续拍摄照片和视频。公司将继续记录有关其产品、员工和客户的一切。每年都有数十亿份合同被创建。照片、视频、日志和PDF文件都属于非结构化或半结构化数据。我们必须以一种可以稍后检索的方式组织这些数据。
人工智能正是可以帮助实现这一点。AI可以自动生成关于图像和视频的文本描述,或帮助将文本查询与匹配的视觉内容相匹配。像Google Photos这样的服务已经在利用AI展示与搜索查询匹配的图像。Google图片搜索更进一步:如果没有现有的图像能够满足用户的需求,它可以生成一些。
人工智能在数据分析方面非常擅长。它可以编写程序生成数据可视化,识别异常值,并做出诸如收入预测之类的预测。
企业可以利用AI从非结构化数据中提取结构化信息,从而帮助组织数据并进行检索。一些简单的应用场景包括自动从信用卡、驾驶证、收据、票据、电子邮件底部的联系信息等中提取信息。更复杂的应用场景包括从合同、报告、图表等中提取数据。据估计,智能数据处理(IDP)行业到2030年将达到128.1亿美元,年均增长率为32.9%。
工作流自动化
最终,人工智能应该尽可能多地实现自动化。对于最终用户来说,自动化可以帮助处理日常无聊的任务,如预订餐厅、申请退款、规划旅行和填写表格。
对于企业来说,AI可以自动化重复性任务,如潜在客户管理、开具发票、报销、处理客户请求、数据录入等。一个特别令人兴奋的应用场景是使用AI模型来合成数据,进而用于改进模型本身。你可以使用AI为你的数据创建标签,并引入人工帮助改进这些标签。我们将在第8章讨论数据合成。
完成许多任务需要访问外部工具。为了预订餐厅,应用程序可能需要授权打开搜索引擎查找餐厅的电话,使用手机拨打电话,并将约会添加到你的日历中。能够规划和使用工具的AI被称为智能体。围绕智能体的兴趣几乎达到了痴迷的程度,但这并非完全没有道理。AI智能体有潜力使每个人的工作效率大幅提升,并创造巨大的经济价值。智能体是第6章的核心话题。
研究不同的AI应用非常有趣。我最喜欢的事情之一就是遐想我可以构建的各种应用。然而,并不是所有的应用都应该被构建。下一部分将讨论在构建AI应用之前我们应该考虑的事项。
规划AI应用
鉴于AI似乎具有无限的潜力,很多人可能会迫不及待地开始构建应用。如果你只是想学习并享受其中的乐趣,那就直接开始吧。构建是学习的最佳方式之一。在基础模型的早期,几位AI负责人告诉我,他们鼓励团队通过尝试AI应用来提升技能。
然而,如果你是为了生计而做这件事,那么或许值得退一步思考,你为什么要构建这个应用,应该如何着手。使用基础模型构建一个酷炫的演示很容易,但创造一个有利可图的产品却很难。
应用场景评估
首先要问的问题是,为什么你要构建这个应用。像许多商业决策一样,构建AI应用往往是对风险和机会的回应。以下是一些不同级别的风险示例,按高到低排序:
- 如果你不做,拥有AI的竞争者会使你过时。 如果AI对你的业务构成重大生存威胁,那么将AI纳入业务必须是最优先的事项。在2023年Gartner的研究中,7%的人表示将AI纳入业务的原因是为了确保业务持续性。这在涉及文档处理和信息聚合的行业中更为常见,例如金融分析、保险和数据处理等。这在创意工作领域(如广告、网页设计和图像制作)中也很常见。你可以参考2023年OpenAI的研究《GPTs are GPTs》(Eloundou等,2023),查看各个行业在面对AI时的暴露程度。
- 如果你不做,你将错失提升利润和生产力的机会。 大多数公司接受AI是因为它带来的机会。AI可以帮助大多数(如果不是所有)商业操作。AI可以通过制作更有效的文案、产品描述和促销视觉内容,使用户获取成本变得更低。AI还可以通过改善客户支持和定制化用户体验来提高用户留存率。AI还可以帮助销售线索生成、内部沟通、市场调研和竞争对手追踪等。
- 你不确定AI将在你的业务中扮演什么角色,但你不想落后。 虽然公司不应该追逐每一个炒作热潮,但很多公司因为等得太久而错失良机(想想柯达、百视达和黑莓)。如果你有足够的资源,投资于了解一项新兴的变革性技术如何影响你的业务并不是什么坏主意。在大型公司中,这可以作为研发部门的一部分。
一旦你找到了开发这个应用场景的合理理由,你可能会考虑是否必须自己构建它。如果AI对你的业务构成生存威胁,你可能希望将AI内部化,而不是将其外包给竞争对手。然而,如果你使用AI来提高利润和生产力,你可能会有很多购买选项,这些选项可以节省时间和金钱,同时提供更好的性能。
AI与人类在应用中的角色
AI在AI产品中的角色影响着应用的开发和需求。苹果公司有一份很好的文档,解释了AI在产品中可以采用的不同方式。以下是与当前讨论相关的三个关键点:
关键性或互补性
如果一个应用在没有AI的情况下仍然能正常工作,那么AI是应用的互补部分。例如,Face ID需要AI驱动的面部识别才能工作,而Gmail在没有智能撰写功能的情况下仍然能正常工作。
AI在应用中越关键,AI部分就需要越准确和可靠。当AI不是应用核心时,人们对错误的容忍度较高。
反应性或主动性
反应性特性是在响应用户请求或特定操作时展示其反应,而主动性特性则是在有机会时展示其反应。例如,聊天机器人是反应性的,而谷歌地图上的交通提醒则是主动性的。
因为反应性特性是响应事件产生的,它们通常(但并不总是)需要快速发生。另一方面,主动性特性可以预先计算并在合适的时机展示,因此延迟性不那么重要。
由于用户没有要求主动性特性,如果其质量较差,用户可能会觉得它们是侵入性的或令人讨厌。因此,主动性预测和生成通常有更高的质量要求。
动态或静态
动态特性是通过用户反馈不断更新的,而静态特性是定期更新的。例如,Face ID需要随着人脸的变化不断更新。然而,谷歌照片中的物体检测可能只有在谷歌照片升级时才会更新。
在AI的情况下,动态特性可能意味着每个用户都有自己的模型,持续根据其数据进行微调,或者其他个性化机制,如ChatGPT的记忆功能,允许ChatGPT记住每个用户的偏好。然而,静态特性可能对一组用户使用同一个模型。如果是这样,这些特性只有在共享模型更新时才会更新。
人类在应用中的角色
明确人类在应用中的角色也非常重要。AI是为人类提供后台支持、直接做出决策,还是两者兼而有之?例如,在客户支持聊天机器人中,AI的响应可以以不同的方式使用:
- AI展示几种响应,供人工代理参考,以便更快速地写出回复。
- AI仅响应简单的请求,并将更复杂的请求转交给人工。
- AI直接响应所有请求,不涉及人工。
将人类纳入AI决策过程被称为“人类在环”(human-in-the-loop)。
微软(2023年)提出了一个框架,用于逐步增加AI自动化的产品,称为“爬行-行走-奔跑”(Crawl-Walk-Run):
- Crawl 意味着人类的参与是必须的。
- Walk 意味着AI可以直接与内部员工互动。
- Run 意味着增加自动化,可能包括AI与外部用户的直接互动。
随着AI系统质量的提高,人类的角色可以发生变化。例如,在最初评估AI能力时,你可能会使用它为人工代理生成建议。如果人工代理的接受率很高,例如95%的AI建议响应被人工代理直接采用,那么你可以让客户直接与AI互动,处理这些简单的请求。
AI产品的防御能力
如果你将AI应用作为独立产品出售,那么考虑其防御能力非常重要。低门槛既是福音也是诅咒。如果某件事对你来说容易构建,那么对你的竞争者来说也同样容易。那么,你有哪些护城河来保护你的产品?
在某种程度上,基于基础模型构建应用意味着在这些模型之上提供一层。这也意味着,如果基础模型的能力扩展,你所提供的层可能会被这些模型所替代,从而使你的应用变得过时。比如,假设你基于ChatGPT构建了一个PDF解析应用,假定ChatGPT在解析PDF方面表现不佳或无法大规模处理。如果这个假设不再成立,你的竞争力将会减弱。然而,即使在这种情况下,如果这个PDF解析应用是基于开源模型构建的,面向希望在内部托管模型的用户,它依然是有意义的。
一位主要风险投资公司的普通合伙人告诉我,她见过很多创业公司,它们的整个产品可能只是Google Docs或Microsoft Office的一个功能。如果这些产品成功了,是什么能阻止谷歌或微软分配三名工程师,在两周内复制这些产品?
在AI领域,通常有三种竞争优势:技术、数据和分发——即将你的产品展示给用户的能力。对于基础模型来说,大多数公司的核心技术将会相似。分发优势很可能属于大公司。
数据优势则更加微妙。大公司可能拥有更多的现有数据。然而,如果一家初创公司能够率先进入市场并收集足够的使用数据,以不断改进其产品,数据将成为他们的护城河。即使在用户数据不能直接用于训练模型的场景下,使用信息也能提供关于用户行为和产品缺陷的宝贵洞察,这些信息可以用来指导数据收集和训练过程。
有许多成功的公司,其原始产品本可以是更大产品的一个功能。Calendly本可以是Google Calendar的一个功能,Mailchimp本可以是Gmail的一个功能,Photoroom本可以是Google Photos的一个功能。许多初创公司最终超过了更大的竞争对手,起初通过构建这些大公司忽视的功能。也许你的公司也能成为下一个。
设定期望
一旦你决定亲自构建这个惊人的AI应用,下一步就是弄清楚成功的标准:你将如何衡量成功?最重要的指标是它将如何影响你的业务。例如,如果是一个客户支持聊天机器人,业务指标可以包括以下内容:
- 你希望聊天机器人自动处理多少百分比的客户消息?
- 聊天机器人应该让你处理更多的消息吗?
- 使用聊天机器人,你能够更快地做出回应吗?
- 聊天机器人能为你节省多少人力?
聊天机器人可以回答更多的消息,但这并不意味着它会让用户满意,因此,跟踪客户满意度和客户反馈非常重要。“用户反馈”部分讨论了如何设计反馈系统。
为了确保产品在准备好之前不会推出给客户,需要对其有效性设定明确的期望:它需要多好才算有用。有效性阈值可能包括以下几类指标:
- 质量指标:衡量聊天机器人响应的质量。
- 延迟指标:包括TTFT(首次令牌时间)、TPOT(每个输出令牌时间)和总延迟。可接受的延迟标准取决于你的使用场景。如果你所有的客户请求目前都由人工处理,且平均响应时间为一小时,那么任何比这个更快的响应都可能已经足够。
- 成本指标:每次推理请求的成本。
- 其他指标:如可解释性和公平性。
如果你还不确定要使用哪些指标,不用担心。书中的后续章节将涵盖许多这些指标。
里程碑规划
一旦你设定了可衡量的目标,就需要一个计划来实现这些目标。如何实现目标取决于你从哪里开始。评估现有模型以了解它们的能力。现成的模型越强大,你需要做的工作就越少。例如,如果你的目标是自动化60%的客户支持工单,而你想使用的现成模型已经能够自动化30%的工单,那么你可能需要投入的工作比完全无法自动化工单的情况要少。
评估后,你的目标可能会发生变化。例如,评估后,你可能会意识到,将应用程序推向有效性阈值所需的资源将超过其潜在回报,因此你可能不再想追求这个目标。
规划AI产品需要考虑最后一公里的挑战。使用基础模型取得初步成功可能会产生误导。由于基础模型的基本能力已经相当强大,构建一个有趣的演示可能不需要太长时间。然而,一个好的初始演示并不保证会产生一个好的最终产品。可能需要一个周末来构建演示,但构建一个产品可能需要几个月甚至几年的时间。
在《UltraChat》论文中,Ding等人(2023年)分享了“从0到60比较容易,而从60到100则变得极其具有挑战性。”LinkedIn(2024年)也表达了同样的观点。他们用一个月的时间达到了他们想要的80%体验。这一初步成功让他们严重低估了提升产品所需的时间。他们发现,花了四个月时间才最终超过95%。大量时间被花在了处理产品缺陷和应对幻觉问题上。每次实现后续1%的进展都非常缓慢,令人沮丧。
维护
产品规划不仅仅是实现目标。你需要思考这个产品如何随着时间变化,以及它应该如何进行维护。AI产品的维护具有AI快速变化的额外挑战。在过去十年里,AI领域发展非常迅速,未来十年可能仍会保持这一速度。今天基于基础模型构建产品意味着承诺要搭乘这列高速列车。
许多变化是积极的。例如,许多模型的局限性正在得到解决。上下文长度正在增加,模型输出变得更好。模型推理,即给定输入后计算输出的过程,正在变得更快且更便宜。图1-11显示了2022年至2024年间,在流行的基础模型基准Massive Multitask Language Understanding (MMLU)(Hendrycks等,2020)上的推理成本和模型性能的演变。
然而,即便是这些良好的变化也可能在你的工作流程中引发摩擦。你将不得不时刻保持警惕,并对每项技术投资进行成本效益分析。今天最好的选择可能会在明天变成最糟的选择。你可能决定自行构建一个模型,因为它看起来比支付模型提供商的费用便宜,然而三个月后,你发现模型提供商已经将价格降低了一半,导致自行构建反而变成了昂贵的选择。你可能投资于一个第三方解决方案,并围绕它调整基础设施,结果却因为该提供商未能获得资金而倒闭。
有些变化更容易适应。例如,随着模型提供商趋同于相同的API,切换一个模型API为另一个变得更加容易。然而,由于每个模型都有其独特的特性、优点和缺点,开发者在使用新模型时需要调整他们的工作流程、提示语和数据。如果没有适当的版本控制和评估基础设施,这一过程可能会带来很多麻烦。
有些变化更难适应,尤其是关于法规的变化。许多国家将AI相关技术视为国家安全问题,这意味着AI所需的资源,包括计算能力、人才和数据,都受到严格监管。例如,欧洲的《通用数据保护条例》(GDPR)的出台,预计将使企业花费90亿美元来实现合规。计算资源的可用性可能一夜之间发生变化,因为新的法律可能对谁能买卖计算资源设置更多限制(参见美国2023年10月的行政命令)。如果你的GPU供应商突然被禁止向你的国家出售GPU,你就麻烦了。
有些变化甚至可能是致命的。例如,关于知识产权(IP)和AI使用的法规仍在不断发展。如果你在基于使用他人数据训练的模型上构建你的产品,你能否确定你的产品的知识产权始终归你所有?我与许多注重知识产权的公司交谈过,比如游戏工作室,他们犹豫是否使用AI,担心以后会失去他们的知识产权。
一旦你决定构建AI产品,我们接下来将探讨构建这些应用所需的工程技术栈。
AI工程技术栈
AI工程的快速发展也引发了大量的炒作和FOMO(错失恐惧症)。每天推出的新工具、技术、模型和应用层出不穷,令人不知所措。与其试图跟上不断变化的潮流,不如深入了解AI工程的基本构建模块。
要理解AI工程,重要的是要认识到,AI工程是从机器学习(ML)工程发展而来的。当一家公司开始尝试基础模型时,通常是其现有的机器学习团队主导这一工作。一些公司将AI工程与ML工程视为相同,如图1-12所示。
一些公司为AI工程设置了独立的职位描述,如图1-13所示。
无论组织如何定位AI工程师和ML工程师,他们的角色都有很大的重叠。现有的ML工程师可以将AI工程技能加入到自己的技能列表中,以扩展职业前景。然而,也有一些AI工程师没有之前的ML经验。
为了更好地理解AI工程及其与传统ML工程的区别,接下来的部分将分解AI应用构建过程中的不同层次,探讨每一层在AI工程和ML工程中的角色。
AI技术栈的三个层次
任何AI应用技术栈都有三个层次:应用开发、模型开发和基础设施。在开发AI应用时,你可能会从最上层开始,根据需要逐步向下:
应用开发
随着模型的普及,任何人都可以使用它们来开发应用。过去两年中,这一层经历了最多的变化,且仍在快速发展。应用开发涉及为模型提供良好的提示语和必要的上下文。这一层需要严格的评估。好的应用程序也需要好的界面。
模型开发
这一层提供用于开发模型的工具,包括建模、训练、微调和推理优化的框架。由于数据在模型开发中占据核心地位,这一层还包括数据集工程。模型开发同样需要严格的评估。
基础设施
位于栈底的是基础设施层,它包括模型服务、数据和计算资源管理以及监控等工具。
这三个层次及每个层次的职责示例如图1-14所示。
为了了解基础模型如何改变了这一领域,我在2024年3月在GitHub上搜索了所有至少有500个星标的AI相关仓库。考虑到GitHub的普及,我认为这些数据是了解生态系统的一个很好的代理。在我的分析中,我还包括了应用和模型的仓库,分别代表了应用开发和模型开发层的产品。我共发现了920个仓库。图1-15展示了每个类别的仓库数量按月累计的情况。
数据显示,2023年AI工具的数量出现了大幅增长,这是在Stable Diffusion和ChatGPT发布之后的结果。2023年,应用和应用开发类别的增长最为显著。基础设施层也有所增长,但远不及其他层的增长幅度。这是可以预期的。尽管模型和应用发生了变化,但核心基础设施需求——如资源管理、服务、监控等——仍然保持不变。
这引出了下一个观点。虽然基础模型带来的兴奋和创意层面是前所未有的,但构建AI应用的许多原则仍然没有改变。对于企业用例而言,AI应用仍然需要解决业务问题,因此,从业务指标到机器学习指标(及其反向映射)仍然至关重要。你仍然需要进行系统化的实验。对于传统的机器学习工程,你会尝试不同的超参数;而对于基础模型,你则需要尝试不同的模型、提示语、检索算法、采样变量等。(采样变量将在第2章讨论。)我们仍然希望使模型运行得更快、更便宜。建立反馈循环,利用生产数据持续改进应用程序仍然非常重要。
这意味着,过去十年中机器学习工程师学到的许多知识和经验依然适用。这些集体经验使得每个人更容易开始构建AI应用。然而,建立在这些持久原则之上的,还有许多独特的AI工程创新,我们将在本书中进行探讨。
AI工程与ML工程
虽然部署AI应用的原则保持不变令人宽慰,但理解事物如何发生变化同样重要。这对于希望将现有平台适应新AI用例的团队,以及对学习哪些技能以在新市场中保持竞争力的开发者来说,都具有帮助。
从高层次来看,今天使用基础模型构建应用与传统的机器学习工程有三个主要区别:
- 没有基础模型时,你必须为你的应用训练自己的模型。 在AI工程中,你使用的是别人为你训练的模型。这意味着AI工程更侧重于模型的适应,而不是模型的开发和训练。
- AI工程使用的模型更大,消耗更多计算资源,且延迟更高。 这意味着对高效的训练和推理优化有更大的压力。计算密集型模型的一个推论是,现在许多公司需要更多的GPU,并且要使用比之前更大的计算集群,这意味着需要更多懂得如何使用GPU和大集群的工程师。
- AI工程使用的模型可以生成开放式输出。 开放式输出使得模型可以用于更多任务,但也使得评估变得更加困难。这使得评估在AI工程中成为一个更大的问题。
简而言之,AI工程与ML工程的不同之处在于,它不再那么注重模型开发,而是更多关注模型的适应和评估。在本章中,我提到过模型适应几次,因此,在我们继续之前,我想确保我们对模型适应的定义达成共识。通常,模型适应技术可以分为两类,取决于是否需要更新模型权重。
基于提示的技术,包括提示工程,不需要更新模型权重,通过给模型提供指令和上下文来适应模型,而不是改变模型本身。提示工程更容易入门,且所需数据较少。许多成功的应用程序都是通过提示工程构建的。它的易用性使你可以尝试更多的模型,从而增加你找到意外适用于应用的优秀模型的机会。然而,提示工程可能不足以应对复杂的任务或对性能有严格要求的应用。
微调,则需要更新模型权重。通过对模型本身进行更改来适应模型。一般来说,微调技术更复杂,需要更多数据,但它们能显著提高模型的质量、延迟和成本。在没有更改模型权重的情况下,许多事情是无法实现的,比如将模型适应到它在训练期间没有接触过的新任务。
现在,让我们深入探讨应用开发和模型开发这两个层次,看看它们在AI工程中发生了怎样的变化,从现有的ML工程师更熟悉的部分开始。这个部分概述了开发AI应用过程中涉及的不同流程。如何操作这些流程将在本书中进一步讨论。
模型开发
模型开发是与传统ML工程最常关联的层次。它有三个主要责任:建模和训练、数据集工程以及推理优化。评估也是必要的,但由于大多数人首先会在应用开发层面接触到它,我将在下一部分讨论评估。
建模和训练
建模和训练是指设计模型架构、训练模型并进行微调的过程。此类别中的工具示例包括谷歌的TensorFlow、Hugging Face的Transformers和Meta的PyTorch。
开发机器学习模型需要专门的机器学习知识。它要求了解不同类型的机器学习算法(如聚类、逻辑回归、决策树和协同过滤)和神经网络架构(如前馈神经网络、递归神经网络、卷积神经网络和Transformer)。还需要理解模型如何学习,包括梯度下降、损失函数、正则化等概念。
随着基础模型的出现,机器学习知识不再是构建AI应用的必备条件。我遇到过许多出色且成功的AI应用构建者,他们对学习梯度下降一点兴趣都没有。然而,机器学习知识仍然极其有价值,因为它扩展了你可以使用的工具集,并且在模型无法按预期工作时,有助于故障排除。
关于训练、预训练、微调和后训练的区别
训练始终涉及改变模型权重,但并非所有对模型权重的改变都构成训练。例如,量化(将模型权重的精度降低的过程)技术上会改变模型的权重值,但它不被视为训练。
术语“训练”通常可以用来替代预训练、微调和后训练,它们指的是不同的训练阶段:
预训练
预训练是指从零开始训练模型——模型权重是随机初始化的。对于大语言模型(LLMs)来说,预训练通常包括训练一个模型以完成文本填充任务。在所有训练步骤中,预训练通常是最消耗资源的。以InstructGPT模型为例,预训练占用了整体计算和数据资源的98%。预训练也需要很长时间。预训练过程中一个小小的错误可能会导致巨大的财务损失,并严重拖延项目进度。由于预训练资源消耗巨大,这已成为一种只有少数人能掌握的艺术。然而,精通大模型预训练的人才非常抢手。
微调
微调是指继续训练一个已经训练过的模型——模型权重来自先前的训练过程。由于模型已经从预训练中获得了一定的知识,因此微调通常比预训练需要更少的资源(例如数据和计算)。
后训练
许多人用后训练来指代在预训练阶段之后的训练过程。从概念上讲,后训练和微调是相同的,可以互换使用。然而,有时人们可能会用不同的方式来标示它们的不同目标。当由模型开发者执行时,通常称之为后训练。例如,OpenAI可能会在发布模型之前进行后训练,以提高模型对指令的响应能力。当由应用开发者执行时,通常称之为微调。例如,你可能会对一个OpenAI模型进行微调(该模型可能已经进行过后训练),以使其适应你的需求。
预训练和后训练构成了一个连续体。它们的过程和工具非常相似。它们的区别将在第2章和第7章中进一步探讨。
有些人将“训练”一词用于提示工程,这其实是不准确的。我读过一篇《商业内幕》的文章,作者提到她通过给ChatGPT输入她的童年日记,让它模仿她年轻时的样子。作者在口语中使用“训练”一词是正确的,因为她是在教模型做某事。但从技术上讲,如果你通过输入上下文来教模型该做什么,那么你是在进行提示工程。类似地,我也见过有人在做提示工程时使用“微调”一词。
数据集工程
数据集工程是指为训练和适应AI模型而策划、生成和注释所需的数据。
在传统的机器学习工程中,大多数用例是封闭式的——模型的输出只能在预定义的值中选择。例如,垃圾邮件分类只有两个可能的输出:“垃圾邮件”和“非垃圾邮件”,这是封闭式的。然而,基础模型是开放式的。注释开放式查询比注释封闭式查询更难——判断一封电子邮件是否是垃圾邮件比写一篇文章要容易得多。因此,数据注释对于AI工程来说是一个更大的挑战。
另一个区别是,传统的机器学习工程更多地使用表格数据,而基础模型则处理非结构化数据。在AI工程中,数据操作更多的是关于去重、分词、上下文检索和质量控制,包括去除敏感信息和有害数据。数据集工程是第8章的重点。
许多人认为,由于模型现在是商品化的,数据将成为主要的区分因素,这使得数据集工程变得比以往任何时候都更加重要。你需要多少数据取决于你使用的适配技术。通常,从零开始训练模型需要的数据比微调模型多,而微调又比提示工程需要的数据多。
无论你需要多少数据,数据专业知识在评估模型时都很有用,因为模型的训练数据能提供关于该模型优缺点的重要线索。
推理优化
推理优化意味着让模型运行得更快、更便宜。推理优化一直是机器学习工程中重要的组成部分。用户从不拒绝更快的模型,企业也总是能从更便宜的推理中获益。然而,随着基础模型的规模扩大,推理成本和延迟也随之增加,推理优化变得更加重要。
基础模型的一个挑战是,它们通常是自回归的——令牌是顺序生成的。如果一个模型生成一个令牌需要10毫秒,那么生成100个令牌的输出将需要一秒钟,生成更长的输出则需要更长时间。随着用户变得越来越不耐烦,将AI应用的延迟降低到典型互联网应用期望的100毫秒是一个巨大的挑战。推理优化已经成为工业界和学术界的一个活跃子领域。
基础模型中不同类别的模型开发的相对重要性随着AI工程的发展而变化的总结见表1-4。
表1-4. 基础模型与传统机器学习模型开发的不同职责变化
| 类别 | 使用传统机器学习构建 | 使用基础模型构建 |
|---|---|---|
| 建模和训练 | 训练一个模型从零开始需要机器学习知识 | 机器学习知识是可有可无的,而非必须拥有 |
| 数据集工程 | 更多关于特征工程,尤其是表格数据 | 更少关于特征工程,更多关于数据去重、分词、上下文检索和质量控制 |
| 推理优化 | 重要 | 更加重要 |
注释:许多人会对此声明提出异议,认为机器学习知识是必须拥有的。
推理优化技术,包括量化、蒸馏和并行处理,将在第7至第9章中讨论。
应用开发
在传统的机器学习工程中,团队使用他们的专有模型来构建应用,模型的质量是一个差异化因素。而在使用基础模型的情况下,许多团队使用相同的模型,因此差异化必须通过应用开发过程来实现。
应用开发层包括以下职责:评估、提示工程和AI接口。
评估
评估是为了减轻风险并发现机会。评估在整个模型适应过程中都是必要的。评估需要用于选择模型、基准化进展、确定应用是否准备好部署,并在生产过程中检测问题和改进机会。
虽然评估在机器学习工程中一直很重要,但在基础模型中,它变得更加重要,原因有很多。评估基础模型的挑战将在第3章中讨论。简而言之,这些挑战主要来自于基础模型的开放式特性和扩展的能力。例如,在像欺诈检测这样的封闭式机器学习任务中,通常会有预期的标准答案,可以将模型的输出与之进行比较。如果模型的输出与预期输出不同,你就知道模型是错的。然而,对于像聊天机器人这样的任务,每个提示的响应可能有很多种,因此无法策划一个完整的标准答案列表来比较模型的响应。
适应技术的多样性也使得评估更加困难。一个在某种技术下表现不佳的系统,可能在另一种技术下表现得更好。例如,当谷歌在2023年12月推出Gemini时,他们声称Gemini在MMLU基准测试(Hendrycks等,2020)中优于ChatGPT。谷歌使用了一种名为CoT@32的提示工程技术来评估Gemini。在这种技术中,Gemini被展示了32个示例,而ChatGPT只展示了5个示例。当两者都只展示五个示例时,ChatGPT表现得更好,如表1-5所示。
表1-5. 不同的提示可能会导致模型表现大相径庭,正如Gemini技术报告(2023年12月)所示。
| 模型 | MMLU性能 | CoT@32 | CoT@8 | CoT@32 (通过API) | 5-shot | 5-shot CoT | 5-shot |
|---|---|---|---|---|---|---|---|
| Gemini Ultra | 90.04% | 79.13% | 87.29% | 70% | 78.4% | 79.6% | 73.0% |
| Gemini Pro | 78.5% | 79.6% | 68.0% | ||||
| GPT-4 | 83.7% | 71.8% | 86.4% | ||||
| GPT-3.5 | |||||||
| PaLM 2-L | |||||||
| Claude 2 | |||||||
| Inflection-2 | |||||||
| Grok 1 | |||||||
| Llama-2 |
提示工程和上下文构建
提示工程是指仅通过输入,让AI模型表现出所需的行为,而不改变模型权重。Gemini的评估故事突显了提示工程对模型性能的影响。通过使用不同的提示工程技术,Gemini Ultra在MMLU上的表现从83.7%提升到90.04%。
通过仅使用提示,模型也能做到惊人的事情。正确的指令可以让模型执行你想要的任务,以你选择的格式。提示工程不仅仅是告诉模型该做什么,还包括为模型提供必要的上下文和工具,以完成特定任务。对于具有长上下文的复杂任务,你可能还需要为模型提供一个内存管理系统,以便模型能够跟踪其历史记录。第5章讨论了提示工程,第6章讨论了上下文构建。
AI接口
AI接口是指为最终用户创建一个与您的AI应用互动的界面。在基础模型之前,只有拥有足够资源开发AI模型的组织才能开发AI应用。这些应用通常会嵌入到组织现有的产品中。例如,欺诈检测嵌入在Stripe、Venmo和PayPal中,推荐系统是社交网络和媒体应用(如Netflix、TikTok和Spotify)的一部分。
有了基础模型,任何人都可以构建AI应用。你可以将你的AI应用作为独立的产品提供,或者将其嵌入到其他产品中,包括由其他人开发的产品。例如,ChatGPT和Perplexity是独立的产品,而GitHub的Copilot通常作为VSCode中的插件使用,Grammarly则常作为Google Docs的浏览器扩展使用。Midjourney既可以通过其独立的Web应用使用,也可以通过Discord中的集成使用。
需要有一些工具来为独立的AI应用提供接口,或者使AI能够轻松地集成到现有产品中。以下是一些在AI应用中越来越流行的接口:
- 独立的Web、桌面和移动应用。
- 允许用户在浏览时快速查询AI模型的浏览器扩展。
- 集成到Slack、Discord、WeChat和WhatsApp等聊天应用中的聊天机器人。
- 许多产品,包括VSCode、Shopify和Microsoft 365,提供API,允许开发者将AI作为插件或附加组件集成到他们的产品中。这些API也可以被AI代理用来与世界互动,如第6章所讨论。
虽然聊天界面是最常用的,AI接口也可以是基于语音的(例如语音助手)或具身的(例如增强现实和虚拟现实中的接口)。
这些新的AI接口也意味着收集和提取用户反馈的新方式。对话界面使用户更容易以自然语言提供反馈,但这些反馈更难提取。用户反馈设计将在第10章中讨论。
表1-6. AI工程与ML工程中应用开发各类别的重要性变化
| 类别 | 使用传统机器学习构建 | 使用基础模型构建 |
|---|---|---|
| AI接口 | 不太重要 | 重要 |
| 提示工程 | 不适用 | 重要 |
| 评估 | 重要 | 更加重要 |
AI工程与全栈工程
对应用开发,特别是接口的重视,使AI工程更接近全栈开发。接口的重要性不断上升,导致AI工具设计的转变,以吸引更多前端工程师。传统上,机器学习工程是以Python为中心的。在基础模型出现之前,最流行的机器学习框架主要支持Python API。今天,Python仍然很流行,但JavaScript API的支持也在增加,像LangChain.js、Transformers.js、OpenAI的Node库和Vercel的AI SDK等都在提供支持。
虽然许多AI工程师来自传统的机器学习背景,但越来越多的AI工程师来自Web开发或全栈开发背景。全栈工程师相较于传统的机器学习工程师的一个优势是,他们能够快速将想法转化为演示,获取反馈并进行迭代。
在传统的机器学习工程中,通常是从收集数据和训练模型开始,最后才是构建产品。然而,今天由于AI模型的现成可用,可以首先从构建产品开始,只有当产品显示出潜力时,才投入数据和模型,正如图1-16所示。
在传统的机器学习工程中,模型开发和产品开发通常是分离的过程,许多组织中的机器学习工程师很少参与产品决策。然而,随着基础模型的出现,AI工程师往往更多地参与到产品构建中。
总结
本章有两个目的。一是解释AI工程作为一门学科的出现,这得益于基础模型的可用性。二是概述构建基于这些模型的应用所需的过程。我希望本章达成了这一目标。作为概述章节,本章仅轻描淡写地触及了许多概念,后续章节将进一步探讨这些概念。
本章讨论了近年来AI的快速发展,并回顾了其中一些最显著的转变,从语言模型到大语言模型的过渡,得益于一种称为自监督的训练方法。然后追溯了语言模型如何融合其他数据模态,成为基础模型,以及基础模型如何催生了AI工程。
AI工程的快速增长是由基础模型的出现能力所驱动的许多应用推动的。本章讨论了消费者和企业方面一些最成功的应用模式。尽管已经有大量的AI应用投入生产,但我们仍处于AI工程的早期阶段,还有无数创新待实现。
在构建应用之前,一个重要但常被忽视的问题是,是否应该构建它。本章讨论了这个问题以及构建AI应用的主要考虑因素。
虽然AI工程是一个新术语,但它源自机器学习工程,后者是涉及使用所有机器学习模型构建应用的广义学科。许多机器学习工程的原则仍然适用于AI工程。然而,AI工程也带来了新的挑战和解决方案。章节的最后部分讨论了AI工程技术栈,包括它如何从机器学习工程中演变而来。
AI工程的一个特别具有挑战性的方面是,如何在书面中捕捉到社区所带来的大量集体能量、创造力和工程人才。这种集体热情常常令人感到不知所措,因为不断有新的技术、发现和工程成就出现,几乎不可能跟上。
一个安慰是,由于AI擅长信息聚合,它可以帮助我们汇总和总结所有这些新更新。但工具的帮助总是有限的。一个领域越是令人不堪重负,就越需要一个框架来帮助我们导航。本书的目标就是提供这样一个框架。
本书的其余部分将一步步探讨这个框架,从AI工程的基本构建块开始:那些使许多令人惊叹的应用成为可能的基础模型。