目录

《AI工程(真正的Epub版本)》

《AI工程》推荐语

这本书为构建生成式AI系统的核心方面提供了全面、结构良好的指南。对于任何希望在企业范围内推广AI的专业人士来说,这是一本必读之作。

Vittorio Cretella,前全球首席信息官,P&G和Mars

Chip Huyen深谙生成式AI。除此之外,她还是一位杰出的教师和作家,她的工作在帮助团队将AI投入生产方面发挥了重要作用。凭借其深厚的专业知识,《AI工程》作为一本全面而整体的指南,精湛地详述了在生产环境中设计和部署生成式AI应用程序所需的一切。

Luke Metz,ChatGPT联合创始人,前OpenAI研究经理

每个构建实际应用的AI工程师都应该阅读这本书。这是一本端到端AI系统设计的重要指南,涵盖从模型开发和评估到大规模部署和运营的全过程。

Andrei Lopatenko,搜索与AI总监,Neuron7

这本书是构建可扩展AI产品的基本指南。与其他专注于工具或当前不断变化趋势的书籍不同,Chip提供了永恒的基础知识。无论你是产品经理还是工程师,这本书都有效地架起了跨职能团队之间的协作桥梁,使其成为任何参与AI开发人员的必读之作。

Aileen Bui,AI产品运营经理,Google

这是ML工程领域大师之一对AI工程的权威性过渡!Chip见证了公司各个阶段的成功项目和职业生涯,并首次为进入该领域的新AI工程师浓缩了她的专业知识。

swyx,策展人,AI.Engineer

《AI工程》是一本实用指南,提供了AI开发的最新信息,对新手和专家领导者都非常易懂。对于任何希望构建稳健和可扩展AI系统的人来说,这本书是必不可少的资源。

Vicki Reyzelman,首席AI解决方案架构师,Mave Sparks

《AI工程》是一本全面的指南,作为理解和实际实施AI系统的重要参考资料。

Han Lee,数据科学总监,Moody’s

《AI工程》是任何使用生成式AI构建软件的人的基本指南!它揭开了技术的神秘面纱,强调了评估的重要性,并分享了在开始昂贵的微调之前应该做什么来实现质量。

Rafal Kawala,高级AI工程总监,在财富500强公司拥有16年工作经验

AI工程

作者:Chip Huyen

版权所有 © 2025 Developer Experience Advisory LLC。保留所有权利。

在美国印刷。

由O’Reilly Media, Inc.出版,1005 Gravenstein Highway North, Sebastopol, CA 95472。

