图书前言

驾驭浪潮,铸造价值

——开启大模型产品化的工程时代

我们正处在一个激动人心又充满挑战的时代。以大语言模型(LLM)为代表的生成式人工智能,正以惊人的速度渗透到各行各业,从根本上重塑着软件的定义、人机交互的范式乃至商业世界的逻辑。作为一名长期关注软件工程演进的学者,我将这一变革视为继“软件作坊”与“软件工厂”之后,迈向“软件智能体”时代的黎明——一个由数据、模型和算力共同驱动,以智能化为核心特征的全新纪元。

然而,当ChatGPT引发的惊叹与狂热逐渐冷却,一个更为严峻的现实问题摆在了所有从业者面前:如何将这些强大的、看似无所不能的模型,转化为稳定、可靠且具有商业价值的产品?从惊艳的技术演示(Demo)到真正服务于亿万用户的生产系统(Production),其间横亘着一道深不见底的鸿沟。这道鸿沟,正是“模型”与“产品”之间的距离,也是无数AI项目折戟沉沙的根源所在。

这正是《大模型产品化手册:工程化方法与实践》这本书存在的价值。它并非一本空谈模型原理或炫技算法的专著,而是一本极其稀缺的、真正聚焦于“工程化落地”的全栈实战指南。作者团队凭借其在机器学习和语言学领域的深厚积累,敏锐地洞察到了当前大模型产品化过程中的核心痛点:数据科学家、软件工程师与产品经理之间普遍存在的“认知鸿沟”。

本书的独特之处在于,它用一种系统化的工程思维,打通了从数据准备到最终部署的全链路。

● 在基础设施与模型策略上,它直面“自建还是购买”的战略抉择,并深入探讨了如何构建高效的AI基础设施以应对训练与推理的挑战。这与当前行业普遍关注的混合部署、成本优化趋势不谋而合。书中关于“从数据到基础模型”的讨论,以及对参数高效微调(PEFT)技术,特别是LoRA/QLoRA等主流方法的深入讲解,精准地抓住了当前模型定制的核心技术脉络。这使得开发者不仅知其然,更知其所以然,能在有限的资源下做出最优的技术选型。

● 在服务化与应用构建上,本书将“大语言模型的服务”置于生产环境的真实场景中进行考量,探讨API设计、流量应对与服务优化。同时,它将“提示工程”从一门“玄学”转变为一门“科学”,并进一步探讨了如何围绕模型构建具有良好用户体验的应用程序。这与业界正在探索的Agentic AI应用、结构化提示等前沿方向一脉相承。 

● 在部署与实践上,从构建VSCode编码助手到将模型部署在树莓派这样的边缘设备上,书中的实战项目极具巧思。它让读者亲身体验模型压缩、边缘计算与用户体验之间的微妙平衡,深刻理解在不同场景下工程约束对技术方案的决定性影响。

更难能可贵的是,本书贯穿着一种“决策框架”思维。无论是技术选型、成本评估,还是风险控制,它始终引导读者在复杂的现实约束下,基于对业务场景的深刻理解做出理性决策。这种思维方式,正是将AI潜力转化为商业价值的关键催化剂,也是我所倡导的“软件工程3.0”思想的核心——在不确定性中构建高质量、高适应性的智能系统。

这个时代,技术迭代的速度远超我们的想象。从大型数据中心的高性能推理,到边缘设备上的轻量化部署;从全量微调的“重工业”模式,到QLoRA等参数高效微调的“轻骑兵”战术;从简单的API调用,到复杂的Agent智能体构建,大模型的技术生态日新月异。对于渴望在AI浪潮中把握先机的组织和个人而言,本书提供了一张宝贵的认知地图和技术路线图。

翻开这本书,你将踏上的不仅是一次探索前沿技术的旅程,更是一场关于如何将颠覆性技术系统化、工程化,最终使其真正服务于人类社会的深度思考。我深信,《大模型产品化手册:工程化方法与实践》将成为每一位AI实践者、软件工程师和科技管理者书桌上不可或缺的案头宝典。

——朱少民,同济大学特聘教授、《软件工程3.0》的作者

译 者 序

