福生无量摸鱼天尊

LLM 系统架构 note

2025/12/02
12
0

LLM目前最大的困难来自于预训练使用的语料是足够多的且推理能力是足够强的,但是如何在问答中交互使其自回归输出得到一个很好的结果是很困难的,这就是agent出现的原因

核心矛盾点

  1. 训练的时候往往在一个静态的环境,但是推理环境往往是动态的,动态和静态会让系统产生意料之外的输出

  2. 在CoT中,一旦传入一个错误事实,就会层层放大

  3. Scaling Law,但模型上下文还是不够长

  4. 模型参数是固定的,无法进步

  5. 大模型的开销太贵

推理的结构

从静态链演变到动态链:

  • AdaPlanner:允许大模型在计划外执行的时候进行停止,然后重新规划

  • ADaPT:connect让executor LLM直接执行任务,若不能执行就调用planner LLM进行任务分解再进行executor LLM

从链式结构进化到树和图:

  • Adaptive Graph of Thoughts (AGoT) :动态构建推理图,当一个节点被判断为复杂时,系统将为其生成一个嵌套的、新的 AGoT 子图进行递归分解

  • Cumulative Reasoning (CR) :CR 将智能体的认知过程分解为三个明确的角色:提议者(Proposer)、验证者(Verifier(s)) 和 报告者(Reporter)。CR 的核心是一个动态构建的、只包含已验证节点的 DAG。新的推理可以基于图中任意已验证节点的组合来进行,这意味着智能体始终在一个坚实的、经过验证的知识基础上进行下一步推演。

  • StateFlow :另辟蹊径,将任务解决过程建模为一个有限状态机(FSM)。例如 初始化(Init)、观察(Observe)、解决(Solve)、验证(Verify) 和 错误处理(Error)。

进一步思考可以从:可控、可解释、鲁棒能和效率去考虑。

这种结构的演变是从设计思想上进行抽象,实现对应的交互逻辑结构,再演变成推理的特定结构

交互的逻辑

ReAct 的核心思想是在智能体的执行轨迹中,交错地生成思维和动作,本质上是“想怎么做-做完了-看看做的好不好”(thought-action-observation)的体现。

  • 思维(Thought):这是一个内部的推理步骤,以自然语言形式存在。智能体通过思考来分析当前情况、分解任务、制定或调整计划、处理异常,以及综合观察到的信息。

  • 动作(Action):这是一个与外部环境(如维基百科API、网络浏览器)交互的步骤。智能体通过行动来获取新信息,验证假设,或者改变环境状态。

  • 观察(Observation):这是行动之后从环境中获得的反馈,它将成为下一次思考的输入

将这种思维进行延展,就得到以下进一步的工作:

  • PRACT (Principled Reasoning and Acting):做完一次任务进行一次反思(reflection)。一个“反思器(reflector)”模块会批判性地评估刚刚完成的轨迹,分析其中的成功与失败之处。基于这种批判,一个“优化器(optimizer)”模块会提炼或更新一套高级的“行动原则(action principles)”。然后存储这套行动原则,后续继续用。

  • Dynamic Cheatsheet (DC):构建了一个小抄库,它可以将成功的解题策略、有用的代码片段或关键的洞察存储到这个外部记忆中。这个记忆库是自我管理的,能够根据agent的要求去自我迭代,增删改查。

  • Retrieval-Augmented Planning (RAP):RAP 的核心是一个 contextual memory 模块,专门用于存储过去成功的任务执行日志。每一条日志都包含完整的任务信息、所使用的高级计划以及详细的执行轨迹(包括每一步的计划、动作和观察)。然后检索器(Retriever)模块会根据任务、计划和关键词的相似度,从记忆库中找出最相关的历史经验。这些被检索出的成功案例随后会被注入到 prompt 中

交互看重的是过程:行动 —— 反思 ——记忆三个阶段。可以沿着即时适应的反应循环,用于策略优化的反思模块,以及用于知识积累和迁移的长期记忆系统去进行优化,其核心的思想就是让agent持续的life long learning

使用外部工具

  • ART (Automatic Reasoning and Tool-use):该框架能够在大模型推理到需要外部工具的的时候冻结所有过程,先执行外部工具得到结果,再进行推理。

  • REPL-Plan:提供了一个交互式的“读取-求值-打印循环”(Read-Eval-Print Loop, REPL)环境,类似于程序员使用的 Python 解释器或 Jupyter Notebook。

  • InterCode 等标准化基准测试平台被提出,用于系统性地评估智能体在这种交互式编码环境中的表现。