O’Reilly书籍可用于教育、商业或销售推广用途。大多数书目也有在线版本(http://oreilly.com)。如需更多信息,请联系我们的企业/机构销售部门:800-998-9938或corporate@oreilly.com。

责任编辑:Nicole Butterfield 索引制作:WordCo Indexing Services, Inc.
开发编辑:Melissa Potter 内页设计:David Futato
制作编辑:Beth Kelly 封面设计:Karen Montgomery
文字编辑:Liz Wheeler 插图制作:Kate Dullea
校对:Piper Editorial Consulting, LLC

第一版修订历史

发布详情请见:http://oreilly.com/catalog/errata.csp?isbn=9781098166304

O’Reilly标志是O’Reilly Media, Inc.的注册商标。《AI工程》、封面图像及相关商业外观是O’Reilly Media, Inc.的商标。

本作品中表达的观点为作者观点,不代表出版商的观点。虽然出版商和作者已善意努力确保本作品中包含的信息和说明准确无误,但出版商和作者对错误或遗漏不承担任何责任,包括但不限于因使用或依赖本作品而造成的损害责任。使用本作品中包含的信息和说明的风险由您自行承担。如果本作品包含或描述的任何代码示例或其他技术受开源许可证或他人知识产权的约束,您有责任确保您的使用符合此类许可证和/或权利。

978-1-098-16630-4

[LSI]

前言

当ChatGPT问世时,就像我的许多同事一样,我感到困惑。让我惊讶的不是模型的规模或能力。十多年来,AI社区就知道扩大模型规模会改善其性能。2012年,AlexNet的作者在他们的里程碑论文中指出:“我们所有的实验都表明,我们的结果可以通过等待更快的GPU和更大的数据集变得可用而得到改善。”1, 2

让我惊讶的是这种能力提升所解锁的应用数量之多。我原以为模型质量指标的小幅提升可能会带来应用的适度增长。相反,它带来了新可能性的爆炸式增长。

这些新的AI能力不仅增加了对AI应用的需求,还降低了开发者的准入门槛。构建AI应用变得如此简单。甚至可以在不编写任何代码的情况下构建应用程序。这种转变将AI从一个专业学科转变为每个人都能使用的强大开发工具。

尽管今天的AI采用看起来很新,但它建立在已经存在了一段时间的技术之上。关于语言建模的论文早在1950年代就出现了。检索增强生成(RAG)应用建立在检索技术之上,这项技术在RAG这个术语被创造之前很久就为搜索和推荐系统提供了动力。部署传统机器学习应用的最佳实践——系统化实验、严格评估、对更快更便宜模型的不懈优化——仍然是使用基础模型应用的最佳实践。

许多AI工程技术的熟悉性和易用性可能会误导人们认为AI工程没有什么新东西。但是,虽然构建AI应用的许多原则保持不变,AI模型的规模和改进的能力带来了需要新解决方案的机遇和挑战。

本书涵盖了适应基础模型来解决现实世界问题的端到端过程,包括来自其他工程领域的经过验证的技术和随基础模型出现的技术。

我开始写这本书是因为我想学习,我确实学到了很多。我从我参与的项目、我阅读的论文和我采访的人员中学习。在写这本书的过程中,我使用了100多次对话和采访的笔记,包括来自主要AI实验室(OpenAI、Google、Anthropic等)的研究人员、框架开发者(NVIDIA、Meta、Hugging Face、Anyscale、LangChain、LlamaIndex等)、不同规模公司的高管和AI/数据负责人、产品经理、社区研究人员和独立应用开发者(见[“致谢”])。

我特别从早期读者那里学到了很多,他们测试了我的假设,向我介绍了不同的观点,让我接触到新的问题和方法。本书的一些章节在我的博客上分享后也收到了社区数千条评论,许多评论给了我新的观点或证实了假设。

我希望现在这本书在您手中,这个学习过程会继续,因为您有独特的经验和观点。请随时通过XLinkedIn或邮箱[hi@huyenchip.com]与我分享您对本书的任何反馈。

本书内容简介

本书提供了一个适应基础模型的框架,包括大语言模型(LLM)和大型多模态模型(LMM),以适用于特定应用。

构建应用程序有许多不同的方法。本书概述了各种解决方案,也提出了您可以问的问题来评估最适合您需求的解决方案。本书可以帮助您回答的许多问题包括:

本书还将帮助您导航令人眼花缭乱的AI领域:模型类型、评估基准,以及看似无穷无尽的用例和应用模式。

本书的内容通过案例研究来说明,其中许多是我参与的,有充分的参考资料支持,并经过来自广泛背景的专家广泛审查。虽然这本书花了两年时间编写,但它汲取了我在过去十年中使用语言模型和ML系统的经验。

像我之前的O’Reilly图书《设计机器学习系统》(DMLS)一样,本书专注于AI工程的基础知识,而不是任何特定的工具或API。工具很快就会过时,但基础知识应该持续更长时间。3

阅读《AI工程》(AIE)与《设计机器学习系统》(DMLS)

AIE可以作为DMLS的配套读物。DMLS专注于在传统ML模型基础上构建应用程序,涉及更多表格数据标注、特征工程和模型训练。AIE专注于在基础模型基础上构建应用程序,涉及更多提示工程、上下文构建和参数高效微调。两本书都是独立和模块化的,因此您可以独立阅读任一本书。

由于基础模型是ML模型,一些概念与两者的工作都相关。如果某个主题与AIE相关但在DMLS中已经广泛讨论,本书仍会涵盖该主题,但程度较轻,并提供相关资源的指引。

请注意,许多主题在DMLS中涵盖但在AIE中没有,反之亦然。本书第一章还涵盖了传统ML工程与AI工程之间的差异。现实世界的系统通常涉及传统ML模型和基础模型,因此了解如何使用两者的知识往往是必要的。

然而,确定某些东西是否会持久往往具有挑战性。我依靠三个标准。首先,对于一个问题,我确定它是否源于AI工作原理的根本限制,或者它是否会随着更好的模型而消失。如果问题是根本性的,我会分析其挑战和解决方案来应对每个挑战。我支持从简单开始的方法,因此对于许多问题,我会从最简单的解决方案开始,然后逐步采用更复杂的解决方案来应对不断增长的挑战。

其次,我咨询了一个广泛的研究人员和工程师网络,他们比我聪明,了解他们认为最重要的问题和解决方案。

有时,我也依赖林迪定律,该定律推断技术的未来预期寿命与其当前年龄成正比。因此,如果某些东西已经存在一段时间,我假设它会继续存在更长时间。

但是,在这本书中,我偶尔包含了一个我认为是临时的概念,因为它对某些应用程序开发人员立即有用,或者因为它说明了一种有趣的问题解决方法。

本书不是什么

本书不是教程。虽然它提到了特定工具并包含伪代码片段来说明某些概念,但它不教您如何使用工具。相反,它提供了选择工具的框架。它包含许多关于不同解决方案之间权衡的讨论,以及评估解决方案时应该问的问题。当您想使用工具时,通常很容易在网上找到相关教程。AI聊天机器人在帮助您开始使用流行工具方面也相当不错。

本书不是ML理论书籍。它不解释什么是神经网络或如何从头构建和训练模型。虽然它解释了许多与讨论直接相关的理论概念,但这本书是一本实用书籍,专注于帮助您构建成功的AI应用程序来解决现实世界的问题。

虽然可以在没有ML专业知识的情况下构建基于基础模型的应用程序,但对ML和统计学的基本理解可以帮助您构建更好的应用程序,并避免不必要的痛苦。您可以在没有任何ML背景的情况下阅读本书。但是,如果您了解以下概念,在构建AI应用程序时会更有效:

如果您还不了解它们,不要担心——本书要么有简短的高级解释,要么有指向可以让您快速了解的资源的指引。

本书适合谁

本书适合任何想要利用基础模型解决现实世界问题的人。这是一本技术书籍,因此本书的语言面向技术角色,包括AI工程师、ML工程师、数据科学家、工程经理和技术产品经理。如果您能与以下场景之一产生共鸣,本书适合您:

如果您属于以下群体之一,您也可以从本书中受益:

我喜欢深入了解事物,所以一些章节会稍微深入技术方面。虽然许多早期读者喜欢这种详细程度,但它可能不适合每个人。在事情变得过于技术化之前,我会给您提醒。如果感觉有点太深入细节,请随时跳过!

阅读本书指南

本书按照开发AI应用程序的典型流程进行编排。以下是这个典型流程的内容以及各章节在流程中的作用。由于本书采用模块化结构,您可以跳过任何您已经熟悉或不太相关的部分。

在决定构建AI应用程序之前,有必要了解这个过程涉及什么并回答诸如以下问题:这个应用程序是否必要?是否需要AI?我必须自己构建这个应用程序吗?本书的第一章帮助您回答这些问题。它还涵盖了一系列成功的用例,让您了解基础模型的能力。

虽然构建AI应用程序不需要机器学习背景,但了解基础模型在底层如何工作对于充分利用它是有用的。第2章分析了基础模型的构建过程以及对下游应用程序有重大影响的设计决策,包括其训练数据配方、模型架构和规模,以及如何训练模型以符合人类偏好。然后讨论模型如何生成响应,这有助于解释模型看似令人困惑的行为,如不一致性和幻觉。改变模型的生成设置通常也是显著提升模型性能的一种便宜且简单的方法。

一旦您承诺使用基础模型构建应用程序,评估将成为整个过程中每一步的重要组成部分。评估是AI工程中最困难的挑战之一,如果不是最困难的话。本书专门用两章,第3章和第4章,来探索不同的评估方法以及如何使用它们为您的应用程序创建可靠且系统的评估管道。

给定一个查询,模型响应的质量取决于以下方面(除了模型的生成设置):

本书的接下来三章重点关注如何优化这些方面中的每一个,以提高模型在应用程序中的性能。第5章涵盖提示工程,从什么是提示开始,为什么提示工程有效,以及提示工程最佳实践。然后讨论恶意行为者如何通过提示攻击来利用您的应用程序,以及如何保护您的应用程序免受这些攻击。

第6章探讨为什么上下文对于模型生成准确响应很重要。它深入研究了用于上下文构建的两种主要应用程序模式:RAG和代理式。RAG模式更容易理解,并且已被证明在生产环境中运行良好。另一方面,虽然代理式模式承诺会更加强大,但它也更加复杂,仍在探索中。

第7章讲述如何通过微调改变模型本身来使模型适应应用程序。由于基础模型的规模,原生模型微调需要大量内存,并且开发了许多技术来允许用更少的内存微调更好的模型。该章涵盖不同的微调方法,并补充了一种更实验性的方法:模型合并。本章包含一个更技术性的部分,展示如何计算模型的内存占用。

由于许多微调框架的可用性,微调过程本身通常很简单。然而,获取微调数据很困难。下一章全部关于数据,包括数据获取、数据标注、数据合成和数据处理。第8章中讨论的许多主题在微调之外也很相关,包括数据质量意味着什么以及如何评估数据质量的问题。

如果第5章到第8章是关于提高模型质量的,第9章则是关于使其推理更便宜、更快速。它讨论模型级别和推理服务级别的优化。如果您使用模型API——即其他人为您托管模型——这个API可能会为您处理推理优化。但是,如果您自己托管模型——无论是开源模型还是内部开发的模型——您将需要实现本章讨论的许多技术。

本书的最后一章汇集了本书的不同概念来端到端构建应用程序。该章的第二部分更注重产品,讨论如何设计用户反馈系统,帮助您收集有用的反馈,同时保持良好的用户体验。

注意

我在本书中经常使用”我们”来指代您(读者)和我。这是我从教学时期养成的习惯,因为我将写作视为作者和读者的共同学习体验。

本书使用的约定

本书使用以下排版约定:

斜体

: 表示新术语、URL、电子邮件地址、文件名和文件扩展名。

等宽字体

: 用于程序清单,以及在段落中引用程序元素,如变量或函数名、数据库、数据类型、环境变量、语句、模型输入提示和关键词。

等宽粗体

: 显示用户应该逐字输入的命令或其他文本。

等宽斜体

: 显示应该被用户提供的值或由上下文确定的值替换的文本。

提示

此元素表示提示或建议。

注意

此元素表示一般注意事项。

警告

此元素表示警告或注意事项。

使用代码示例

补充材料(代码示例、练习等)可在 https://github.com/chiphuyen/aie-book 下载。该仓库包含关于AI Engineering的额外资源,包括重要论文和有用工具。它还涵盖了本书中无法深入探讨的主题。对于有兴趣了解本书写作过程的读者,GitHub仓库还包含关于本书的幕后信息和统计数据。

如果您有技术问题或在使用代码示例时遇到问题,请发送邮件至 support@oreilly.com

本书旨在帮助您完成工作。一般而言,如果本书提供了示例代码,您可以在自己的程序和文档中使用它。除非您要复制代码的很大一部分,否则无需联系我们获得许可。例如,编写一个使用本书中几段代码的程序不需要许可。销售或分发O’Reilly图书中的示例需要许可。通过引用本书并引用示例代码来回答问题不需要许可。将本书中大量示例代码合并到您产品的文档中需要许可。

我们感谢但通常不要求署名。署名通常包括标题、作者、出版商和ISBN。例如:“AI Engineering by Chip Huyen (O’Reilly)。版权所有2025 Developer Experience Advisory LLC, 978-1-098-16630-4。”

如果您觉得您对代码示例的使用超出了合理使用范围或上述给予的许可,请随时通过 permissions@oreilly.com 联系我们。

O’Reilly Online Learning

注意

40多年来,O’Reilly Media 一直为企业提供技术和商业培训、知识和洞察,帮助企业取得成功。

我们独特的专家和创新者网络通过书籍、文章和在线学习平台分享他们的知识和专长。O’Reilly的在线学习平台为您提供按需访问的现场培训课程、深度学习路径、交互式编码环境,以及来自O’Reilly和200多家其他出版商的大量文本和视频内容。更多信息请访问 https://oreilly.com

如何联系我们

请将有关本书的评论和问题发送给出版商:

我们为本书设有网页,在那里我们列出勘误表、示例和任何附加信息。您可以在 https://oreil.ly/ai-engineering 访问此页面。

有关我们图书和课程的新闻和信息,请访问 https://oreilly.com

在LinkedIn上找到我们:https://linkedin.com/company/oreilly-media

在YouTube上观看我们:https://youtube.com/oreillymedia

致谢

如果没有如此多的优秀人士在写作过程中给予我帮助,这本书将需要更长时间完成,并且会遗漏许多重要主题。

由于项目时间紧迫——两年时间完成一本涵盖如此广泛内容的15万字图书——我感谢那些放下宝贵时间如此迅速地审阅这本书的技术审阅者。

Luke Metz是一个出色的参谋,他检查我的假设并防止我走错方向。Han-chung Lee总是跟上最新的AI新闻和社区发展,为我指出了我遗漏的资源。Luke和Han是在我将草稿发送给下一轮技术审阅者之前首先审阅我草稿的人,我永远感激他们容忍我的愚蠢和错误。

在财富500强企业领导AI创新的Vittorio Cretella和Andrei Lopatenko提供了宝贵的反馈,将深厚的技术专长与高管洞察相结合。Vicki Reyzelman帮助我立足现实并保持内容对具有软件工程背景的读者的相关性。

Eugene Yan,一位亲爱的朋友和出色的应用科学家,为我提供了技术和情感支持。Shawn Wang (swyx) 提供了重要的氛围检查,帮助我对这本书更有信心。Sanyam Bhutani,我认识的最优秀的学习者和最谦逊的人之一,不仅给出了深思熟虑的书面反馈,还录制了视频来解释他的反馈。

Kyle Kranen是一位出色的深度学习负责人,他采访了同事并与我分享了关于他们微调过程的精彩文章,这指导了微调章节。Mark Saroufim,一个好奇的人,总是把握最有趣问题的脉搏,向我介绍了关于效率的优秀资源。Kyle和Mark的反馈对于编写第7章和第9章至关重要。

Kittipat “Bot” Kampa除了回答我的许多问题外,还与我分享了他对AI平台思考方式的详细可视化。我感谢Denys Linkov在评估和平台开发方面的系统性方法。Chetan Tekur给出了很好的例子,帮助我构建AI应用模式。我还要感谢Shengzhi (Alex) Li和Hien Luu对我关于AI架构草稿的深思熟虑的反馈。

Aileen Bui 是一位宝贵的伙伴,她从产品管理者的角度分享了独特的反馈和例子。感谢 Todor Markov 在 RAG 和 Agents 章节提供的可行建议。感谢 Tal Kachman 在最后关头加入,推动微调章节顺利完成。

有许多出色的人,他们的陪伴和对话给了我指导本书内容的想法。我尽力在此包含所有帮助过我的人的姓名,但由于人类记忆的固有缺陷,我无疑遗漏了许多人。如果我忘记包含你的姓名,请知道这并非因为我不感激你的贡献,请友好地提醒我,以便我尽快纠正这个疏漏!

Andrew Francis、Anish Nag、Anthony Galczak、Anton Bacaj、Balázs Galambosi、Charles Frye、Charles Packer、Chris Brousseau、Eric Hartford、Goku Mohandas、Hamel Husain、Harpreet Sahota、Hassan El Mghari、Huu Nguyen、Jeremy Howard、Jesse Silver、John Cook、Juan Pablo Bottaro、Kyle Gallatin、Lance Martin、Lucio Dery、Matt Ross、Maxime Labonne、Miles Brundage、Nathan Lambert、Omar Khattab、Phong Nguyen、Purnendu Mukherjee、Sam Reiswig、Sebastian Raschka、Shahul ES、Sharif Shameem、Soumith Chintala、Teknium、Tim Dettmers、Undi95、Val Andrei Fajardo、Vern Liang、Victor Sanh、Wing Lian、Xiquan Cui、Ying Sheng 和 Kristofer。

我要感谢所有早期读者,他们也与我联系并提供反馈。Douglas Bailley 是一位超级读者,分享了如此多深思熟虑的反馈。感谢 Nutan Sahoo 建议了一种优雅的方式来解释困惑度(perplexity)。

我从与许多人的在线讨论中学到了很多。感谢所有回答过我问题、评论过我帖子或发邮件与我分享想法的人。

当然,这本书离不开 O’Reilly 团队,特别是我的开发编辑(Melissa Potter、Corbin Collins、Jill Leonard)和制作编辑(Elizabeth Kelly)。Liz Wheeler 是我合作过的最有辨别力的文字编辑。Nicole Butterfield 是一股力量,她从想法到最终产品全程监督了这本书。

这本书毕竟是我在职业生涯中学到的宝贵经验的积累。我将这些经验归功于我极其能干和耐心的同事和前同事。我与之共事的每一个人都教会了我将机器学习引入世界的新知识。

[1] AlexNet 论文的作者 Ilya Sutskever 后来联合创立了 OpenAI,通过 GPT 模型将这一经验变为现实。

[2] 即使是我在 2017 年的小项目,它使用语言模型来评估翻译质量,也得出结论我们需要”一个更好的语言模型”。

[3] 2017 年教授如何使用 TensorFlow 的课程让我痛苦地认识到工具和教程过时的速度有多快。

第1章 使用基础模型构建AI应用程序简介

如果我只能用一个词来描述 2020 年后的 AI,那就是规模。ChatGPT、Google 的 Gemini 和 Midjourney 等应用程序背后的 AI 模型规模如此之大,以至于它们正在消耗世界电力的相当一部分,而且我们有可能用尽公开可用的互联网数据来训练它们。

AI 模型的扩展有两个主要后果。首先,AI 模型变得更强大,能够执行更多任务,从而实现更多应用。更多的人和团队利用 AI 来提高生产力、创造经济价值并改善生活质量。

其次,训练大型语言模型(LLMs)需要数据、计算资源和专业人才,只有少数组织能够承担。这导致了模型即服务的出现:由这些少数组织开发的模型作为服务提供给其他人使用。任何希望利用 AI 构建应用程序的人现在都可以使用这些模型来实现,而无需预先投资构建模型。

简而言之,对 AI 应用程序的需求增加了,而构建 AI 应用程序的准入门槛降低了。这使得AI 工程——在现成模型基础上构建应用程序的过程——成为增长最快的工程学科之一。

在机器学习(ML)模型基础上构建应用程序并不新鲜。早在 LLMs 变得突出之前,AI 就已经为许多应用程序提供动力,包括产品推荐、欺诈检测和客户流失预测。虽然 AI 应用程序生产化的许多原则保持不变,但新一代大规模、现成可用的模型带来了新的可能性和新的挑战,这正是本书的重点。

本章首先概述了基础模型,这是 AI 工程爆炸式增长背后的关键催化剂。然后我将讨论一系列成功的 AI 用例,每个用例都说明了 AI 擅长什么以及还不擅长什么。随着 AI 能力每天都在扩展,预测其未来可能性变得越来越具有挑战性。然而,现有的应用模式可以帮助发现今天的机会,并为 AI 未来如何继续被使用提供线索。

为了结束本章,我将概述新的 AI 技术栈,包括基础模型带来了什么变化、什么保持不变,以及今天 AI 工程师的角色与传统 ML 工程师的不同之处。

AI 工程的兴起

基础模型(Foundation models)源于大语言模型(large language models),而大语言模型又起源于语言模型。尽管ChatGPT和GitHub的Copilot等应用似乎突然出现,但它们实际上是几十年技术进步的结晶,第一个语言模型早在1950年代就出现了。本节追溯了从语言模型发展到AI工程的关键突破。

从语言模型到大语言模型

虽然语言模型已经存在了一段时间,但只有通过自监督学习,它们才能够扩展到今天的规模。本节简要概述了语言模型和自监督学习的含义。如果您已经熟悉这些概念,可以跳过本节。

语言模型

语言模型编码了关于一种或多种语言的统计信息。直观地说,这些信息告诉我们一个词在给定上下文中出现的可能性。例如,给定上下文”我最喜欢的颜色是__“,一个编码中文的语言模型应该更常预测”蓝色”而不是”汽车”。

语言的统计特性在几个世纪前就被发现了。在1905年的小说“跳舞人的冒险”中,夏洛克·福尔摩斯利用英语的简单统计信息来解码神秘棍状图形的序列。由于英语中最常见的字母是E,福尔摩斯推断出最常见的棍状图形必须代表E

后来,克劳德·香农在第二次世界大战期间使用更复杂的统计学来破译敌人的信息。他关于如何建模英语的工作发表在1951年的里程碑式论文“印刷英语的预测和熵”中。这篇论文介绍的许多概念,包括熵,至今仍用于语言建模。

在早期,语言模型涉及一种语言。然而,今天,语言模型可以涉及多种语言。

语言模型的基本单位是token。token可以是字符、单词或单词的一部分(如-tion),取决于模型。例如,ChatGPT背后的模型GPT-4将短语”I can’t wait to build AI applications”分解为九个token,如图1-1所示。注意在这个例子中,单词”can’t”被分解为两个token,can’t。您可以在OpenAI网站上看到不同OpenAI模型如何对文本进行分词。

图1-1. GPT-4如何对短语进行分词的示例。

将原始文本分解为token的过程称为分词(tokenization)。对于GPT-4,平均一个token大约是一个单词长度的¾。因此,100个token大约相当于75个单词。

模型可以使用的所有token的集合是模型的词汇表(vocabulary)。您可以使用少量token构造大量不同的单词,类似于如何使用字母表中的几个字母构造许多单词。Mixtral 8x7B模型的词汇表大小为32,000。GPT-4的词汇表大小是100,256。分词方法和词汇表大小由模型开发者决定。

注意

为什么语言模型使用token作为单位而不是单词字符?主要有三个原因:

  1. 与字符相比,token允许模型将单词分解为有意义的组件。例如,“cooking”可以分解为”cook”和”ing”,两个组件都承载原词的一些含义。

  2. 因为独特token的数量少于独特单词的数量,这减少了模型的词汇表大小,使模型更高效(如[第2章]所讨论)。

  3. Token还帮助模型处理未知单词。例如,像”chatgpting”这样的虚构单词可以分解为”chatgpt”和”ing”,帮助模型理解其结构。Token在拥有比单词更少的单位与保留比单个字符更多含义之间取得平衡。

有两种主要类型的语言模型:掩码语言模型自回归语言模型。它们基于可以使用什么信息来预测token而有所不同:

掩码语言模型

掩码语言模型

掩码语言模型(masked language model)被训练来预测序列中任何位置的缺失token,使用缺失token前后的上下文。本质上,掩码语言模型被训练成能够填空。例如,给定上下文”我最喜欢的__是蓝色的”,掩码语言模型应该预测空白处很可能是”颜色”。掩码语言模型的一个知名例子是来自transformer的双向编码器表示,即BERT (Devlin et al., 2018)。

截至目前,掩码语言模型通常用于非生成任务,如情感分析和文本分类。它们对于需要理解整体上下文的任务也很有用,比如代码调试,模型需要理解前后代码来识别错误。

## 自回归语言模型

自回归语言模型(autoregressive language model)被训练来预测序列中的下一个token,仅使用前面的token。它预测”我最喜欢的颜色是__“中接下来会出现什么。自回归模型可以持续地一个接一个地生成token。如今,自回归语言模型是文本生成的首选模型,因此它们比掩码语言模型更受欢迎。

[图1-2]展示了这两种类型的语言模型。

图1-2. 自回归语言模型和掩码语言模型。

注意

在本书中,除非明确说明,语言模型将指自回归模型。

语言模型的输出是开放式的。语言模型可以使用其固定的、有限的词汇表构建无限可能的输出。能够生成开放式输出的模型被称为生成式,因此有了生成式AI这个术语。

你可以将语言模型视为补全机器:给定一个文本(提示),它试图补全该文本。这里是一个例子:

提示(来自用户)"生存还是毁灭"

补全(来自语言模型)",这是个问题。"

重要的是要注意,补全是基于概率的预测,并不保证正确。语言模型的这种概率性质使它们既令人兴奋又令人沮丧。我们在[第2章]中进一步探讨这一点。

尽管听起来简单,但补全功能极其强大。许多任务,包括翻译、摘要、编程和解决数学问题,都可以框架为补全任务。例如,给定提示:“你好用法语怎么说…”,语言模型可能能够用”Bonjour”来补全,有效地从一种语言翻译到另一种语言。

作为另一个例子,给定提示:

问题:这个邮件可能是垃圾邮件吗?邮件内容如下:<邮件内容>

答案:

语言模型可能能够用”可能是垃圾邮件”来补全,这将语言模型变成了垃圾邮件分类器。

虽然补全功能很强大,但补全与进行对话并不相同。例如,如果你向补全机器提问,它可能通过添加另一个问题来补全你所说的内容,而不是回答问题。[“训练后处理”]讨论了如何让模型适当地响应用户的请求。

自监督

语言建模只是众多机器学习算法中的一种。还有用于目标检测、主题建模、推荐系统、天气预测、股价预测等的模型。是什么让语言模型如此特殊,使它们成为导致ChatGPT时刻的缩放方法的中心?

答案是语言模型可以使用自监督进行训练,而许多其他模型需要监督。监督是指使用标记数据训练机器学习算法的过程,这可能既昂贵又耗时。自监督有助于克服这种数据标记瓶颈,为模型创建更大的学习数据集,有效地允许模型扩大规模。具体如下。

通过监督,你标记示例来展示你希望模型学习的行为,然后在这些示例上训练模型。一旦训练完成,模型就可以应用于新数据。例如,要训练欺诈检测模型,你使用交易示例,每个都标记为”欺诈”或”非欺诈”。一旦模型从这些示例中学习,你就可以使用该模型预测交易是否是欺诈性的。

2010年代AI模型的成功在于监督学习。开启深度学习革命的模型AlexNet (Krizhevsky et al., 2012)采用了监督学习。它被训练学习如何对ImageNet数据集中的超过100万张图像进行分类。它将每张图像分类为1,000个类别中的一个,如”汽车”、“气球”或”猴子”。

监督学习的缺点是数据标注昂贵且耗时。如果一个人标注一张图像需要5美分,那么为ImageNet标注一百万张图像就需要5万美元。5 如果你希望两个不同的人标注每张图像——这样你可以交叉检查标签质量——成本将翻倍。由于世界包含的物体远超1,000种,要扩展模型的能力以处理更多物体,你需要添加更多类别的标签。要扩展到100万个类别,仅标注成本就会增加到5000万美元。

标注日常物体是大多数人无需事先培训就能完成的工作。因此,可以相对便宜地完成。然而,并非所有标注任务都如此简单。为英语到拉丁语模型生成拉丁语翻译更昂贵。标注CT扫描是否显示癌症迹象的成本将是天文数字。

自监督学习有助于克服数据标注瓶颈。在自监督学习中,模型可以从输入数据中推断标签,而不需要显式标签。语言建模是自监督的,因为每个输入序列都提供标签(要预测的token)和模型可以用来预测这些标签的上下文。例如,句子”我喜欢街头食物。“提供了六个训练样本,如表1-1所示。

表 1-1.语言建模中从句子”我喜欢街头食物。“生成的训练样本。 {#calibre_link-28}
输入(上下文) 输出(下一个token)
<BOS>
<BOS>, 我 喜欢
<BOS>, 我, 喜欢 街头
<BOS>, 我, 喜欢, 街头 食物
<BOS>, 我, 喜欢, 街头, 食物
<BOS>, 我, 喜欢, 街头, 食物, 。 <EOS>

在表1-1中,<BOS>和<EOS>标记序列的开始和结束。这些标记对于语言模型处理多个序列是必要的。每个标记通常被模型视为一个特殊token。序列结束标记特别重要,因为它帮助语言模型知道何时结束其响应。6

注意

自监督学习不同于无监督学习。在自监督学习中,标签从输入数据中推断。在无监督学习中,你根本不需要标签。

自监督学习意味着语言模型可以从文本序列中学习,而无需任何标注。由于文本序列无处不在——在书籍、博客文章、文章和Reddit评论中——可以构建大量训练数据,使语言模型能够扩展成为LLM。

然而,LLM hardly是一个科学术语。语言模型要多大才能被认为是大型的?今天的大型明天可能被认为是微小的。模型的大小通常通过其参数数量来衡量。参数是ML模型中通过训练过程更新的变量。7 一般来说,虽然这并不总是正确的,模型拥有的参数越多,其学习期望行为的能力就越强。

当OpenAI的第一个生成式预训练transformer(GPT)模型在2018年6月发布时,它有1.17亿个参数,这被认为是大型的。2019年2月,当OpenAI推出拥有15亿参数的GPT-2时,1.17亿被降级为小型。截至本书写作时,拥有1000亿参数的模型被认为是大型的。也许有一天,这个规模将被认为是小型的。

在进入下一节之前,我想讨论一个通常被视为理所当然的问题:为什么更大的模型需要更多数据?更大的模型有更强的学习能力,因此需要更多训练数据来最大化其性能。8 你也可以在小数据集上训练大模型,但这将是计算资源的浪费。你可以用更小的模型在这个数据集上取得相似或更好的结果

从大型语言模型到基础模型

虽然语言模型能够完成令人难以置信的任务,但它们仅限于文本。作为人类,我们不仅通过语言感知世界,还通过视觉、听觉、触觉等。能够处理文本之外的数据对于AI在现实世界中运行至关重要。

基于这个原因,语言模型正在扩展以融入更多数据模态。GPT-4V和Claude 3可以理解图像和文本。一些模型甚至能理解视频、3D资产、蛋白质结构等。将更多数据模态融入语言模型使它们变得更加强大。OpenAI在2023年的GPT-4V系统卡片中指出“将额外的模态(如图像输入)融入LLM被某些人视为AI研究与开发的关键前沿。”

虽然许多人仍然称Gemini和GPT-4V为LLM,但它们更准确地被称为基础模型基础这个词既表明了这些模型在AI应用中的重要性,也表明它们可以根据不同需求进行构建。

基础模型标志着AI研究传统结构的突破。长期以来,AI研究按数据模态进行划分。自然语言处理(NLP)只处理文本。计算机视觉只处理视觉。纯文本模型可用于翻译和垃圾邮件检测等任务。纯图像模型可用于对象检测和图像分类。纯音频模型可以处理语音识别(语音转文本,或STT)和语音合成(文本转语音,或TTS)。

能够处理多种数据模态的模型也被称为多模态模型。生成式多模态模型也被称为大型多模态模型(LMM)。如果语言模型在仅基于文本token的条件下生成下一个token,那么多模态模型则在基于文本和图像token,或模型支持的任何模态的条件下生成下一个token,如[图1-3]所示。

就像语言模型一样,多模态模型需要数据来扩展规模。自监督对多模态模型同样有效。例如,OpenAI使用了一种称为自然语言监督的自监督变体来训练他们的语言-图像模型CLIP (OpenAI, 2021)。他们没有为每张图像手动生成标签,而是找到了在互联网上共同出现的(图像,文本)对。他们能够生成一个包含4亿个(图像,文本)对的数据集,比ImageNet大400倍,且无需手动标注成本。这个数据集使CLIP成为第一个能够在不需要额外训练的情况下泛化到多个图像分类任务的模型。

注意

本书使用基础模型这一术语来指代大型语言模型和大型多模态模型。

注意CLIP不是生成式模型——它没有被训练来生成开放式输出。CLIP是一个嵌入模型,被训练来产生文本和图像的联合嵌入。[“嵌入简介”]详细讨论了嵌入。现在,你可以将嵌入看作是旨在捕获原始数据含义的向量。像CLIP这样的多模态嵌入模型是生成式多模态模型的骨干,如Flamingo、LLaVA和Gemini(前身为Bard)。

基础模型也标志着从任务特定模型向通用模型的转变。以前,模型通常为特定任务开发,如情感分析或翻译。为情感分析训练的模型无法进行翻译,反之亦然。

基础模型,由于其规模和训练方式,能够处理广泛的任务。开箱即用的通用模型可以在许多任务上相对良好地工作。LLM既能进行情感分析又能进行翻译。然而,你通常可以调整通用模型以最大化其在特定任务上的性能。

[图1-4]显示了Super-NaturalInstructions基准测试用于评估基础模型的任务(Wang et al., 2022),提供了基础模型能执行的任务类型的概念。

想象你正在与零售商合作构建一个为其网站生成产品描述的应用程序。开箱即用的模型可能能够生成准确的描述,但可能无法捕获品牌的声音或突出品牌的信息传递。生成的描述甚至可能充满营销辞令和陈词滥调。

  1. 9↩︎