我们正处在一个由人工智能驱动的深刻变革时代,而大语言模型(Large Language Model, LLM)无疑是这场技术革命的核心引擎。从改变我们日常与信息的交互方式,到重塑各行各业的商业逻辑与创新边界,LLM正在以前所未有的深度和广度渗透到社会的每一个角落。在这个浪潮中,仅仅了解LLM的概念已经远远不够,掌握如何将其“产品化”,使其从前沿技术真正落地为可靠、高效、有价值的应用,才是抓住时代机遇、赢得竞争优势的关键。然而,从理想到现实的道路充满挑战,为了帮助你攻克这些难题,《大模型产品化手册:工程化方法与实践》应运而生。

本书旨在为你提供一张清晰、详尽的路线图,系统性地引导你走过从概念到产品的全过程。我们从探讨LLM的应用前景与“自建”或“购买”的战略抉择出发,为你奠定坚实的语言学与模型工作原理的基础,并深入剖析LLM在实际应用中为何如此充满挑战。在此之上,本书将带你进入核心的实战构建阶段:从准备高质量数据与选择基础模型,到亲手从零开始训练并精通多种微调方法,再到构建健壮的模型服务API与应对生产环境中的各种难题。我们还将一同探索提示工程的艺术,学习如何围绕模型构建功能丰富、体验优秀的应用。更重要的是,本书包含三个精心设计的项目实战章节,你将亲手部署一个LLama 3模型,打造一个能融入日常开发的VSCode编码助手,甚至挑战在资源受限的树莓派(Raspberry Pi)上成功运行大模型。最后,我们将一同展望LLM的未来,探讨激动人心的前沿研究方向。

读完本书,你将获得的不仅仅是零散的知识点,而是一套完整、系统的大模型产品化方法论与实战能力。你将能够自信地为你的业务场景评估技术选型,并独立胜任从数据准备、模型微调到服务部署的全链路工作;你将掌握提升模型性能与用户体验的关键技巧,懂得如何围绕核心模型构建稳定、高效的应用程序;你将具备诊断并解决生产环境中常见问题的能力,真正将大模型技术转化为可靠的商业价值。最终,本书将帮助你完成从技术的旁观者或使用者到一名有能力、有远见的构建者和引领者的转变,让你在未来的技术浪潮中胸有成竹,占据主动。让我们一同开启这段激动人心的旅程,亲手将大语言模型的巨大潜力转化为触手可及的现实。

最后,我想衷心感谢清华大学出版社的王军老师,感谢他帮助我出版了多本关于机器学习、人工智能、云计算以及高性能计算的书籍,感谢他为我提供一种新的与大家分享知识的方式。

殷海英

埃尔赛贡多,加利福尼亚州

序  言

如果你不是一直待在山洞里,那么你一定知道,大语言模型(LLM)已经无处不在,成为许多人日常工作中不可或缺的工具。如果你正在阅读《大模型产品化手册:工程化方法与实践》,那么很有可能你已经将LLM集成进了你的工作流程。但你可能会问,如何将LLM部署到生产环境呢?

这正是《大模型产品化手册:工程化方法与实践》要回答的问题。作者凭借在机器学习和语言学领域的丰富经验,提供了一本全面的指南,帮助你解决将LLM部署到生产环境的各种复杂问题。本书不仅探讨了实现过程中的技术细节,还深入分析了战略决策、伦理问题以及生产部署中至关重要的最佳实践,确保LLM能够以负责任且高效的方式应用于生产环境。

本书涵盖了广泛的主题。从LLM的基础概念开始,深入讲解了语言建模、LLM的MLOps、提示工程等领域。你将从底层原理开始,全面掌握与LLM合作的核心方法。本书将在快速发展的技术浪潮中保持其长久的价值,至少在当前这个阶段,它的指导意义是无法替代的。

阅读这本书时,应保持开放的心态,同时保持批判性思维。LLM的未来并非注定,它将由我们做出的选择和我们如何将这些强大的工具应用到生产环境中决定。让这本书成为你探索在生产环境中应用LLM的指南。

——Joe Reis,《数据工程基础》(Fundamentals of Data Engineering)的作者

献  词

本书献给我的妻子Jess,以及我的孩子们Odin、Magnus和Emrys,感谢你们在我经历风雨时支持我。

——Christopher Brousseau

