Files
2026-07-13 09:54:31 +00:00

52 KiB
Raw Permalink Blame History

Note

本文档由 WeHub 基于上游 README 翻译整理,属于社区翻译,非官方中文文档。
English · 原始项目 · 上游 README
原作者、版权与许可证归属以原始项目及本仓库 LICENSE 文件为准。


LLM Engineer's Handbook CoverLLM 课程分为三个部分:

  1. 🧩 LLM Fundamentals 为可选部分,涵盖数学、Python 和神经网络等基础知识。
  2. 🧑‍🔬 The LLM Scientist 专注于运用最新技术构建尽可能优秀的 LLM。
  3. 👷 The LLM Engineer 专注于创建基于 LLM 的应用并将其部署上线。

Note

基于本课程,我与人合著了 LLM Engineer's Handbook, a hands-on book that covers an end-to-end LLM application from design to deployment. LLM 课程将始终保持免费,你也可以通过购买这本书来支持我的工作。

如需更全面的课程版本,请查看 DeepWiki.

📝 Notebooks

我撰写的关于 LLM 的 Notebook 与文章列表。

展开/收起本节(可选)

Tools

Notebook Description Notebook
🧐 LLM AutoEval 使用 RunPod 自动评估你的 LLM Open In Colab
🥱 LazyMergekit 一键使用 MergeKit 轻松合并模型。 Open In Colab
🦎 LazyAxolotl 一键使用 Axolotl 在云端微调模型。 Open In Colab
AutoQuant 一键将 LLM 量化为 GGUF、GPTQ、EXL2、AWQ 和 HQQ 格式。 Open In Colab
🌳 Model Family Tree 可视化合并模型的族谱树。 Open In Colab
🚀 ZeroSpace 使用免费的 ZeroGPU 自动创建 Gradio 聊天界面。 Open In Colab
✂️ AutoAbliteration 使用自定义数据集自动进行 abliteration 处理模型。 Open In Colab
🧼 AutoDedup 使用 Rensa 库自动对数据集去重。 Open In Colab

Fine-tuning

Notebook Description Article Notebook
Fine-tune Llama 3.1 with Unsloth 在 Google Colab 中进行超高效率的监督微调(Supervised Fine-tuning)。 Article Open In Colab
Fine-tune Llama 3 with ORPO 使用 ORPO 以单阶段方式实现更便宜、更快速的微调。 Article Open In Colab
Fine-tune Mistral-7b with DPO 使用 DPO 提升监督微调模型的性能。 Article Open In Colab
Fine-tune Mistral-7b with QLoRA 在免费版 Google Colab 中使用 TRL 对 Mistral-7b 进行监督微调。 Open In Colab
Fine-tune CodeLlama using Axolotl 面向最先进微调工具的全流程指南。 Article Open In Colab
Fine-tune Llama 2 with QLoRA 在 Google Colab 中监督微调 Llama 2 的分步指南。 Article Open In Colab

Quantization

Notebook Description Article Notebook
Introduction to Quantization 使用 8 位量化(Quantization)优化大语言模型。 Article Open In Colab
4-bit Quantization using GPTQ 量化你自己的开源 LLM,以便在消费级硬件上运行。 Article Open In Colab
Quantization with GGUF and llama.cpp 使用 llama.cpp 量化 Llama 2 模型,并将 GGUF 版本上传至 HF Hub。 Article Open In Colab
ExLlamaV2: The Fastest Library to Run LLMs 量化并运行 EXL2 模型,并将其上传至 HF Hub。 Article Open In Colab

Other

Notebook Description Article Notebook
Merge LLMs with MergeKit 轻松创建你自己的模型,无需 GPU Article Open In Colab
Create MoEs with MergeKit 将多个专家合并为单个 frankenMoE Article Open In Colab
Uncensor any LLM with abliteration 无需重新训练即可微调 Article Open In Colab
Improve ChatGPT with Knowledge Graphs 使用知识图谱增强 ChatGPT 的回答。 Article Open In Colab
Decoding Strategies in Large Language Models 从束搜索(beam search)到核采样(nucleus sampling)的文本生成指南 Article Open In Colab

🧩 LLM 基础

本节介绍数学、Python 与神经网络方面的必备知识。你可能不必从这里开始学习,但可以在需要时查阅。

展开/收起本节(可选)

1. 机器学习数学基础

