Agent Lightning 如何配置 API Gateway 的 default_proxy 温度与 log_probs 记录
2026/9/14 14:57:49 网站建设 项目流程

Agent Lightning 如何配置 API Gateway 的 default_proxy 温度与 log_probs 记录

【免费下载链接】agent-lightningThe absolute trainer to light up AI agents.项目地址: https://gitcode.com/GitHub_Trending/ag/agent-lightning

在 Agent Lightning v1.0 中,API Gateway 由agl-server启动,它使用 Hydra 配置体系,完整的默认配置位于 agentlightning/config/server.yaml。其中的default_proxy段控制两件事:训练/验证 rollout 强制使用的采样温度(train.temperatureval.temperature),以及是否要求模型后端返回 chosen-token 的 log probabilities(include_log_probs)。本文的任务是调整这两组配置并确认它们真正作用于转发的模型请求,适用前提是你已经按 安装文档 完成安装、包括verlGPU 栈。

Gateway 如何使用这两组配置

default_proxy.train.temperature的默认值是1default_proxy.val.temperature的默认值是0.7default_proxy.include_log_probs的默认值是true。这三个值不是"建议值",而是 Gateway 转发请求时实际写入请求体的值:

  • 训练模式(train)的模型请求会被强制改写为配置的 train 温度,并加上return_token_ids: true;当include_log_probstrue时,还会加上logprobs: true,要求后端返回所选 token 的 log 概率与 token ID。
  • 验证模式(val)的模型请求会被改写为配置的 val 温度并加上return_token_ids: true

一个容易踩的坑:verl自身也有类似的温度设置,但这些值不会被用于经 Gateway 转发的请求,因为 proxy 会自动替换它们。也就是说,改verl侧的温度对 proxied 请求无效,必须改 Gateway 侧的default_proxy。请求改写的实现见 agentlightning/server/proxy.py 的prepare_body

include_log_probs: true的作用是记录 rollout 的 log 概率,verl依赖这些值上报 rollout-correction 指标,部分 rollout-correction 功能也硬性依赖它们,官方建议保持true。在异步训练场景下,若启用verl的 rollout correction(例如 token 级重要性采样rollout_is: tokenrollout_is_threshold: 2,见 docs/7-asynchronous-training.md),这些 log 概率就是修正策略失配的数据来源。

修改配置:启动参数覆盖

推荐的方式是在启动agl-server时用 Hydra 命令行参数覆盖任意配置项,无需改动仓库文件:

agl-server \ host=0.0.0.0 \ port=8080 \ key="$AGL_KEY" \ default_proxy.train.temperature=1.0 \ default_proxy.val.temperature=0.7 \ default_proxy.include_log_probs=true

其中hostportkey是 docs/5-api-gateway-configuration.md 给出的顶层设置(key为空会禁用鉴权并打印警告,启用时 trainer 与 Controller 必须使用同一个非空 key)。本例中只把温度写成默认值作占位,实际应按你的采样策略填入目标数值。Hydra 语法支持任意深度覆盖,例如只改训练温度时传default_proxy.train.temperature=0.9即可,其余项保持默认。

修改配置:直接编辑 server.yaml

如果希望改动持久化,可以直接编辑 agentlightning/config/server.yaml,其默认内容为:

host: 0.0.0.0 port: 8080 key: "" default_proxy: model_name: "Qwen/Qwen2.5-7B-Instruct" include_log_probs: true train: temperature: 1 val: temperature: 0.7

修改default_proxy下对应字段后,用不带覆盖参数的agl-server启动即可加载新值。两种方式不要混用:命令行覆盖优先于文件值,混用时以启动命令为准。

model_name 一致性:不匹配时的报错现象

改温度时往往同时会换模型,此时注意default_proxy.model_name必须与verlactor_rollout_ref.model.path配置一致:

server default_proxy.model_name = trainer actor_rollout_ref.model.path

即使 vLLM 端点本身健康,两侧模型名不一致也会产生 "model not found" 错误。遇到该报错时,先核对这两处配置是否完全一致,再怀疑后端服务。

验证配置生效

  1. 温度生效判断docs/5-api-gateway-configuration.md明确说明此处配置的 train/val 温度就是模型请求实际使用的值。启动后如果仍观察到与预期不符的采样行为,检查是否同时存在verl侧温度配置造成误判,或启动命令中的 Hydra 覆盖是否拼写正确(键名必须带default_proxy.train./default_proxy.val.前缀)。
  2. log_probs 记录判断:Gateway 会把每次模型请求记录为model_request事件;用 triplet 格式查询事件时(GET /rollouts/{rollout_id}/events?format=triplet,实现见 agentlightning/server/routes/events.py),model_request事件的数据中会包含prompt_token_idsresponse_token_idsresponse_log_probs字段。response_log_probs有值说明后端按logprobs: true返回了 per-token log 概率;该字段为null表示响应中缺少 logprobs 或 schema 无法识别(提取逻辑见 events.py,任何非法值都会降级为null而不抛错)。
  3. 下游可用性:训练侧消费这些值时,若某 rollout 的response_log_probs不可用,verl的 rollout adapter 会放弃该样本的rollout_log_probs(见 agentlightning/verl/rollout_adapter.py),依赖 rollout correction 的指标因此无法计算——这反过来验证了保持include_log_probs: true的必要性。

限制说明

  • include_log_probs控制的是对 train 后端请求追加logprobs: true;val 模式的转发请求不追加该字段(见 proxy.py),所以验证请求不产生 log 概率记录。
  • 温度由 Gateway 统一强制,agent 或verl侧对 proxied 请求传入的温度会被覆盖,无法按单次请求单独指定。
  • 本文覆盖的是agl-serverdefault_proxy配置;Controller 侧通过agl_server.url(默认http://localhost:8080)连接 Gateway,其配置见 docs/6-controller-configuration.md,不在本次调整范围内。

【免费下载链接】agent-lightningThe absolute trainer to light up AI agents.项目地址: https://gitcode.com/GitHub_Trending/ag/agent-lightning

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询