557 - 《读书笔记:AI Engineering,Building Application with Foundation Models》

发布于 2025年4月27日

关于作者:Chip Huyen 是一位专注于机器学习(ML)系统的知名作家和计算机科学家,曾在 NVIDIA、Snorkel AI 工作,并创立了一家 AI 基础设施初创公司(后被收购)。她还在斯坦福大学教授 ML 系统课程。她的专业知识体现在 2022 年亚马逊畅销书《Designing Machine Learning Systems》(O’Reilly 出版社)中,该书已被翻译成超过 10 种语言。此外,Huyen 还撰写了四本越南语畅销书,包括旅游系列《Xach ba lo len va Di》。

1、Chapter 1:介绍构建基于基础模型的 AI 应用程序。

比较早的模型是大语言模型(LLMs),后面发展到基础模型(Foundation Models)。基础模型源于语言模型,通过自监督学习(Self-Supervision)的方式实现规模化,并扩展到多模态(Multimodal),成为 AI 工程的基础。基于基础模型发展出来了 AI 工程,因其基础模型的通用能力、投资热潮和低进入门槛而迅速发展。

基础模型广泛应用于编码、图像视频生成、写作(MIT研究(Noy & Zhang, 2023)显示 ChatGPT 使写作时间减少 40%,质量提升 18%)、教育(Duolingo 个性化课程)、对话机器人(客服机器人、3D 智能NPC)、信息聚合和数据组织(74% 用户用 AI 做总结),以及工作流自动化(AI Agent 显著提升个人和企业效率)等方面。

2、Chapter 2:理解基础模型。

基础模型的构建涉及复杂的训练过程和高昂成本,普通用户无需掌握开发细节,但是,理解模型之间的差异尤其重要。由于模型的训练过程缺乏透明度,因此了解模型的差异主要依赖于数据来源、架构选择和后训练(Post-Training)测试。

模型性能高度依赖训练数据的质量和分布,数据不足或不匹配可能导致模型无法胜任特定任务。OpenAI 的 GPT-3 和 Google 的 Gemini 均使用 Common Crawl 数据;OpenAI 在训练 GPT-2 时仅使用 Reddit 上至少获3个点赞的链接以提高数据质量。

英语在互联网数据中占主导地位,导致通用模型在英语任务上的表现远优于其他语言,尤其是在低资源语言上。Common Crawl中英语占比45.88%,是第二大语言俄语(5.97%)的 8 倍。

模型架构选择和规模直接影响性能和可用性。当前 Transformer 架构主导语言模型领域,但存在局限性,替代架构正在兴起,比如 RWKV(基于RNN)、Mamba(状态空间模型,线性时间序列建模)和Jamba(混合Transformer-Mamba)显示出长序列处理潜力,Mamba-3B 在语言建模上超越同规模 Transformer 模型。

模型规模(参数数量、训练令牌数、计算成本)是性能提升的关键,但存在数据和电力瓶颈。Llama 系列模型参数从 7B 到 405B,训练令牌数从 Llama 1 的 1.4 万亿增至 Llama 3 的 15 万亿。GPT-3-175B 训练计算量为 3.14×10^23 FLOPs,成本约 400万 美元(70%利用率下)。训练数据集增长速度远超新数据生成速度,同时电力消耗预计到 2030 年占全球用电 4% - 20%,这会限制模型规模进一步扩展。

后训练通过监督微调(SFT)和偏好微调(如RLHF)对齐模型与人类偏好,解决预训练数据质量低导致的问题。InstructGPT 后训练仅占计算资源的 2%,90% 标注员拥有大学学位,生成一组(提示,响应)对成本约 10 美元。RLHF 标注成本为每对比 3.5美元,标注一致性约 73%。

采样(Sampling)是模型生成输出的关键过程,其概率性质导致创造性与不一致性并存,影响性能和用户体验。温度(Temperature)调节创造性,0.7 常用于平衡创造力和预测性;Top-p 采样累计概率通常设为 0.9-0.95 。

3、Chapter 3:评估方法论。