我将本书献给我的妻子Evelyn和女儿Georgina。Evelyn,感谢你在这段旅程中始终如一的支持和鼓励,你的付出是这本书得以完成的关键。Georgina,你是我源源不断的灵感和动力来源。你的微笑照亮了我的每一天,提醒我去享受这个世界中的美好。我希望并相信,本书将为你们开创一个更美好的明天。

——Matt Sharp

作者简介

Christopher Brousseau是摩根大通的一名资深机器学习工程师(Machine Learning Engineer,MLE),拥有语言学和本地化背景。他专注于语言学驱动的自然语言处理(Nature Language Processing,NLP),尤其在国际化领域有深入研究,并曾在初创公司和财富500强企业中成功领导过机器学习和数据产品项目。

Matt Sharp是一名工程师、数据科学家,也是在MLOps领域经验丰富的技术领导者。他曾为初创公司和顶级科技公司成功领导过多个数据项目。Matt擅长在生产环境中部署、管理和扩展机器学习模型,无论生产环境的具体形式如何。

 

致    谢 

在写这本书之前,我们曾幻想过逃到大山中,藏身于森林深处的小木屋,远离一切干扰,静心写作。但我终究未曾脱离人群的怀抱,没有那么多人给予的帮助,我绝对无法完成这本出色的书籍。在整个创作过程中,本书经历了许多人的审阅和反馈,这些意见对它的诞生起到了至关重要的作用。

首先,我们要感谢我们的编辑和审阅人:Jonathan Gennick、Al Krinker、Doug Rudder、Sebastian Raschka 和 Danny Leybzon。Danny 是一位数据和机器学习领域的专家,是本书的技术编辑。他曾为财富500强企业和创新型科技初创公司设计并实施数据和机器学习战略。目前,他在西班牙庞培法布拉大学从事强化学习的研究。我们非常感激上述几位人士 提供的直接反馈和真诚批评,言语无法表达我们对你们的深深谢意。

我们也非常感谢社区中有许多人鼓励我们写这本书。许多人以导师、同事和朋友的身份支持了我们。在此,我们特别感谢那些在鼓励、支持,甚至是积极推广本书方面给予帮助的人,以下是他们的姓名(按字母顺序排列):Joe Reis、Mary MacCarthy、Lauren Balik、Demetrios Brinkman、Joselito Balleta、Mkolaj Pawlikowski、Abi Aryan、Bryan Verduzco、Fokke Dekker、Monica Kay Royal、Mariah Peterson、Eric Riddoch、Dakota Quibell、Daniel Smith、Isaac Tai、Alex King、Emma Grimes、Shane Smit、Dusty Chadwick、Sonam Choudhary、Isaac Vidas、Olivier Labrèche、Alexandre Gariépy、Amélie Rolland、Alicia Bargar、Vivian Tao、Colin Campbell、Connor Clark、Marc-Antoine Bélanger、Abhin Chhabra、Sylvain Benner、Jordan Mitchell、Benjamin Wilson、Manny Ko、Ben Taylor、Matt Harrison、Jon Bradshaw、Andrew Carr、Brett Ragozzine、Yogesh Sakpal、Gauri Bhatnagar、Sachin Pandey、Vinícius Landeira、Nick Baguely、Cameron Bell、Cody Maughan、Sebastian Quintero 和 Will McGinnis。这不是完整的名单,我们肯定遗漏了某些人。如果你在其中,感谢你!请与我们联系,我们一定会及时更正。

接下来,我们衷心感谢Manning团队的所有成员,包括Aira Dučić、Robin Campbell、Melissa Ice、Ana Romac、Azra Dedic、Ozren Harlović、Dunja Nikitović、Sam Wood、Susan Honeywell、Erik Pillar、Alisa Larson、Melody Dolab等。

同时,我们也要感谢所有的审阅者:Abdullah Al Imran、Allan Makura、Ananda Roy、Arunkumar Gopalan、Bill Morefield、Blanca Vargas、Bruno Sonnino、Dan Sheikh、Dinesh Chitlangia、George Geevarghese、Gregory Varghese、Harcharan S. Kabbay、Jaganadh Gopinadhan、Janardhan Shetty、Jeremy Bryan、John Williams、Jose San Leandro、Kyle Pollard、Manas Talukdar、Manish Jain、Mehmet Yilmaz、Michael Wang、Nupur Baghel、Ondrej Krajicek、Paul Silisteanu、Peter Henstock、Radhika Kanubaddhi、Reka Anna Horvath、Satej Kumar Sahu、Sergio Govoni、Simon Tschoeke、Simone De Bonis、Simone Sguazza、Siri Varma Vegiraju、Sriram Macharla、Sudhir Maharaj、Sumaira Afzal、Sumit Pal、Supriya Arun、Vinod Sangare、Xiangbo Mao、Yilun Zhang。你们的宝贵意见使本书更加完善。