在掌握机器学习之前,理解支撑这些算法的基本数学概念非常重要。

  • 线性代数(Linear Algebra:这对于理解许多算法至关重要,尤其是深度学习中的算法。核心概念包括向量、矩阵、行列式、特征值与特征向量、向量空间以及线性变换。
  • 微积分(Calculus:许多机器学习算法涉及连续函数的优化,这需要理解导数、积分、极限与级数。多元微积分以及梯度(gradient)概念同样重要。
  • 概率与统计(Probability and Statistics:这对于理解模型如何从数据中学习并做出预测至关重要。核心概念包括概率论、随机变量、概率分布、期望、方差、协方差、相关性、假设检验、置信区间、最大似然估计以及贝叶斯推断(Bayesian inference)。

📚 学习资源:


2. 机器学习 Python 编程

Python 是一门强大而灵活的编程语言,凭借可读性、一致性与健壮的数据科学库生态,特别适合机器学习。

  • Python 基础:Python 编程需要扎实掌握基本语法、数据类型、错误处理以及面向对象编程。
  • 数据科学库:需要熟悉用于数值运算的 NumPy、用于数据处理与分析的 Pandas,以及用于数据可视化的 Matplotlib 和 Seaborn。
  • 数据预处理:包括特征缩放与归一化、处理缺失数据、异常值检测、类别数据编码,以及将数据划分为训练集、验证集与测试集。
  • 机器学习库:熟练掌握 Scikit-learn 至关重要——该库提供大量监督学习与无监督学习算法。理解如何实现线性回归、逻辑回归、决策树、随机森林、k 近邻(k-nearest neighborsK-NN)以及 K 均值聚类(K-means clustering)等算法也很重要。PCA 与 t-SNE 等降维技术也有助于可视化高维数据。

📚 学习资源:


3. 神经网络

神经网络是许多机器学习模型,尤其是深度学习领域的核心组成部分。要有效运用它们,必须全面理解其设计与运行机制。

  • 基础概念:包括理解神经网络的结构,例如层、权重、偏置以及激活函数(sigmoid、tanh、ReLU 等)。
  • 训练与优化:熟悉反向传播(backpropagation)以及不同类型的损失函数,如均方误差(Mean Squared ErrorMSE)与交叉熵(Cross-Entropy)。理解梯度下降(Gradient Descent)、随机梯度下降(Stochastic Gradient Descent)、RMSprop 与 Adam 等优化算法。
  • 过拟合(Overfitting:理解过拟合的概念(模型在训练数据上表现良好,但在未见数据上表现较差),并学习各种正则化技术(dropout、L1/L2 正则化、早停、数据增强)来防止过拟合。
  • 实现多层感知机(Multilayer PerceptronMLP:使用 PyTorch 构建 MLP,也称为全连接网络(fully connected network)。

📚 学习资源:


4. 自然语言处理(Natural Language ProcessingNLP

NLP 是人工智能中一个引人入胜的分支,它弥合人类语言与机器理解之间的鸿沟。从简单的文本处理到理解语言细微差别,NLP 在翻译、情感分析、聊天机器人等众多应用中发挥着关键作用。

  • 文本预处理:学习各种文本预处理步骤,如分词(tokenization,将文本拆分为词或句子)、词干提取(stemming,将词还原为词根形式)、词形还原(lemmatization,与词干提取类似但会考虑上下文)、停用词移除等。
  • 特征提取技术:熟悉将文本数据转换为机器学习算法可理解格式的技术。主要方法包括词袋模型(Bag-of-wordsBoW)、词频-逆文档频率(Term Frequency-Inverse Document FrequencyTF-IDF)以及 n-gram。
  • 词嵌入(Word Embeddings:词嵌入是一种词表示方法,使语义相近的词具有相近的表示。主要方法包括 Word2Vec、GloVe 与 FastText。
  • 循环神经网络(Recurrent Neural NetworksRNNs:理解 RNN 的工作原理——这是一种专为序列数据设计的神经网络。探索 LSTM 与 GRU,这两种能够学习长期依赖关系的 RNN 变体。

📚 学习资源:

🧑‍🔬 LLM 科学家

本课程的这一部分侧重于学习如何运用最新技术构建尽可能优秀的 LLM。

1. LLM 架构

不必深入掌握 Transformer 架构,但理解现代 LLM 的主要步骤很重要:通过分词(tokenization)将文本转换为数字,通过包含注意力机制的各层处理这些 token,最后通过多种采样策略生成新文本。

  • 架构概览:理解从编码器-解码器(encoder-decoderTransformer 到仅解码器(decoder-only)架构(如 GPT)的演进,后者构成了现代 LLM 的基础。重点关注这些模型在宏观层面如何处理和生成文本。
  • 分词(Tokenization:学习分词原理——文本如何转换为 LLM 可处理的数值表示。探索不同分词策略及其对模型性能和输出质量的影响。
  • 注意力机制:掌握注意力机制的核心概念,尤其是自注意力(self-attention)及其变体。理解这些机制如何使 LLM 能够处理长程依赖并在整个序列中保持上下文。
  • 采样技术:探索各种文本生成方法及其权衡。将贪心搜索(greedy search)、束搜索(beam search)等确定性方法与温度采样(temperature sampling)、核采样(nucleus sampling)等概率方法进行比较。

📚 参考资料


2. 预训练模型

预训练是计算密集且成本高昂的过程。虽然本课程不以此为重点,但扎实理解模型如何预训练(尤其在数据和参数方面)很重要。爱好者也可以小规模预训练参数量小于 1B 的模型。

  • 数据准备:预训练需要海量数据集(例如,Llama 3.1 在 15 万亿 token 上训练),需精心策划、清洗、去重和分词。现代预训练流水线会实施复杂过滤,以剔除低质量或有问题的内容。
  • 分布式训练:组合多种并行策略:数据并行(批次分布)、流水线并行(层分布)和张量并行(运算拆分)。这些策略需要在 GPU 集群间优化网络通信和内存管理。
  • 训练优化:使用带预热(warm-up)的自适应学习率、梯度裁剪和归一化以防止爆炸,采用混合精度训练以提高内存效率,并使用调优超参数的现代优化器(AdamW、Lion)。
  • 监控:使用仪表盘跟踪关键指标(损失、梯度、GPU 统计),针对分布式训练问题实施定向日志记录,并设置性能剖析以识别跨设备的计算与通信瓶颈。

📚 参考资料

  • FineWeb by Penedo et al.:重现用于 LLM 预训练的大规模数据集(15T)的文章,包含高质量子集 FineWeb-Edu。
  • RedPajama v2 by Weber et al.:另一篇关于大规模预训练数据集的文章和论文,包含诸多有趣的质量过滤器。
  • nanotron by Hugging Face:用于训练 SmolLM2. 的极简 LLM 训练代码库
  • 并行训练 by Chenyan Xiong:优化与并行技术概览。
  • 分布式训练 by Duan et al.:关于在分布式架构上高效训练 LLM 的综述。
  • OLMo 2 by AI2:开源语言模型,包含模型、数据、训练与评估代码。
  • LLM360 by LLM360:开源 LLM 框架,提供训练与数据准备代码、数据、指标和模型。

3. 后训练数据集

后训练数据集具有精确结构:指令与答案(监督微调),或指令与优选/拒绝答案(偏好对齐)。对话结构远比预训练所用的原始文本稀少,因此我们常需处理种子数据并精炼样本,以提高准确性、多样性和复杂度。更多信息与示例见我的仓库 💾 LLM Datasets.

  • 存储与对话模板:由于对话结构,后训练数据集以 ShareGPT 或 OpenAI/HF 等特定格式存储。随后将这些格式映射到 ChatML 或 Alpaca 等对话模板,生成模型最终训练所用的样本。
  • 合成数据生成:基于种子数据,使用 GPT-4o 等前沿模型创建指令-回答对。该方法可灵活、可扩展地构建高质量回答的数据集。关键考量包括设计多样化种子任务和有效的系统提示(system prompts)。
  • 数据增强:使用经验证输出(单元测试或求解器)、带拒绝采样的多答案、Auto-Evol, 思维链(Chain-of-Thought)、Branch-Solve-Merge、角色人设(personas)等技术增强现有样本。
  • 质量过滤:传统技术包括基于规则的过滤、去除重复或近重复项(MinHash 或嵌入向量),以及 n-gram 去污染。奖励模型和评判 LLM 以细粒度、可定制的质量控制补充这一步骤。

📚 参考资料

  • Synthetic Data Generator by Argilla:在 Hugging Face Space 中用自然语言构建数据集的入门友好方式。
  • LLM Datasets by Maxime Labonne:后训练数据集与工具的精选列表。
  • NeMo-Curator by Nvidia:用于预训练与后训练数据的数据集准备与策划框架。
  • Distilabel by Argilla:生成合成数据的框架,还包含 UltraFeedback 等论文的有趣复现。
  • Semhash by MinishLab:使用蒸馏嵌入模型进行近去重与去污染的极简库。
  • Chat Template by Hugging FaceHugging Face 关于对话模板的文档。

4. 监督微调

监督微调(SFT)将基座模型转化为有用的助手,能够回答问题并遵循指令。在此过程中,模型学习如何组织答案,并重新激活预训练所学知识的子集。注入新知识是可能的,但较为肤浅:无法用于学习一门全新的语言。始终将数据质量置于参数优化之上。

  • 训练技术:全量微调(Full fine-tuning)会更新所有模型参数,但需要大量算力。参数高效微调(Parameter-efficient fine-tuning)技术如 LoRA 和 QLoRA 通过训练少量适配器参数并保持基础权重冻结来降低内存需求。QLoRA 将 4-bit 量化与 LoRA 结合以降低 VRAM 使用。这些技术都在最流行的微调框架中实现:TRL, Unsloth, and Axolotl.
  • 训练参数:关键参数包括带调度器的学习率、批次大小、梯度累积、训练轮数(epochs)、优化器(如 8-bit AdamW)、用于正则化的权重衰减(weight decay),以及用于训练稳定性的预热步数(warmup steps)。LoRA 还增加了三个参数:秩(rank,通常为 16-128)、alpha(通常为 rank 的 1-2 倍)以及目标模块(target modules)。
  • 分布式训练:使用 DeepSpeed 或 FSDP 在多块 GPU 上扩展训练。DeepSpeed 提供三个 ZeRO 优化阶段,通过状态分区实现逐级提升的内存效率。两种方法都支持梯度检查点(gradient checkpointing)以节省内存。
  • 监控:跟踪训练指标,包括损失曲线、学习率调度和梯度范数。关注常见问题,如损失突增、梯度爆炸或性能下降。

📚 参考资料


5. 偏好对齐

偏好对齐是后训练流程中的第二阶段,专注于使生成答案与人类偏好对齐。该阶段旨在调整 LLM 的语气并减少毒性与幻觉。然而,提升性能与实用性也变得越来越重要。与 SFT 不同,偏好对齐算法有很多种。此处我们聚焦三种最重要的:DPO、GRPO 和 PPO。

  • 拒绝采样(Rejection sampling:对每个提示,使用已训练模型生成多个回复并打分,以推断被选/被拒绝的答案。这会创建 on-policy 数据,其中两条回复均来自正在训练的模型,从而提升对齐稳定性。
  • Direct Preference Optimization 直接优化策略,以最大化被选回复相对被拒绝回复的似然。它不需要奖励建模,因此在计算上比 RL 技术更高效,但质量略逊一筹。非常适合创建聊天模型。
  • 奖励模型(Reward model:用人类反馈训练奖励模型,以预测人类偏好等指标。可借助 TRL, verl, and OpenRLHF 等框架进行可扩展训练。
  • 强化学习(Reinforcement Learning:像 GRPO and PPO 这样的 RL 技术会迭代更新策略,在最大化奖励的同时尽量贴近初始行为。它们可使用奖励模型或奖励函数为回复打分。通常计算开销大,且需仔细调优超参数,包括学习率、批次大小和裁剪范围(clip range)。适合创建推理模型。

📚 参考资料


6. 评估

可靠地评估 LLM 是一项复杂但至关重要的任务,可指导数据生成与训练。它能提供关于改进方向的宝贵反馈,可用于调整数据配比、质量和训练参数。但始终要记住古德哈特定律(Goodhart's law):「当一项指标成为目标时,它就不再是好的指标。」

  • 自动化基准测试:使用精选数据集和指标(如 MMLU)在特定任务上评估模型。对具体任务效果较好,但在抽象与创造性能力上表现不足,也容易出现数据污染。
  • 人工评估:由人类提示模型并对回复评分。方法从 vibe check 到带明确指南的系统化标注,再到大规模社区投票(arena)不等。更适合主观任务,在事实准确性上可靠性较低。
  • 基于模型的评估:使用评判模型和奖励模型评估模型输出。与人类偏好高度相关,但存在偏向自身输出和评分不一致的问题。
  • 反馈信号:分析错误模式以识别具体弱点,例如遵循复杂指令能力不足、缺乏特定知识,或易受对抗性提示影响。可通过改进数据生成与训练参数加以改善。

📚 参考资料

  • LLM evaluation guidebook by Hugging Face:关于评估的综合指南,含实用见解。
  • Open LLM Leaderboard by Hugging Face:以开放、可复现方式比较 LLM 的主要排行榜(自动化基准测试)。
  • Language Model Evaluation Harness by EleutherAI:使用自动化基准测试评估 LLM 的流行框架。
  • Lighteval by Hugging Face:另一评估框架,也包含基于模型的评估。
  • Chatbot Arena by LMSYS:基于人类对比评分的通用 LLM Elo 评级(人工评估)。

7. 量化

量化是将模型参数和激活转换为更低精度的过程。例如,以 16 位存储的权重可转换为 4 位表示。该技术对降低与 LLM 相关的计算与内存成本日益重要。

  • 基础技术:了解不同精度级别(FP32、FP16、INT8 等),以及如何使用 absmax 和 zero-point 技术进行朴素量化。
  • GGUF & llama.cpp:最初为在 CPU 上运行而设计,llama.cpp 与 GGUF 格式已成为在消费级硬件上运行 LLM 的最流行工具。它支持在单个文件中存储特殊 token、词表和元数据。
  • GPTQ & AWQGPTQ/EXL2 and AWQ 等技术引入逐层校准,在极低比特宽度下仍能保持性能。它们通过动态缩放降低灾难性离群值影响,并有选择地跳过或重新居中最重参数。
  • SmoothQuant & ZeroQuant:新的量化友好变换(SmoothQuant)和基于编译器的优化(ZeroQuant)有助于在量化前缓解离群值。它们还通过融合特定算子并优化数据流来降低硬件开销。

📚 参考资料


8. 新兴趋势

以下是未归入其他类别的值得关注的主题。其中一些是成熟技术(模型合并、多模态),另一些则更具实验性(可解释性、测试时算力扩展),也是众多研究论文的焦点。

  • Model merging(模型合并):合并已训练模型已成为一种流行的方式,无需任何微调即可创建高性能模型。流行的 mergekit 库实现了最流行的合并方法,如 SLERP、DARE, 与 TIES.
  • Multimodal models(多模态模型):这类模型(如 CLIP, Stable Diffusion, 或 LLaVA))以统一的嵌入空间处理多种类型的输入(文本、图像、音频等),从而解锁文生图等强大应用。
  • Interpretability(可解释性):稀疏自编码器(Sparse AutoencodersSAE)等机制可解释性技术取得了显著进展,为理解 LLM 内部运作提供洞见。这也已应用于 abliteration 等技术,使你无需训练即可修改模型行为。
  • Test-time compute(测试时算力):通过强化学习(RL)技术训练的推理模型,可在测试时扩展算力预算以进一步提升。这可能涉及多次调用、MCTS,或 Process Reward ModelPRM)等专用模型。带精确评分的迭代步骤能显著提升复杂推理任务的性能。

📚 参考资料

👷 LLM 工程师

本课程章节聚焦学习如何构建可用于生产的 LLM 驱动应用,重点在于增强模型与部署。

1. 运行 LLM

由于硬件要求较高,运行 LLM 可能较为困难。根据你的用例,你可能只想通过 API(如 GPT-4)消费模型,或在本地运行。无论哪种方式,额外的提示(prompting)与引导技术都能改进并约束应用输出。

  • LLM APIs:API 是部署 LLM 的便捷方式。该领域分为私有 LLM(OpenAI, Google, Anthropic, 等)与开源 LLMOpenRouter, Hugging Face, Together AI, 等)。
  • Open-source LLMs Hugging Face Hub 是寻找 LLM 的绝佳去处。你可以直接在 Hugging Face Spaces, 中运行其中一些,或下载后在 LM Studio 等应用中本地运行,也可通过 CLI 使用 llama.cppollama.
  • Prompt engineering(提示工程):常用技术包括 zero-shot prompting、few-shot prompting、chain of thought 与 ReAct。它们在更大模型上效果更好,但也可适配较小模型。
  • Structuring outputs(结构化输出):许多任务需要结构化输出,如严格模板或 JSON 格式。可使用 Outlines 等库引导生成并遵循给定结构。部分 API 也支持通过 JSON schema 原生生成结构化输出。

📚 参考资料


2. 构建向量存储

创建向量存储是构建检索增强生成(Retrieval Augmented GenerationRAG)流水线的第一步。文档被加载、切分,相关块用于生成向量表示(embeddings)并存储,以供推理时后续使用。

  • Ingesting documents(文档摄入):文档加载器(document loaders)是便捷封装,可处理多种格式:PDF、JSON、HTML、Markdown 等。它们也可直接从部分数据库与 APIGitHub、Reddit、Google Drive 等)获取数据。
  • Splitting documents(文档切分):文本切分器(text splitters)将文档拆分为更小、语义上有意义的块。相比在 n 个字符后切分,通常更宜按标题或递归切分,并附加一些元数据。
  • Embedding models(嵌入模型):嵌入模型将文本转换为向量表示。选择面向特定任务的模型能显著提升语义搜索与 RAG 的性能。
  • Vector databases(向量数据库):向量数据库(如 Chroma, Pinecone, Milvus, FAISS, Annoy, 等)专为存储嵌入向量而设计。它们基于向量相似度,高效检索与查询“最相似”的数据。

📚 参考资料


3. 检索增强生成(Retrieval Augmented Generation

借助 RAG,LLM 会从数据库检索上下文文档,以提高回答的准确性。RAG 是一种流行的方式,可在不进行任何微调的情况下扩充模型的知识。

  • 编排器(Orchestrators:像 LangChainLlamaIndex 这样的编排器,是连接 LLM 与工具和数据库的流行框架。模型上下文协议(Model Context Protocol, MCP)引入了一项新标准,用于跨提供商向模型传递数据和上下文。
  • 检索器(Retrievers:像 CoRAG 和 HyDE 这样的查询重写器与生成式检索器,通过转换用户查询来增强搜索。多向量与混合检索方法将嵌入与关键词信号相结合,以提高召回率和精确率。
  • 记忆(Memory:为记住先前的指令和回答,LLM 以及像 ChatGPT 这样的聊天机器人会将这段历史添加到其上下文窗口中。可通过摘要(例如使用较小的 LLM)、向量存储 + RAG 等方式改进该缓冲区。
  • 评估(Evaluation:我们需要同时评估文档检索(上下文精确率与召回率)和生成阶段(忠实度与答案相关性)。可使用 RagasDeepEval 等工具简化评估(用于质量评估)。

📚 参考资料


4. 高级 RAGAdvanced RAG

实际应用可能需要复杂的流水线,包括 SQL 或图数据库,以及自动选择相关工具和 API。这些高级技术可以改进基线方案,并提供额外功能。

  • 查询构建(Query construction:存储在传统数据库中的结构化数据需要特定的查询语言,如 SQL、Cypher、元数据等。我们可以通过查询构建,将用户指令直接翻译为查询以访问数据。
  • 工具(Tools:智能体(Agents)通过自动选择最相关的工具来提供答案,从而增强 LLM。这些工具可以很简单,例如使用 Google 或 Wikipedia;也可以更复杂,例如 Python 解释器或 Jira。
  • 后处理(Post-processing:对输入 LLM 的内容进行处理的最后一步。它通过重排序、RAG-fusion, 和分类等方式,提升所检索文档的相关性与多样性。
  • 程序化 LLMProgram LLMs:像 DSPy 这样的框架,允许你以程序化方式,基于自动化评估来优化提示词和权重。

📚 参考资料


5. 智能体(Agents

LLM 智能体可以基于对环境进行推理而自主执行任务,通常通过使用工具或函数与外部系统交互。

  • 智能体基础(Agent fundamentals:智能体通过思考(内部推理以决定下一步做什么)、行动(执行任务,通常通过与外部工具交互)和观察(分析反馈或结果以优化下一步)来运作。
  • 智能体协议(Agent protocolsModel Context Protocol(MCP)是通过 MCP 服务器与客户端将智能体连接到外部工具和数据源的行业标准。近来,Agent2Agent(A2A)尝试为智能体互操作性标准化一种通用语言。
  • 厂商框架(Vendor frameworks:每个主要云模型提供商都有自己的智能体框架,包括 OpenAI SDK,、Google ADK, 和 Claude Agent SDK;如果你特别绑定某一家厂商,可以选择对应方案。
  • 其他框架(Other frameworks:可使用不同框架简化智能体开发,例如 LangGraph(工作流设计与可视化)、LlamaIndex(结合 RAG 的数据增强型智能体),或自定义方案。更具实验性的框架包括不同智能体之间的协作,例如 CrewAI(基于角色的团队工作流)和 AutoGen(对话驱动的多智能体系统)。

📚 参考资料

  • Agents Course: Hugging Face 制作的关于 AI 智能体的热门课程。
  • LangGraph: 如何使用 LangGraph 构建 AI 智能体的概述。
  • LlamaIndex Agents: 使用 LlamaIndex 构建智能体的用例与资源。

6. 推理优化(Inference optimization

文本生成是一个成本高昂的过程,需要昂贵的硬件。除量化之外,还提出了多种技术,以最大化吞吐量并降低推理成本。

  • Flash Attention:对注意力机制进行优化,将其复杂度从二次降为线性,从而加速训练与推理。
  • 键值缓存(Key-value cache:理解键值缓存,以及 Multi-Query AttentionMQA)和 Grouped-Query AttentionGQA)带来的改进。
  • 推测解码(Speculative decoding:使用小模型生成草稿,再由大模型审核,以加速文本生成。EAGLE-3 是一种特别流行的方案。

📚 参考资料

  • GPU Inference by Hugging Face:讲解如何在 GPU 上优化推理。
  • LLM Inference by Databricks:在生产环境中优化 LLM 推理的最佳实践。
  • Optimizing LLMs for Speed and Memory by Hugging Face:讲解优化速度与内存的三项主要技术,即量化、Flash Attention 和架构创新。
  • Assisted Generation by Hugging FaceHugging Face 版本的推测解码。这是一篇有趣的文章,讲解其工作原理,并附有实现代码。
  • EAGLE-3 paper: 介绍 EAGLE-3,并报告最高可达 6.5× 的加速。
  • Speculators: 由 vLLM 开发的库,用于为 LLM 推理构建、评估和存储推测解码算法(例如 EAGLE-3)。

7. 部署 LLM

大规模部署 LLM 是一项工程挑战,可能需要多个 GPU 集群。在其他场景下,演示和本地应用可以用低得多的复杂度实现。

  • 本地部署:隐私是开源 LLM 相对闭源模型的一项重要优势。本地 LLM 服务器(LM Studio, Ollama, oobabooga, kobold.cpp, 等)利用这一优势为本地应用提供动力。
  • 演示部署:像 GradioStreamlit 这样的框架有助于原型化应用并分享演示。你也可以轻松将它们托管到线上,例如使用 Hugging Face Spaces.
  • 服务器部署:大规模部署 LLM 需要云端(另见 SkyPilot) 或本地(on-prem)基础设施,并常借助 TGI, vLLM, 等优化的文本生成框架。
  • 边缘部署:在资源受限的环境中,MLC LLMmnn-llm 等高性能框架可以在 Web 浏览器、Android 和 iOS 上部署 LLM。

📚 参考资料


8. 保护 LLM 安全

除软件常见的传统安全问题外,LLM 因其训练和提示(prompting)方式而存在独特弱点。

  • 提示攻击(Prompt hacking:与提示工程相关的多种技术,包括提示注入(prompt injection,通过额外指令劫持模型回答)、数据/提示泄露(data/prompt leaking,检索其原始数据/提示)和越狱(jailbreaking,精心构造提示以绕过安全机制)。
  • 后门(Backdoors:攻击向量可直接针对训练数据,通过污染训练数据(例如植入虚假信息)或创建后门(秘密触发器,在推理时改变模型行为)。
  • 防御措施:保护 LLM 应用的最佳方式是针对这些漏洞进行测试(例如使用红队演练以及 garak) 等检查工具),并在生产环境中进行观测(可借助 langfuse). 等框架)。

📚 参考资料


致谢

本路线图受到 Milan Milanović 和 Romano Roth 优秀的 DevOps Roadmap 启发。

特别感谢:

  • Thomas Thelen 激励我创建这份路线图
  • André Frade 对初稿提供意见并进行审阅
  • Dino Dunn 提供 LLM 安全相关资源
  • Magdalena Kuhn 改进「人工评估」部分
  • Odoverdose 推荐 3Blue1Brown 关于 Transformer 的视频
  • 为本课程教育参考资料做出贡献的所有人 :)

免责声明:本人与本文列出的任何来源均无隶属关系。


Star History Chart