AI 的广泛应用增加了灾难性失败的风险,如聊天机器人鼓励自杀、AI 生成虚假证据、以及提供错误信息导致赔偿等案例(具体案例比如律师提交 AI 幻觉证据、加拿大航空因 AI 错误信息赔偿)。「评估」是降低风险和发现机会的关键,但基础模型的开放性和复杂性使其评估比传统机器学习模型更加困难。

精确评估(如功能正确性和相似性度量)提供无歧义的判断结果,适用于开放性响应评估。功能正确性评估系统是否完成预期功能(如代码生成中的执行准确性,AI生成代码通过单元测试验证),常见于代码生成和游戏机器人任务(基准如 HumanEval、MBPP 使用 pass@k 分数,10 个问题中解决 5 个,pass@3 为 50%)。相似性度量对比生成响应与参考数据,包括精确匹配(适用于简单任务,如“2+3=5”)、词汇相似性(基于文本重叠,如BLEU、ROUGE)和语义相似性(基于嵌入,如BERTScore)。

嵌入是将数据转化为数值表示以捕捉语义,用于语义相似性评估和多模态任务。嵌入是向量(如“the cat sits on a mat”可能为 [0.11, 0.02, 0.54]),常见模型包括BERT(嵌入大小768-1024)、CLIP(512)和OpenAI嵌入API(1536-3072)。嵌入质量通过任务效用评估(如MTEB基准),应用包括分类、推荐系统和RAG(检索增强生成)。

AI 作为评判者(Judge)是一种主观评估方法,利用 AI 模型评估其他 AI 响应,因其速度快、成本低和灵活性而流行,但存在一致性、标准模糊和偏见等问题。AI 评判者无需参考数据,可基于任意标准评估,与人类评估相关性高(2023年Zheng et al.研究显示GPT-4与人类一致性达85%,高于人类间一致性81%)。然而,AI 评判者不一致(同一输入可能多次评分不同)、标准不统一(不同工具如MLflow、Ragas对“忠实度”定义不同)、成本和延迟增加(使用GPT-4评估可能翻倍API调用)、以及偏见。2023 年 LangChain 报告显示 58% 平台评估由 AI 评判者完成。

比较评估(Comparative Evaluation)通过模型间直接对比排名(如LMSYS Chatbot Arena),适用于主观质量判断,但面临扩展性、标准化和绝对性能判断的挑战。比较评估优于逐点评估(Pointwise Evaluation)在于易于判断两模型优劣(如Anthropic 2021年首次使用,ChatGPT也收集用户对比反馈)。

4、Chapter 4:评估 AI 系统 。

评估是AI应用开发中的关键环节,缺乏可靠的评估流程是AI采用的主要障碍之一。

AI 应用的评估应基于明确的标准,并采用“评估驱动开发”(evaluation-driven development)的理念,即在开发前定义评估标准。评估标准分为领域特定能力、生成能力、指令遵循能力)以及成本与延迟四大类。1)「领域特定能力」是针对特定任务(如编程、翻译)的能力评估,常用公共或私有基准测试(benchmarks),如 BIRD-SQL(评估SQL查询效率),2)「生成能力」聚焦开放式输出质量,评估指标包括流畅性、连贯性、事实一致性和安全性,3)「指令遵循能力」评估模型是否能按指令生成预期输出,涉及结构化输出(如JSON格式)和角色扮演,4)「成本与延迟」强调平衡模型质量与运行成本。

模型选择需基于应用需求,而非单纯追求“最佳模型”。决策涉及是否自托管开源模型或使用模型API,需权衡硬性属性(如隐私、许可证)和软性属性(如准确性)。自建 vs. 购买?开源模型与商业API的比较涉及七大维度,包括数据隐私(API可能泄露数据,如三星事件)、性能(商业模型通常领先,如 MMLU 趋势图)、成本(API 按使用计费,自托管需工程投入)等。

可靠的评估流程是 AI 应用成功的基础,需涵盖系统各组件、明确评估准则和方法,并持续迭代以适应变化。强调评估系统各部分(端到端、每轮、每任务),如 PDF 简历提取雇主信息需分别评估文本提取和雇主识别步骤。任务评估(如BIG-bench的twenty_questions)关注整体完成效果。选择评估方法(自动指标、AI法官、人工评估),并标注评估数据,注重数据切片(slicing)以发现偏见或改进点。OpenAI 建议样本量与得分差异相关(如差异3%需1000样本)。评估流程需测试可靠性、成本和指标相关性。