关于封面插图

本书封面的插图是由尼古拉·德·勒梅辛(Nicolas de Lermessin,1640—1725)创作的版画,名为《印刷工人的服饰》(Habit d’imprimeur en lettres),也可译为《印刷工人的服装》。这幅版画出自18世纪初雅克·基凯(Jacques Chiquet)出版的系列作品《奇异服饰与职业》(Les Costumes Grotesques et les Metiers)。

在那个时代,通过服饰就能轻易辨识出人们的居住地以及从事的职业和社会地位。Manning通过这类珍贵的历史收藏插图,将几百年前区域文化的丰富多样性重新呈现,以彰显计算机行业的创新和开创精神。

前    言

2023年1月,我坐在一对夫妻旁边,他们开始讨论最近的热门话题——ChatGPT。丈夫兴奋地讲述他对这项技术的激动心情,表示他和自己的孩子一起用它写书,他们已经写了70页了。然而,妻子却没有那么兴奋,反而显得有些担忧。她是一名英语老师,担心这项技术会对她的学生产生影响。

就在这时,丈夫说了一句让我完全没有预料到的话:他的朋友在公司解雇了100名写手。我的下巴差点掉下来。原来,丈夫的朋友拥有一个小型网站,雇用自由撰稿人写一些具有讽刺意味的、幽默的,以虚构情节为基底的文章。在看到这项技术后,这位朋友拿了一些文章标题,要求ChatGPT写一篇文章。结果,生成的内容和网站上的其他文章几乎没什么区别!这些内容本来就不需要真实性,而这正是大语言模型的强项。它能够在几分钟内写出成百上千篇文章,而且完全免费!

从那时起,我们经历了无数次类似的对话——只是细节有所不同。从大学生群体到紧密的社区成员,大家都在谈论AI。尽管如此,真正亲自体验过它的人却不多,除了使用付费API查询之外。多年来,我们已经看到这项技术如何改变翻译行业。定制翻译服务越来越难以找到客户,而PEMT(机器翻译后编辑)工作流程的兴起,让翻译人员能够以更低的成本完成更多的工作,并且保持相似的质量水平。我们也希望大语言模型能够在其他行业发挥类似的作用。

ChatGPT首次发布时,实际上还是处于研究阶段的测试版,OpenAI甚至还没有推出Plus订阅服务。在我们进入这个行业的这段时间,已经见过很多机器学习模型通过API发布,并附带一篇白皮书。这样做有助于研究人员积累影响力,展示一个可用的演示样品。然而,这些演示样品通常只是演示性质的——它们并非为大规模部署而设计,且通常因为成本原因在一个月后就会被撤下。OpenAI也曾多次采取类似的做法。

在看到BERT、ELMO、T5、GPT-2以及其他一系列语言模型出现又消失,且除了NLP社区之外几乎没有引起任何关注后,我们已经意识到,GPT-3是不同的。大语言模型不仅流行,在技术上也极为复杂。部署一个大语言模型时会遇到无数挑战和陷阱,而我们也看到过很多人在这个过程中犯错误。因此,有机会写这本书时,我们毫不犹豫地决定参与其中。《大模型产品化手册:工程化方法与实践》正是我们一直希望能拥有的那本书。

关 于 本 书

《大模型产品化手册:工程化方法与实践》不是一本典型的数据科学书籍。事实上,在数据领域几乎找不到类似的书籍,原因在于,成功的数据产品往往需要一个庞大的团队来支撑——数据科学家负责构建模型,数据工程师负责搭建数据管道,MLOps工程师负责搭建平台,软件工程师负责开发应用,产品经理则要参加无休止的会议,当然,每个团队背后还少不了那些经理,他们的贡献往往只是提问——通常是重复相同的问题,只是想搞明白事情的真相。

