过去两年,生成式 AI 应用的价值链变得相当复杂。我们不断构建高级系统,试图通过大型语言模型(LLM)为业务创造价值。为了更清晰地理解,我们可以将价值链分为两个主要阶段:
1. 基础模型训练阶段:这是 AI 研究人员的主要工作领域,目标是训练出可供后续调整的大型语言模型(LLM)或其他模态模型。这一阶段可以进一步细分为:
- 预训练:在海量数据集上进行初始训练,使模型能够根据给定序列预测下一个 token。
- 后训练:通过如“人类反馈强化学习”(RLHF,一种通过人类反馈调整模型输出的技术)等方法,使模型输出更符合人类偏好。
2. 生成式 AI 系统工程阶段:在基础模型准备就绪后,我们进入系统构建阶段,利用基础模型开发更复杂的系统来解决实际业务问题。这是 AI 工程师的工作重点。目前,这些系统的复杂性可以按以下顺序排列:
- 微调后的模型:对模型进行微调以适应特定任务。
- 检索增强生成(RAG)系统:利用检索技术增强生成能力。
- 生成式 AI 驱动的智能体:使用生成式 AI 技术构建智能执行单元。
- 多智能体网络:多个智能体协同工作的复杂网络。
此外,值得注意的是,在生成式 AI 领域,模型本身会在基础模型训练阶段以及作为生成式 AI 系统工程的一部分进行调整。虽然讨论生成式 AI 系统令人兴奋,但目前并非所有复杂性级别的系统都达到了生产就绪状态。超大规模企业(如谷歌和微软)除外,它们通常拥有更先进的技术和资源,能够更快地将这些系统投入生产环境。截至今日,智能体系统已逐步进入生产环境。我相信到 2024 年底,我们将能够自信地迈向下一个前沿。而对于多智能体系统,仍需更多努力以确保其在生产环境中的可靠性。我预计这一目标将在明年年底实现。
那么,随着我们逐步推进生成式 AI 价值链,可观测性基础设施的规模需求是如何演变的呢?
- 在预训练和对齐阶段,实验追踪工具发挥了关键作用。用于常规机器学习模型训练的实验追踪工具与专门为 LLM 训练设计的工具之间存在巨大差距。我可以自信地说,系统需要处理的数据吞吐量至少提升了十倍,在某些情况下甚至更多。因此,即便是在模型训练阶段,可观测性基础设施的成本已达到生产环境中应用的可观测性需求水平。
- 当训练完成后,转向简单的生成式 AI 系统时,可观测性系统的规模需求会突然下降,因为这一过程开始类似于常规机器学习模型的训练(微调)。但这种情况不会持续太久。
- 随着生成式 AI 系统工程的推进,应用复杂性不断增加,可观测性基础设施的规模需求持续增长,甚至超过了预训练阶段的需求。
本文将重点讨论生成式 AI 系统工程阶段。如前所述,模型微调是可观测性资源需求最低的阶段。因此,我们将从 RAG 系统开始探讨。
检索增强生成(RAG)系统
我们不会深入探讨 RAG 系统的具体实现,而是关注观察这些系统所需的基础设施。在过去一年中,我们逐渐认识到:
- 高级生成式 AI 系统的可观测性主要围绕追踪和评估展开。
生成式 AI 系统的评估和可观测性是一个复杂的话题。今天我们仅从较高层次进行介绍。以下是一些帮助构建思维模型的定义:
- 控制器(Controller):生成式 AI 系统应用中的核心软件,负责协调整个系统(或多智能体系统中的一部分)的端到端流程。常见于 LangChain、LlamaIndex、Haystack 等编排框架中。
- 追踪(Trace):从入口点到生成答案或执行动作的完整应用流程,由多个称为“跨度(Span)”的小单元组成。追踪会包含关于流程的聚合元数据。
- 跨度(Span):应用流程中的一个较小单元,代表一个原子操作,如函数调用或数据库查询。需要注意的是,虽然示例中跨度是顺序排列的,但在生产应用中并行处理是常见的。
在每个跨度中,我们会捕获通用元数据,如开始和结束时间、输入和输出。此外,还会追踪与生成式 AI 系统元素相关的特定信息。
以一个简单的 RAG 系统为例,想象您在图书馆查找信息,RAG 系统就像一个智能助手,帮助您快速找到最相关的资料。其追踪可能包含以下跨度:
1. 用户提交到聊天应用的查询通过控制器处理。
2. 查询被嵌入为向量,记录输入 token 数量等额外元数据,以便估算操作成本。
3. 在向量数据库中执行近似最近邻(ANN)查找,检索最相关的上下文,记录查询相关元数据以及检索到的上下文及其相关性。
4. 根据系统提示和检索到的上下文构建提示词。
5. 将提示词传递给 LLM 生成答案,记录输入和输出 token 数量等元数据以估算成本。
为什么生成式 AI 系统的追踪如此重要?
- 这些应用通常是复杂的链条,错误可能在不同步骤中发生。例如,查询嵌入耗时过长,或达到 LLM 提供商的 API 限制。
- 调用 LLM API 的成本会因输入和输出的长度而变化,通常需要追踪这些信息并进行分析,以帮助预测费用。
- 生成式 AI 系统具有非确定性,性能会随时间退化。需要在跨度层面而非整个系统的输入输出层面进行评估,以便单独调整每个部分。
RAG 系统的可观测性挑战有哪些?
有人可能认为,生成式 AI 的可观测性与常规软件没有太大区别。从高层次看确实如此,但生成式 AI 系统带来了新的需求:
- 数据至关重要:与常规机器学习可观测性类似,重点在于系统的输入和输出。这些数据的长度可能差异很大,导致日志量巨大,进而引发大数据相关问题。
- 追踪采样受限:特别是在安全性要求较高的应用中,很难对追踪进行采样。例如,您可能需要提供任何输出结果及其构建步骤的系统记录。
- 评估至关重要:构成追踪的每个跨度都具有非确定性,因此需要对大多数跨度进行评估。
- 评估复杂性高:评估涉及多种技术,例如使用 LLM 评估输出与预期的对比(即“LLM 作为评判者”)。
智能体(Agents)
智能体与常规 RAG 系统有何不同?
随着我们试图解决更复杂的问题,开始依赖 LLM 来规划实现目标的方式。这就是智能体的用武之地。智能体就像您的个人助理,能够根据您的需求自动执行各种任务,从简单的信息查询到复杂的决策支持。基于 LLM 的智能体的高层次定义包括:
1. 控制器应用(负责协调智能体行为的核心软件):使用 LLM 作为“大脑”来定义完成目标所需的一系列动作。控制器随后利用其能力实现预期结果。常见能力包括:
2. 知识(Knowledge):智能体可以访问的额外上下文,类似于 RAG 系统的检索部分,通常是 LLM 无法通过其他方式访问的私有上下文。
3. 长期记忆(Long Term Memory):控制器可能需要回顾短期记忆无法容纳的历史交互,短期记忆通常受 LLM 上下文窗口大小限制,并辅以记忆压缩技术。
4. 工具(Tools):控制器可调用的功能集合,通常通过系统提示告知 LLM 可用功能,以便其提出的动作包括这些功能。功能可以是使用计算器、浏览互联网,甚至调用另一个 LLM。
5. 指令(Instructions):控制器可使用的提示词注册表。
智能体应用的可观测性挑战有哪些?
智能体与 RAG 系统的主要区别在于非确定性,这也正是其可观测性挑战的根源。LLM 提供的解决任务的动作集是非确定的,导致:
1. 追踪中的跨度数量和类型通常事先未知,而是在运行时定义。在某些极端情况下,智能体甚至可能陷入无限循环,尝试解决问题时卡住。为此,我们会限制智能体可执行的动作数量。
2. 追踪的长度直接取决于跨度的数量、类型以及它们在时间上的位置。虽然示例中跨度是顺序排列的,但在生产系统中并非必须如此,尤其是在可以同时执行多个动作并随后合并结果的情况下。
此外,智能体拥有的每种能力本身可能都很复杂。例如:
- 知识组件与 RAG 一样复杂。
- 长期记忆更为复杂,因为其内容的更新与智能体内部执行的动作密切相关,需要实时更新,而 RAG 的上下文通常是外部的。
多智能体系统
多智能体系统是一个由多个智能体组成的互联网络。智能体之间通过发送特定工作请求进行通信,每个智能体通常专注于解决更专业化的任务。其理念是,专业化智能体能够通过缩小所需上下文范围,更高效地解决特定问题。用户可以向此类系统提出意图,网络随后尝试完成请求。
行业中常见的多智能体网络拓扑结构各有优缺点,包括:
- 全连接网格:所有智能体之间直接连接。
- 主管与专业智能体结构:有一个主管智能体管理多个专业智能体。
- 混合结构:结合了上述两种或多种结构的特点。
- 其他结构:还有其他多种拓扑结构。
多智能体应用的可观测性挑战有哪些?
根据所选网络拓扑结构,系统会增加新的非确定性层次。此外,我们开始进入分布式追踪领域,需要连接不同智能体内产生的多个追踪。构建此类系统时,我们需要回答如下问题:
- 如何将解决原始任务路径上多个智能体产生的追踪连接成单一追踪?如果所有智能体运行在单一服务中,这通常较简单。但如果智能体作为微服务环境中的独立服务,复杂性会大幅增加。
- 智能体之间的通信模式如何实现?由于任何智能体的处理时间都是非确定的,通过 REST 或 gRPC API 暴露时可能引发延迟风险。因此,常见基于事件队列的通信方式。
- 如何确保预期工作实际完成,系统不会陷入无限循环或卡住?
此外,多智能体系统还包含 RAG 和单一智能体系统的所有复杂性。可以想象,需存储和评估的追踪会变得冗长且嵌套复杂。在跨度层面的精细评估以及高级可视化的实现变得尤为困难。
总结
机器学习基础设施和可观测性工具的演变正受到生成式 AI 和大规模模型崛起的重塑。从传统机器学习模型到复杂的生成式 AI 系统——RAG、智能体及多智能体网络——的转变带来了新的挑战。这推动可观测性工具演变为完整的大数据分析平台。随着这些系统变得更加复杂和非确定,可观测性在实验追踪、评估和追踪基础设施上的需求持续攀升。