5、Chapter 5:提示工程。

提示工程作为最简单且常见的模型适应方法,相较于微调(finetuning)无需更改模型权重,仅通过语言指导即可调整模型行为。

提示工程是指通过设计指令(prompt)引导AI模型完成特定任务的过程。尽管提示工程看似简单,实则涉及复杂挑战,需将其视为人机沟通的艺术,而非单纯的文字调整。提示工程是一项实用技能,但仅依赖提示工程不足以构建生产级AI应用,还需统计学、工程学和传统机器学习知识支持(例如实验追踪、评估和数据集管理)。

提示是向模型发出的任务指令,可能包括任务描述、示例和具体任务内容(如回答问题或总结文本)。提示效果依赖于模型的指令遵循能力和对提示扰动的鲁棒性。文章引用数据表明,模型能力越强,鲁棒性越高,例如智能模型应能理解“5”和“five”的等价性。不同模型对提示结构偏好不同,例如 GPT-4 在任务描述位于提示开头时表现更佳,而 Llama 3 则在结尾时效果更好。

上下文学习(In-Context Learning)源于GPT-3论文(Brown et al., 2020),指通过提示中的示例教导模型新行为,无需更新权重。GPT-3 在少样本学习(Few-Shot Learning)中显著优于零样本学习(Zero-Shot Learning),而微软 2023 年分析显示 GPT-4 等强大模型在零样本场景下已接近少样本效果,但领域特定任务仍需示例支持。

系统提示(System Prompt)通常包含任务描述和角色设定,用户提示(User Prompt)则包含具体任务或问题。不同模型使用不同聊天模板(如Llama 2和Llama 3),模板错误可能导致性能问题。Anthropic文档指出,系统提示可通过角色设定提升模型一致性和创造性,OpenAI论文(Wallace et al., 2024)则揭示模型可能被训练优先关注系统提示。

模型上下文长度快速扩展,从 GPT-2 的 1K 增长到 Gemini-1.5 Pro 的 2M(2019-2024年),足以容纳复杂代码库或大量文档(如PyTorch代码库或2000个维基百科页面)。研究(Liu et al., 2023)表明,模型对提示开头和结尾的信息理解优于中间部分,通过 Needle in a Haystack 测试验证了这一现象。

提示工程最佳实践。

  • 清晰指令:明确任务目标、评分系统或输出格式,避免歧义。例如,要求模型评分时需指定是否允许小数分数。
  • 角色设定与示例:通过赋予模型特定角色(如一年级教师)或提供示例(如儿童聊天机器人回应虚构角色问题),引导模型采用合适视角。
  • 任务分解:将复杂任务拆分为子任务(如客户支持中的意图分类和响应生成),提升性能并便于监控和调试。
  • 思考链(CoT)与自评:通过“一步步思考”或自评提示,鼓励模型系统性解决问题,研究(Wei et al., 2022)显示 CoT 显著提升模型在数学和推理任务中的表现。
  • 迭代与版本管理:提示需不断迭代,建议将提示与代码分离,采用提示目录(Prompt Catalog)进行版本管理和搜索。

关于防御性提示工程与提示攻击。攻击类型包括提示提取(获取系统提示)、越狱(Jailbreaking,绕过安全限制)和提示注入(Prompt Injection,注入恶意指令)。攻击可能导致远程代码执行、数据泄露、品牌危机等严重后果,比如 Google AI 搜索“吃石头”事件(2024)和微软 Tay 聊天机器人种族主义言论事件(2016)。攻击手段从手动提示破解(模糊化、角色扮演如DAN攻击)到自动化攻击(如PAIR算法,Chao et al., 2023)和间接提示注入(通过工具或外部数据源)。

怎么防御?1)模型层面:OpenAI(Wallace et al., 2024)提出指令优先级层次,系统提示优先级最高,增强安全性,2)提示层面:明确禁止敏感信息输出,或重复系统提示以强化指令,3)系统层面:隔离代码执行、人工审批关键操作、设置输入输出护栏(Guardrails)等。

6、Chapter 6:RAG 和 Ag

内容预览已结束

此内容需要会员权限。请先登录以查看完整内容。