有很多书籍专门面向这些不同的角色,但很少有书能将整个过程从头到尾串联起来。虽然本书聚焦于大语言模型(LLM),但事实上它可以被看作一本关于LLMOps的书籍,不过你从中获得的远不止如何将一个大模型部署到服务器上。你将获得一份路线图,教你如何创建成功的机器学习产品——无论是大语言模型还是其他类型的——让最终用户满意。

本书的目标读者

任何参与开发使用LLM应用的人都会从本书中受益,包括前面提到的所有角色。然而,受益最多的可能是那些拥有跨职能角色的人,如机器学习工程师。本书内容注重实践,我们希望读者具备Python编程基础,尤其是对PyTorch有一定的了解。

本书内容路线图

本书共有12章,其中有3章是项目实战章节。

● 第1章介绍了大语言模型(LLM)的一些有前景的应用,并讨论了自建与购买的选择。本书的重点是展示如何进行构建,因此希望帮助你判断自建是不是适合你的决策。

● 第2章奠定了必要的基础。我们讨论了语言学的基础知识,并定义了一些需要了解的术语,以便你从本书中获得最大收益。接着,将介绍帮助你建立自然语言建模技术的知识。到本章结束时,你应该理解大语言模型是如何工作的,以及它们擅长和不擅长的领域。你应该能够判断大语言模型是否适合你的项目。

● 第3章解决了一个显而易见的问题,解释了为什么大语言模型如此难以使用。接下来讨论了一些必要的概念和解决方案,你需要掌握这些内容才能开始使用大语言模型。然后,讨论了你需要获取的必要工具和基础设施要求,并解释其原因。

● 第4章开始准备工作,讨论你需要获取的必要资产:从数据到基础模型。

● 第5章展示如何从零开始训练一个大语言模型,并介绍多种微调模型的方法,详细讲解每种方法的优缺点。

● 第6章深入讨论了大语言模型的服务和你创建API需要了解的内容。讨论了为大语言模型设置VPC,分析了常见的生产环境挑战及相应的解决方法。

● 第7章讨论了提示工程(prompt engineering)以及如何最大化大语言模型的响应效果。

● 第8章探讨了围绕大语言模型构建应用程序,并介绍了你可能想要考虑加入的功能,以改善用户体验。

● 第9章是本书的第一个项目,你将在本章构建一个简单的LLama 3模型并进行部署。

● 第10章构建了一个编码助手,你可以直接在VSCode中使用它。

● 第11章是一个项目,将把大语言模型部署到Raspberry Pi上。

● 第12章结束本书,分享我们对大语言模型作为一项技术的未来展望,包括对有前景的研究领域的讨论。

总体而言,本书的设计是为了让读者从头到尾阅读,每一章都建立在上一章的基础上。对我们来说,章节的顺序模拟了一个理想的情况,从而概述了你在最佳情况下构建大语言模型(LLM)产品时所需要的知识和会经历的步骤。不过,本书是一本关于生产环境的书,而生产环境就是现实的所在。别担心,我们理解现实世界是复杂的。每章都是独立的,读者可以根据自己的兴趣和理解水平自由跳读,我们也鼓励这样做。

关于代码

本书包含了许多源代码示例,这些代码既有带编号的代码清单,也有与普通文本混排的代码。这两种情况下,源代码都采用了等宽字体格式,便于与普通文本区分。有时,为了突出显示与前面步骤中不同的部分,代码会加粗,通常是新增功能或修改过的代码行。

很多情况下,原始源代码进行了重新格式化;调整了换行和缩进,以适应本书的页面布局。在极少数情况下,即使做了这些调整,仍然无法完全适应页面空间,因此部分代码清单中包含了续行符号(➥)。此外,在正文中讲解源代码时,通常会去除代码中的注释。有些代码清单旁边附有注释,帮助读者理解关键概念。

可在本书的在线版本liveBook中获取可执行的代码片段,网址为https://livebook.

manning.com/book/llms-in-production。书中的完整代码示例可以从Manning网站下载,链接为 https://www.manning.com/books/llms-in-production,也可以从GitHub获取,链接为https://github.com/IMJONEZZ/LLMs-in-Production。本书代码示例也可以扫描封底二维码下载。