多智能体的设计逻辑

同级相互博弈:

  • Corex 框架设计了多种协作范式

    • Discuss 模式中,系统会为多个大语言模型分配不同的角色,并让它们围绕一个问题进行小组讨论,通过交换论点来增强推理的全面性和事实性。

    • Review 模式中,一个智能体生成的解决方案会提交给其他智能体进行批判性审查和改进。

    • Retrieve 模式,专门负责从外部知识源获取信息以支持讨论。

  • ReMA (Reinforced Meta-thinking Agents) 框架将问题解决过程解耦为两个层级的智能体:

    • 一个高阶的元思维智能体(meta-thinking agent),元思维智能体负责进行战略层面的监督和规划

    • 一个低阶的推理智能体(reasoning agent),推理智能体负责执行具体的、详细的推理和计算步骤

    • 两个智能体通过多智能体强化学习(MARL)进行联合训练,学会了如何高效协作

层级分布:

  • Chain of Agents (CoA) 框架将长上下文任务切分成多个片段。

    • 多个工作智能体(worker agents)会像流水线一样,依次处理各自负责的文本片段,并将自己的处理结果和摘要传递给下一个智能体

    • 最后,一个管理者智能体(manager agent)会综合所有工作智能体的贡献,形成一个连贯的最终输出。

  • TDAG (Dynamic Task Decomposition and Agent Generation) 是一个动态的框架

    • TDAG 的核心是一个主智能体,它首先对复杂任务进行初步分解

    • TDAG 会为每一个子任务动态地生成一个专门的子智能体(sub-agent)来执行

    • 这种设计的关键在于动态二字:后续子任务的规划可以根据前面子任务的执行结果进行实时调整。如果某个子任务失败,主智能体可以修改后续的计划,而不是像静态工作流那样只能宣告整个任务失败。

  • Self-Steering Models (DISCIPL) 提出了一种极为精巧的“规划者/执行者(Planner/Follower)”架构。

    • 一个能力强大、成本高昂的规划者模型(如GPT-5)负责分析任务,并生成一个专门用于解决该任务的推理程序(inference program)

    • 随后,这个程序会被分发给一个由大量能力较弱、成本低廉的执行者模型(如Llama-3-1B)组成的群体,并由它们并行地执行。

路由的设计

GPT5太贵,而小模型能力又弱,所以需要把任务分配到不同的模型上,故此路由就是要节省花费,提高鲁棒能

