Agent 生态的编排逻辑千差万别,现有 RL 训练器却要求把 Agent 搬进训练框架、把多轮轨迹拼成一条长序列再加掩码。
Agent Lightning 用 MDP/POMDP 只抽取每次 LLM 调用的 (input, output, reward),把轨迹分解成 transition,再交给 GRPO / REINFORCE++ 等单轮算法;系统上把 trainer 与 agent runtime 拆成 server/client。
代价是 credit assignment 目前只做等值分配,证据也主要是三条奖励曲线。
现有 RL 训练器主要面向静态、单次调用的任务,比如偏好对齐或数学推理。Agent 却把多次 LLM 调用、不同 prompt、外部工具和动态编排串在一起;想把已有 Agent 接进 RL,通常要在训练器里重写一遍 Agent,或者把多轮轨迹拼成长序列再设计掩码。
论文的做法是先把 Agent 执行抽象成 POMDP:state 是语义变量快照,action 是一次 LLM 调用生成的完整 token 序列。训练时不解析整张执行图,只保留策略 LLM 的 (input, output, reward),把一条轨迹拆成若干 transition。
LightningRL 先把轨迹级 return 等值分给每个 action——当前实现里每个 action 都拿最终 return R,不是把 R 均分成 R/T;再让现有的单轮 RL 算法在 token 级完成更新。这样一条多轮轨迹就变成了多条可分组、可批处理的单轮样本。
系统上,server 管训练、任务分发和 OpenAI-like API,client 跑 Agent、工具与数据采集;两边通过 API 通信,client 不需要和 GPU 同机。论文用 LangChain、OpenAI Agents SDK、AutoGen 各做一个任务,基座均为 Llama-3.2-3B-Instruct(§4.1、§4.2、§4.3 各自写明);结果以 Figure 5–7 的奖励曲线呈现,正文未标注具体读数,本页未转录曲线数值。
R = 0.9×Rcorrectness + 0.1×Rformat读完这节应知道:为什么把 Agent 直接塞进现有 RL 训练器,成本不只是「多写几行适配代码」。
论文先把 Agent 定义得很宽:一个在执行过程中包含一次或多次 LLM 调用的软件系统。组件分两类——LLM(或更一般的基础模型)与工具;一个 Agent 可以有多个 LLM endpoint,也可以挂多个工具,编排方式由用户按任务写死或动态决定(§2.1–2.2)。
麻烦在于,现有 LLM RL 方法主要面向单轮任务:给一个 prompt,生成一个 response,算一个 reward,更新一次。Agent 的一次执行却可能包含多次 LLM 调用,每次的 prompt 和 response 都不同,中间还夹着工具、API 与环境交互;更麻烦的是,不同应用的 Agent 用不同框架写,执行逻辑本身就不统一(§1)。
拼接式训练需要知道回合顺序、哪些 token 要 mask;这些信息都在 Agent 代码里。训练器因此和 Agent 执行逻辑绑在一起,迁移时往往要重写 Agent(§5.1)。
把多轮交互拼成一条序列,上下文会随工具输出、协议消息和多 Agent 通信累积,容易触及输入长度限制,也会抬高计算与显存开销(§3.3.2、§5.1)。
论文指出,masking 会破坏 RoPE 等位置编码所依赖的 token 连续性,还会给代码验证、调试和 kernel 设计增加复杂度(§3.3.2);掩码规则往往与应用绑定、难以通用(§5.1)。
论文的出发点因此不是发明一个新的 PPO 变体,而是换一种数据组织方式:只要能把 Agent 执行中真正影响策略的决策点抽出来,训练器就不需要理解完整的编排逻辑。这个判断来自 §3.1 与 §3.2 的整体设计。
前人分别从多轮 RL 算法、RL 系统与应用专用 RL 三侧逼近;前两条主线都把 Agent 逻辑和训练逻辑绑在一起,第三条则只针对预设工作流。
RAGEN、Trinity-RFT、rLLM、Search-R1 等工作把多轮交互拼成一条长序列,再用掩码控制哪些部分参与优化。
“These methods typically concatenate agent turns into a single, elongated sequence and assigning specific masks to ensure correct optimization.”(§5.1)
论文的批评是:这类方法更适合简单、顺序的工作流;上下文会累积,掩码规则要按应用定制,还会打断位置连续性。
verl、OpenRLHF、TRL、ROLL、AReaL 等系统主要优化单轮 LLM 训练;要给 Agent 用,通常得在训练系统里重建 Agent。
“they generally require developers to rebuild agents inside the training system.”(§5.1)
论文列出的代价包括:迁移 labor-intensive、error-prone,难以跨异构 Agent 生态扩展;还要求开发者熟悉 Ray 等分布式系统,并处理 MCP server、外部工具与 API 的依赖。
Search-R1、R1-Searcher、DeepSWE、ReTool、SimpleTIR 等把 RL 用在搜索、代码或工具推理等特定场景。
“they often rely on a predefined workflow in both training and inference. Thus they’re not targeting at general-purpose agent training.”(§5.1)
这些工作通常预设训练和推理的工作流,因此不解决「任意 Agent 如何接入 RL」这个问题。
Agent Lightning 的赌注是:与其标准化 Agent,不如标准化训练数据接口。论文的原话是:
“This unified data interface abstracts away the underlying orchestration logic and agent framework details, making it applicable to ANY agent.”(§1)
这句话是论文的主张,不是本页对实验覆盖面的判断;实验只覆盖 Table 1 里的三种框架/任务,见 §06 与 §07。
读完这节应知道:MDP/POMDP 抽象、transition 的定义,以及 LightningRL 为什么能直接套 GRPO。
论文把 Agent 执行看成有向无环图:节点是组件调用(LLM 或工具),边是依赖或控制流。但训练不需要还原整张图,只需要识别当前状态和影响状态转移的关键调用(§3.1)。一次 component call 写成:
Eq. (3) · Ci 可以是 LLM,也可以是工具;meta 记录组件名、类型、版本、endpoint、采样参数等。Figure 2 右栏把同一条 call 记为 (component, input, output, reward),中间调用的 reward 标为 NA;两种写法并列
给每次调用附上标量奖励 ri,一次执行就写成 executionR(x,k) = {(calli, ri)}i=1..N(Eq. 5)。奖励可以来自中间步骤,也可以只在结束时给一个终止奖励;论文明确指出,很多现实场景只有终止奖励 rN,这是该形式化的一个特例(§3.1.2)。
对要优化的策略 πθ,论文从一次执行中只抽取 LLM 调用的输入、输出与奖励:
Eq. (6)–(7) · T 是该轨迹中策略 LLM 的调用次数;工具调用与编排逻辑不单独成样本,但中间变量若被策略 LLM 读入 input,就随 input 进入样本(§3.1.3 第二次 LLM 调用的 input 是 (U, P),Passages 即中间变量);reward 可以为空,Figure 2 中中间调用记为 NA
论文把这一步的形式化写成 POMDP (S, O, A, P, R):state 是执行快照,observation 是策略 LLM 可见的 input,action 是一次 LLM 调用生成的整段 token 序列,return 是 R = Σt=1..T rt(§3.2.1)。摘要与 §1 用 MDP 作概括,§3.2.1 展开为 POMDP;两处都指向同一个数据接口,本页按 §3.2.1 的形式化写。
LightningRL 是两层机制(§3.3.2):第一层由 credit assignment 模块把 episode-level return 分给每个 action;第二层由现有单轮 RL 算法把 action-level 信号分解到 token。当前实现的 credit assignment 很简单:
§3.3.2 · “LightningRL simply assumes each action within the episode has the same value, equal to the final return R.”
注意这不是把 R 均分成 R/T。每个 action 都拿完整的最终 return;后面的 GRPO 再在同任务的多条执行之间做组内归一化。论文把第二层直接交给现有单轮算法,Eq. (8) 是典型的 token-level 目标:
Eq. (8) · 原文脚注 3 说明:importance ratio、clipping、KL 等项在公式里省略,但最终算法会采用
这样做的直接结果是:同一条多轮轨迹被拆成 T 条单轮样本;同一任务多次执行产生的样本再按任务分组,GRPO 就可以在组内估计均值和标准差。论文原话是 “each task x is run multiple times to generate different execution data, each decomposed into individual actions. These samples are then grouped by task for computing statistics in Eq. 8.”(§3.3.2)
下面的模拟只覆盖论文机制中的「选择哪些调用优化」与「transition 如何成为单轮样本」;每个 agent 在一次执行中被调用一次,是页面简化假设,原文没有给出每次执行的调用次数。它不是实验复现,也不产生性能数字。
R 是页面示意的最终 return:Text-to-SQL 与 Math QA 的原文奖励为最终答案是否正确;RAG 原文奖励是连续值 R=0.9×Rcorrectness+0.1×Rformat,本交互的 R=1/0 不是论文设置。
论文设置:只优化 SQL writer 与 re-writer;点击 agent 可改,属页面自定对照。
口径:样本数 = 被优化的 LLM 调用数;拼接模式固定 1 条样本;每条 transition 的 reward 都等于该次执行的最终 return R(§3.3.2 的等值分配,不是 R/T)。
| 参数 | 中间量 | 结果 |
|---|---|---|
| Text-to-SQL · LightningRL · R=1 | 3 calls = 1+1+1;2 tuned = 1+1;1 excluded = 3−2 | 2 条样本;每条 reward = 1 |
| RAG · LightningRL · R=0 | 1 call;1 tuned;0 excluded = 1−1 | 1 条样本;reward = 0 |
| Text-to-SQL · 拼接+掩码 · R=1 | 1 条拼接样本;1 个调用被 mask | 1 条样本;reward = 1 |
| RAG · 拼接+掩码 · R=0 | 1 条拼接样本;0 个调用被 mask | 1 条样本;reward = 0 |
拼接模式的「1 条样本」来自 §3.3.2 对 previous methods 的描述:所有回合被拼成一个 response,再用 mask 控制更新范围。表中数字只由 Table 1 的 agent 数与页面假设(每 agent 一次调用)推出;RAG 行的 R=0 也是页面示意的最终 return,不是 §4.2 的连续奖励。JS 对同样参数输出同样的整数。
论文自己把更细粒度的 credit assignment 列为 future work:可以引入 high-level value function 来估计每个 action 的期望 return,也可以按启发式或学习到的模型分配 credit(§3.3.2)。当前实现选择等值分配,论文给出的理由是简单、可直接复用单轮 RL,并称实验显示这种简单策略在多个场景和数据集上有效。推断:这更像工程上的起点,而不是与其它 credit assignment 方法比较后的最优选择(依据:原文把更细粒度方法列为未来工作,§4 只报告等值分配的结果)。对长程任务是否仍然足够,论文没有给出实验。
读完这节应知道:一次训练循环里,数据从 server 到 client 再回到 trainer 的路径,以及工程上靠什么保证吞吐与容错。
论文把 RL 训练拆成两个角色:trainer 更新模型权重,rollout 采集轨迹。单轮任务里 rollout 只是「给 prompt、生成 response」;Agent 任务里 rollout 要完整执行 Agent,包括多次 LLM 生成、工具调用和原生代码。Agent Lightning 的核心系统设计就是把这两侧拆开(§3.4.1)。
集成 RL 框架(论文举例 verl),管理训练过程、任务编排、数据与通信;向 client 暴露 OpenAI-like API。server 把数据集切成 batch,用事件驱动系统协调 generation 与 training 阶段(§3.4.1)。
跑用户已有的 Agent 代码、工具与环境,采集 trace 和 reward 后回传;不需要和 GPU 资源同机。论文把它称为 agent runtime,强调 agent-agnostic training / trainer-agnostic agents(§3.4.1)。
以上顺序对应 §3.4.1 的叙述;endpoint per task 是原文明确写的设计,不是本页推断。
intra-node:一个 client 在一台机器上跑多个 worker,每个 worker 执行一个 Agent 实例;inter-node:多个 client 跑在不同机器上,各自管理一组 Agent 实例(§3.4.2)。
首选 OpenTelemetry + AgentOps 自动埋点,捕获执行 trace、LLM 调用和环境交互;对不想依赖 OpenTelemetry 的用户,OpenAI-like API endpoint 内置一套轻量 tracing(§3.4.2)。
检测 Agent 崩溃、网络中断、非法输出、长时间挂起的工具调用;失败 task 可重试或改派给其他 Agent 实例,并保留日志(§3.4.2)。
AIR(Automatic Intermediate Rewarding)把系统监控信号(如工具调用返回状态)转成中间奖励;环境与奖励函数可以本地跑,也可以池化成共享服务(§3.4.2)。
这套设计解释了一个容易忽略的点:Agent Lightning 并没有把 Agent「编译」进训练图,而是让 Agent 继续在自己的进程里跑,训练侧只通过 API 观察和收集。代价是网络通信、序列化与错误处理都变成训练循环的一部分(原文点名网络中断与外部依赖,未点名序列化;序列化是本页的判断 推断);论文用 per-task endpoint、重试和日志来兜底(§3.4.1–3.4.2)。
下图按 Figure 4 简化重绘;重点是 server/client 的边界,以及 per-task endpoint 如何同时承担模型调用与数据采集。
Table 1 转录实验配置;Figure 5–7 只给奖励曲线,正文未标注具体读数,本页不把读图近似当数字。
| Task | Framework | Dataset | Tool used | Num. of agents | Num. of tuned agents |
|---|---|---|---|---|---|
| Text-to-SQL | LangChain | Spider | SQL executor | 3 | 2 |
| Open domain QA | OpenAI Agents SDK | MuSiQue | Wikipedia retriever | 1 | 1 |
| Math QA | AutoGen | Calc-X | Calculator | 1 | 1 |
Table 1 · 三组实验分别用不同 Agent 框架;Text-to-SQL 的 3 个 agent 共用同一个 LLM、用不同 prompt 区分角色,训练只优化其中 2 个(§4.1)
| 任务 | 数据规模 / 设置 | 奖励 |
|---|---|---|
| Text-to-SQL | Spider:超过 10,000 个问题、200 个数据库、138 个 domain;测试时要求泛化到未见过的数据库(§4.1) | 最终答案是否正确;测试集按 answer accuracy 评估(§4.1) |
| Open domain QA | MuSiQue;检索库为整份 Wikipedia,约 2,100 万篇文档;BGE embedding + cosine similarity(§4.2) | R = 0.9×Rcorrectness + 0.1×Rformat;format 为 1 当输出符合指定格式(<think>、<query>、<answer> 等对应内容需被特定 token 包裹);correctness 为 word-level F1(§4.2) |
| Math QA | Calc-X:由 GSM8K、Ape210K 等数学数据集改造,要求调用计算器(§4.3) | 最终答案是否正确;测试集按 answer accuracy 评估(§4.3) |
| Base model | 三组实验均使用 Llama-3.2-3B-Instruct(§4.1–4.3) | |
§4.1–4.3 正文 · 本表是对正文数字的转录;Calc-X 的改造来源是原文列出的 GSM8K 与 Ape210K
Figure 5(Text-to-SQL)、Figure 6(RAG)、Figure 7(Math QA)分别给出训练与测试奖励曲线。论文对三组结果的总结是 “Agent Lightning enables continuous and stable performance improvement across diverse scenarios”(§4);这是作者的定性表述,正文没有给出最终分数的表格。
本页因此只转录 Table 1 与 §4 的配置数字,不转录 Figure 5–7 的曲线读数:曲线没有在正文标注具体数值,读图得到的近似值不适合当作论文数字引用。若需要具体终值,应查原图或作者后续发布的实验记录。
Text-to-SQL 用 LangChain,RAG 用 OpenAI Agents SDK,Math QA 用 AutoGen;Agent 侧代码保持原框架,训练侧只消费 transition。Text-to-SQL 还展示了多 agent 场景下的选择性优化:3 个 agent 中只更新 SQL writer 与 re-writer(§4.1)。
RAG 的奖励是 0.9×correctness + 0.1×format;format 要求输出符合指定格式,即 <think>、<query>、<answer> 等对应内容需被特定 token 包裹,correctness 用 word-level F1。论文没有给这两个分量的单独消融,因此无法从现有结果判断 0.1 的格式权重贡献了多少。
另一个反直觉的点是:LightningRL 没有设计新的 token-level 目标函数,而是把多轮轨迹拆成多条单轮样本,直接复用 GRPO / REINFORCE++ / PPO。论文称 “the simple identical assignment strategy is effective across multiple scenarios and datasets”(§3.3.2);这句话是作者对自己实验的总结,不是与其他 credit assignment 方法比较后的结论。
下表只列论文明确写出的主张;没有原句支撑的判断不放进这张表。
| 主张 | 原文原句 | 位置 |
|---|---|---|
| 几乎零代码修改即可接入已有 Agent | “allowing seamless integration with existing agents developed via diverse ways … with almost ZERO code modifications” | Abstract |
| LightningRL 兼容现有单轮 RL | “LightningRL updates the policy in a manner that is fully compatible with existing single-turn RL methods for LLMs” | §1 |
| 等值 credit assignment 在多个场景有效 | “our experimental results demonstrate that the simple identical assignment strategy is effective across multiple scenarios and datasets” | §3.3.2 |
| 跨场景持续、稳定改善 | “Agent Lightning enables continuous and stable performance improvement across diverse scenarios” | §4 |
| 拼接+掩码限制上下文构建灵活性 | “previous methods often concatenated all turns in a trajectory into a single response and used masking to control which parts were updated–an approach that cannot support such flexible and modular context construction” | §3.3.2 |
| 旧 RL 系统要求重建 Agent | “they generally require developers to rebuild agents inside the training system” | §5.1 |
§1 / §3.3.2 / §4 / §5.1 · 引文为英文原句;中文主张是本页对原句的压缩,不替代原句
论文自述的限制,加上从实验范围能读出的几条;后者标为推断。
§4 的实验叙述只围绕 Agent Lightning 自己的奖励曲线,没有给出 RAGEN、Trinity-RFT、rLLM、Search-R1 等拼接式方法的同表数字。论文对拼接+掩码的批评主要在机制层面(上下文累积、掩码耦合、位置连续性),不是在同一 benchmark 上的对照实验。因此,推断:现有结果能说明「能跑、曲线上升」,不足以量化相对拼接式方法的增益。
三组实验的基座都是 Llama-3.2-3B-Instruct,任务分别是 Text-to-SQL、RAG、Math QA,数据集分别是 Spider、MuSiQue、Calc-X。论文的标题写 ANY,但实验覆盖的是 Table 1 的三种框架/任务;更大模型、更多 Agent 形态、更长流程是否同样成立,论文没有报告。推断:3B 上的曲线不能直接外推到 70B 或长程 Agent(依据:§4.1–4.3 三组实验均使用同一 3B 基座,且没有规模消融)。
LightningRL 让每个 action 都拿最终 return R,不区分哪个 action 真正影响结果,也没有与 value function 或基于启发式/学习模型的 credit assignment 做对照(§3.3.2)。论文把 high-level value function 与更细粒度的 credit assignment 列为 future work。对长程、早期决策关键的任务,这种等值分配是否足够,现有实验没有回答。
框架本身不解决「奖励从哪来」。Text-to-SQL 与 Math QA 用最终答案是否正确,RAG 用 F1 + 格式分;这些都是可自动计算的奖励。现实任务里的用户满意度、代码可维护性等模糊目标,论文没有深入。AIR 能用工具调用状态等系统信号补中间奖励,但它仍依赖可观测的监控信号(§3.4.2)。
论文讨论了两种做法:把多个 LLM 各自当成独立 MDP 分别优化,或用 MARL / game theory 联合优化;前者忽略策略间依赖、可能带来次优协调,后者被论文称为 more principled、更能捕捉潜在交互动态(§3.2.2)。原文没有比较两种做法的实现复杂度;实验里的 Text-to-SQL 是同一个 LLM 用不同 prompt 扮演 3 个 agent,不是多个不同参数的 LLM 联合训练。
Appendix A 的示例里,用户仍要写一个 train.py:导入原 Agent 的 agent_function,把执行包进 agent_run(resource, task),再调用 Client、upload_data、train。Agent 主体代码可以不改,但仍需这个训练脚本与一层 agent_run 包装;论文的 almost ZERO 指对 Agent 代码的修改量(原文是 “almost ZERO code modifications”),不是零接入成本。
一句话:Agent Lightning 把「Agent 怎么跑」和「模型怎么训」拆成了两个进程,这是它最有复用价值的部分;至于等值 credit assignment 在更长、更复杂的任务上是否够用,论文留下的是 future work,而不是实验结论。