ACL 2026 杰出论文奖公布后,全球共有 18 篇论文入选,其中包括美团履约技术团队的一项工作。GeoRA 关注的不是“如何把 LoRA 用到强化学习上”这么简单,而是一个更具体的问题:当模型通过可验证奖励进行训练时,传统低秩更新是否真的适合这种优化信号?
论文介绍了一种专为 RLVR(Reinforcement Learning with Verifiable Rewards)设计的低秩训练方法,并分享了它在业务 Agentic RL 中的落地经验。它带来的启发是,参数高效训练不应只围绕显存和参数量设计,还需要匹配奖励信号的几何结构、更新稳定性以及 Agent 任务中的长链路反馈。
RLVR 对 LoRA 提出了什么新要求
LoRA 的基本思路是在冻结原始权重的同时,引入一个低秩增量:
[ W' = W + \Delta W, \qquad \Delta W = BA ]
其中,A 和 B 的秩远小于原始权重矩阵。这样可以显著减少需要训练的参数数量,也降低优化器状态和显存开销。
但 RLVR 的训练信号与普通监督微调并不相同。监督微调通常根据每个 token 的标签计算损失,而 RLVR 往往使用答案是否通过规则、测试用例或验证器来提供奖励。一个完整回答可能只得到一个整体奖励,模型需要把这个结果反向归因到生成轨迹上。
这会带来几类实际问题:
- 奖励稀疏,同一条轨迹中的 token 并不都能获得清晰的训练信号。
- 更新方向可能快速变化,低秩子空间如果表达能力不足,就难以跟随策略变化。
- 生成任务通常包含长上下文和多步决策,局部更新可能影响后续步骤的分布。
- 业务 Agent 的成功标准往往不止一个,例如任务完成率、工具调用正确性、响应时延和成本需要同时考虑。
因此,GeoRA 的核心价值可以理解为:把低秩参数化从一个通用的工程压缩技巧,进一步调整为适合 RLVR 优化过程的训练结构。具体实现细节应以论文正文和官方代码为准,但从方法设计角度看,重要方向是让可训练子空间更贴近奖励驱动的策略更新,而不是只追求一个固定的低秩分解。
从“省参数”走向“匹配更新几何”
传统 LoRA 的优势是简单、稳定、容易接入现有 Transformer 训练框架。不过在 RLVR 场景中,真正需要观察的不只是可训练参数数量,还包括以下指标。
1. 更新是否覆盖有效方向
如果奖励梯度主要集中在某些方向,而 LoRA 的低秩子空间没有覆盖这些方向,训练可能表现为奖励长期不增长。此时继续增加训练步数,通常不如调整适配器所在层、秩分配或更新结构有效。
2. 正负反馈是否造成剧烈摆动
RLVR 中常见的优势函数或奖励加权目标,会放大成功轨迹与失败轨迹之间的差异。低秩更新虽然参数少,但并不天然意味着更新稳定。需要配合学习率、梯度裁剪、奖励归一化以及 KL 约束等机制,避免策略快速偏离基础模型。
3. 多步 Agent 反馈能否被正确利用
Agent 任务的奖励可能在调用工具、读取结果、规划下一步和生成最终答案之后才确定。训练系统需要保存足够完整的轨迹,并明确哪些 token 或动作参与奖励归因。否则,低秩方法再高效,也只能优化一个信息不完整的目标。
这也是 GeoRA 对业务落地有价值的地方:它提醒工程团队,LoRA 的设计应该与奖励建模、轨迹组织和策略更新一起评估,而不是孤立地替换全量微调。
一个可运行的简化示例
下面的代码不是 GeoRA 的官方实现,而是一个便于理解和改造的最小示例。它用 PyTorch 构造冻结的基础线性层和低秩增量,并使用一个标量 reward 对策略损失进行加权。真实 RLVR 系统还需要采样、验证器、优势估计、KL 正则和批处理轨迹等组件。
安装依赖后即可运行:
python -m pip install torch
python demo_lora_rlvr.py
将下面内容保存为 demo_lora_rlvr.py:
import torch
from torch import nn
torch.manual_seed(7)
class RewardWeightedLoRA(nn.Module):
"""教学示例:冻结基础权重,只训练低秩增量。"""
def __init__(self, in_features: int, out_features: int, rank: int = 4):
super().__init__()
self.base = nn.Linear(in_features, out_features, bias=False)
for parameter in self.base.parameters():
parameter.requires_grad = False
self.A = nn.Parameter(torch.randn(rank, in_features) * 0.02)
self.B = nn.Parameter(torch.zeros(out_features, rank))
self.scale = 1.0 / rank
def forward(self, x: torch.Tensor) -> torch.Tensor:
base_output = self.base(x)
delta_weight = self.B @ self.A
return base_output + self.scale * (x @ delta_weight.T)
model = RewardWeightedLoRA(in_features=8, out_features=4, rank=2)
optimizer = torch.optim.AdamW(model.parameters(), lr=1e-2)
# 假设这些 logits 来自 Agent 轨迹,reward 来自可验证器。
features = torch.randn(6, 8)
target = torch.tensor([0, 1, 2, 3, 1, 0])
reward = torch.tensor([1.0, 1.0, -1.0, 0.0, 1.0, -1.0])
for step in range(20):
logits = model(features)
token_loss = nn.functional.cross_entropy(logits, target, reduction="none")
# 示例中的 reward-weighted objective;生产系统应使用优势值并处理轨迹归因。
advantage = (reward - reward.mean()) / (reward.std() + 1e-6)
loss = (token_loss * advantage.detach()).mean()
optimizer.zero_grad()
loss.backward()
nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0)
optimizer.step()
if step % 5 == 0:
print(f"step={step:02d} loss={loss.item():.4f}")
trainable = sum(p.numel() for p in model.parameters() if p.requires_grad)
total = sum(p.numel() for p in model.parameters())
print(f"trainable={trainable}, total={total}")
这个例子展示了三个可以迁移到实际系统的边界:基础模型权重保持冻结,低秩矩阵承载策略变化,奖励或优势值参与更新权重。真正接入 LLM 时,需要把 features 替换为模型隐状态,把 target 替换为采样动作或 token,把 reward 替换为验证器生成的轨迹级或步骤级信号。
在业务 Agentic RL 中如何落地
业务 Agent 的训练不能只看单轮回答准确率。可以把一条轨迹拆成几个可观测阶段:
- 用户意图解析是否正确。
- 工具选择和参数是否符合约束。
- 工具返回结果是否被正确使用。
- 多步计划是否收敛到目标。
- 最终结果是否通过业务验证器。
每个阶段都可以设计局部指标,再组合为最终奖励。例如,订单履约类 Agent 可以同时检查资源查询是否成功、时间窗口是否满足、工具参数是否合法,以及最终方案是否通过规则校验。这样做的好处是减少纯终局奖励带来的归因模糊,也便于定位 GeoRA 或其他低秩方法究竟改善了哪一部分行为。
工程上还应记录以下信息:
- 基础模型版本、适配器配置和低秩 rank。
- 每条轨迹的工具调用、验证器结果和奖励组成。
- 训练前后的成功率、拒答率、工具错误率和平均调用轮数。
- 线上成本、时延以及异常轨迹比例。
对于多任务业务,不建议一开始就把所有 Agent 场景共用一个适配器。可以先按任务类型或奖励结构划分实验,比较共享适配器、独立适配器和分层 rank 分配的效果。低秩参数节省了训练资源,但适配器之间的冲突仍然存在。
采用前的检查清单
GeoRA 类方法适合在以下条件下评估:任务有可靠的自动验证器,奖励可以稳定复现,训练团队能够保存完整轨迹,并且线上有明确的回归指标。如果奖励本身噪声很大,或者成功标准主要依赖主观评价,那么低秩结构可能会放大错误奖励,而不是解决它。
落地时可以按这个顺序推进:
- 先建立可重复的验证器和离线轨迹集。
- 用全量微调或普通 LoRA 得到基准结果。
- 固定采样策略、奖励定义和评估集,只比较低秩更新方法。
- 观察奖励、KL、梯度范数和任务级指标,而不是只看训练 loss。
- 在小流量环境验证工具调用错误、长轨迹退化和成本变化。
GeoRA 的启发并不局限于某一个 LoRA 变体。更重要的是,RLVR 训练需要让参数化方式、奖励归因和 Agent 轨迹结构彼此配合。对于业务团队,最稳妥的路径是先把验证器和评估体系做实,再用低秩方法逐步扩大可训练能力,最终用线上任务指标决定是否值得替换现有训练方案。