故此理想目标是:对于简单的、常规的查询,将其路由到一个成本低廉的“弱”模型;而对于复杂的、需要深度推理的查询,则将其路由到一个能力强大但成本高昂的“强”模型。

  • FrugalGPT 是级联方法的典型代表。

    • 系统维护一个按成本从低到高排序的LLM列表。当一个新查询到来时,它首先被发送给最便宜的模型。

    • 如果质量达到了预设的阈值,该响应就被采纳,流程结束。

    • 如果质量不达标,查询就会被发送给下一个更昂贵、能力更强的模型。

  • RouteLLM 框架将路由问题形式化为一个二元分类任务。

    • 该方法利用人类偏好数据(例如,用户在两个模型响应中更喜欢哪一个)来训练一个路由器模型。

    • 该模型会有一个概率去分配查询给两个模型,只要一次路由和一次LLM,足够简单

    • 只要数据增强够好,路由器能够很好地泛化到训练期间未见过的LLM对,具有很强的灵活性。

  • ZOOTER 采用了一种基于现成奖励模型的知识蒸馏方法。

    • 在一个包含多样化查询的训练集上,让所有候选LLM都生成响应。

    • 用一个强大的奖励模型(如UltraRM)为每个响应打分。

    • 最后,训练一个轻量级的路由函数查询被直接路由到预测的“专家”模型

  • GraphRouter 将任务、查询和LLM之间的复杂关系建模为一个异构图。

    • 路由问题被巧妙地重构为一个图上的“边预测”任务:预测一个给定的“查询节点”和一个“LLM节点”之间是否存在一条表示“最佳选择”的边。

    • GraphRouter 利用 GNN 来学习节点的表示,从而能够有效捕捉查询需求与LLM能力之间的上下文信息。

    • 这种方法的显著优点是其归纳能力,即使在测试时加入了新的、从未见过的LLM,它也能通过其描述信息生成节点表示,并进行有效的路由,而无需重新训练整个模型。

  • RouterDC 旨在解决一个棘手的场景:当多个LLM都能很好地回答某个查询时,传统的基于softmax的路由方法(如ZOOTER)会使结果变得模糊

    • RouterDC 引入了双重对比学习(dual contrastive learning)损失。

    • 样本-LLM对比损失:它不再要求路由器精确匹配分数分布,而是将LLM分为“正例”(得分最高的几个)和“负例”(得分低的)。损失函数的目标是拉近查询的嵌入向量与所有正例LLM的嵌入向量的距离,同时推远其与负例LLM的距离。

    • 样本-样本对比损失:为了增强训练的稳定性,该损失鼓励语义相似的查询在嵌入空间中也彼此靠近,从而确保它们被路由到相似的LLM。

  • MasRouter 是mulit-agent的路由设计,它将路由的范畴从“选择一个LLM”扩展到了“配置一个多智能体系统”。

    • 除了为每个角色选择合适的LLM,MasRouter 还需要决定采用何种协作模式(例如,是采用Corex的讨论模式,还是TDAG的分解模式)、如何为不同角色分配任务等。

  • RouterBench是一个统一的、公认的基准来公平地评估和比较各种路由方法的性能的框架

    • 一个大规模数据集:包含了超过40万条由14个代表性LLM在8个不同任务上生成的推理结果,以及相应的性能指标和成本数据。这使得研究者可以在不产生实际API调用的情况下,高效地训练和测试他们的路由算法。

    • 一个理论框架:定义了一套标准化的评估流程和指标,如在“成本-质量”平面上比较不同路由器的帕累托前沿,并提出了一个单一指标“平均质量提升(AIQ)”来综合衡量路由器的效益。

    • 一个基线:引入了 Zero Router 作为所有路由算法必须超越的基本基准。

集大成之作

PipeWeaver:利用动态交错管道解决大型多模态模型训练中的数据动态性问题

  • 海波大神的力作,跟LLM的成熟pipeline工作

未来

目前的发展:

  • 从单体到模块化:无论是将推理过程分解为“提议-验证”循环(CR),还是将任务流程建模为状态机(StateFlow),亦或是构建包含规划器、执行器、记忆库和工具集的多模块框架,其本质都是将复杂的认知任务解耦为更小、更易于管理和优化的子问题。

  • 从静态到动态:研究的焦点已迅速转向能够适应环境、从经验中学习的动态系统。闭环反馈(AdaPlanner)、任务后反思(PRACT)、持久化记忆(Dynamic Cheatsheet)以及自主技能合成(SkillWeaver)等机制,共同构建了一个多层次的在线学习体系。

  • 从孤立到协作:无论是通过模拟人类团队讨论来达成共识(Corex),还是通过层级化的任务分解与分配来实现并行处理(CoA, TDAG),多智能体系统都展现出了 1+1>2 的潜力。特别是像Self-Steering这样的规划者/执行者模型,通过巧妙地结合不同能力层次的智能体,为在有限成本下实现卓越性能提供了新的思路。

  • 从能力到实用:研究的重点不再仅仅是“智能体能做什么”,而是“如何以可持续的成本让智能体完成任务”。路由技术的发展使得构建和部署由多个异构模型组成的复杂、高效的智能体生态系统成为可能,这是该技术走向成熟和商业化的关键一步。

未来发展方向:

  • 智能体架构的自动化发现:现在仍需人类专家进行大量的手工设计。未来的一个重要方向是研究如何让智能体自主学习和发现针对特定任务的最优工作流或协作架构,实现更高层次的自动化和自适应。

  • 真正的终身学习与知识管理:如何让智能体在持续学习新知识和新技能的同时,有效避免灾难性遗忘,并对不断增长的技能库进行有效的组织、维护和检索,仍然是一个开放性问题。

  • 复杂多智能体系统的动态编排:如何对mulit-agent进行动态、高效的协调和资源调度(即路由)将变得极具挑战性。

  • 安全性、对齐与可信赖:如何确保其行为始终与人类的意图和价值观保持一致,成为一个至关重要的课题。