尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

RD-Agent AutoRL-Bench GSM8K 任务指南:数据、评测指标与 GRPO/PPO 强化学习训练全流程

RD-Agent AutoRL-Bench GSM8K 任务指南:数据、评测指标与 GRPO/PPO 强化学习训练全流程 RD-Agent AutoRL-Bench GSM8K 任务指南数据、评测指标与 GRPO/PPO 强化学习训练全流程【免费下载链接】RD-AgentResearch and development (RD) is crucial for the enhancement of industrial productivity, especially in the AI era, where the core aspects of RD are mainly focused on data and models. We are committed to automating these high-value generic RD processes through RD-Agent, which lets AI drive>项目地址: https://gitcode.com/GitHub_Trending/rd/RD-Agent导读本文以 RD-Agent 仓库中 AutoRL-Bench 的 GSM8K 任务描述 为核心骨架结合 AutoRL-Bench README 与相关源码完整讲解如何在 RD-Agent 的 AutoRL-Bench 框架下以 GSM8K 为基准任务用 GRPO/PPO 等强化学习方法对小型模型如 Qwen2.5-1.5B进行后训练并持续提升数学推理准确率。读完本文你将掌握 GSM8K 任务的数据格式与评测口径、从环境安装到提交评测的完整命令链路以及答案解析、奖励函数与 OpenCompass 评测器背后的实现原理。一、任务总览目标、数据格式与评测指标GSM8KGrade School Math 8K是一个包含约 8,000 道小学数学文字题的推理基准在 RD-Agent 的 AutoRL-Bench 中作为静态数据集型 Benchmark使用训练数据对 Agent 可见评测数据由评测器自行加载Agent 不接触测试集。原任务描述description.md给出的核心定义如下目标训练模型在 GSM8K 数学问题上获得更高准确率。数据格式每一行为一个 JSON 对象含question与answer两个字段{question: ..., answer: ... #### 42}评测指标答案准确率exact match。提示答案格式为#### 数字使用 GRPO/PPO 等 RL 方法训练。在此基础上本仓库对其中的每一环都有对应的工程实现下文逐一展开。二、数据管道Agent 只见训练集评测集由 OpenCompass 自管2.1 训练数据的下载与落盘benchmarks/gsm8k/data.py 负责下载训练数据其核心约定在文件头注释中写明Agent 只能看到 train split评估OpenCompass用 test split由 OpenCompass 自己内部加载。download_train_data(target_dir)的具体行为若target_dir / train.jsonl已存在直接跳过幂等设计避免重复下载否则调用datasets.load_dataset(openai/gsm8k, main, splittrain)从 HuggingFace 拉取 train split逐条以json.dumps(item, ensure_asciiFalse)写入train.jsonl保留原文格式即每行一个{question: ..., answer: ... #### 42}对象。根据 AutoRL-Bench READMEGSM8K 训练数据体积约 5MB且无额外依赖与 ALFWorld 需下载约 2GB 游戏数据、HumanEval 约 164 条样本形成对比。首次运行某个 benchmark 时run.py会自动调用对应data.py下载无需手动操作。2.2 在注册表中的位置benchmarks/init.py 维护了全局注册表BENCHMARKSgsm8k 的登记项为gsm8k: BenchmarkConfig( idgsm8k, evaluator_classrdagent.scenarios.rl.autorl_bench.core.opencompass.OpenCompassEvaluator, data_modulerdagent.scenarios.rl.autorl_bench.benchmarks.gsm8k.data, descriptionGrade School Math 8K - 小学数学推理, eval_config{ dataset: opencompass.configs.datasets.gsm8k.gsm8k_gen_1d7fe4, }, ),从中可以看到三个关键点评测器gsm8k 使用通用OpenCompassEvaluator评测配置指向 OpenCompass 的 GSM8K 生成式评测数据集配置opencompass.configs.datasets.gsm8k.gsm8k_gen_1d7fe4数据模块data_module指向gsm8k/data.py即上文的数据下载逻辑各 benchmark 的数据逻辑独立于各自目录新增 benchmark 无需改动注册表主体注意 gsm8k 目录下没有独立的 eval.py评测完全由通用评测器承担而 ALFWorld、WebShop 等交互式 benchmark 则通过expose_files[eval.py]把评测文件暴露给 Agent 参考。三、评测原理OpenCompass 通用评测器如何算 exact match3.1 评测执行链路get_evaluator(benchmark_id)会通过importlib动态导入evaluator_class并实例化见 benchmarks/init.py。对于 gsm8k实例化的是 core/opencompass.py 中的OpenCompassEvaluator其run_eval流程为校验模型路径存在拒绝 LoRA adapter若发现adapter_config.json则报错并提示合并后再提交根据eval_config[dataset]生成 OpenCompass 配置脚本opencompass_config.py写入 workspace 的benchmark_results目录从 components/benchmark/configs/models.yaml 读取模型推理配置vLLM 相关参数并处理tensor_parallel_sizeauto的自动换算取不超过 GPU 数的最大 2 的幂以opencompass config --work-dir work_dir运行评测单次评测超时上限 7200 秒并设置VLLM_ENFORCE_EAGER1、VLLM_WORKER_MULTIPROC_METHODspawn等环境变量保证稳定性解析summary/*.csv优先取metric列为accuracy或score的行计算均值作为最终score否则取首个可解析为数字的值若 OpenCompass 返回非数字分数如 vLLM 加载失败、显存不足则返回带error字段的失败结果。3.2 评测结果的统一 Schemacore/evaluator.py 定义了所有 benchmark 共用的EvalResult结构字段类型说明benchmarkstrbenchmark 名称必填model_pathstr被评测的模型路径必填scorefloat评测分数0-100必填accuracy_summarydict详细指标字典必填eval_typestr评测类型如opencompass可选errorstr评测失败时的错误信息可选raw_outputstr原始输出日志可选对于 GSM8Kscore即为精确匹配准确率exact match乘以 100 后的百分比分数accuracy_summary形如{accuracy: score, num_subdatasets: 1}。四、RL 训练实战以 example_agent 的 GRPO 脚本为例任务描述提示使用 GRPO/PPO 等 RL 方法训练。仓库自带的 agents/example_agent/train.py 给出了一个可直接运行的 GRPO 参考实现其中包含了与任务描述一一对应的工程细节。4.1 答案解析与#### 数字格式对齐描述要求模型输出形如#### 42的答案。参考脚本中的extract_answer分两级提取match re.search(r####\s*([-]?\d[\d,]*\.?\d*), text) # 优先找 #### 后的数字 # 找不到再回退取文本中最后一个数字 numbers re.findall(r[-]?\d[\d,]*\.?\d*, text)即先严格匹配#### 数字失败则回退取最后一个数字。这与描述中的答案格式#### 数字提示一致也说明评测本质上是数字级精确匹配abs(pred - gold) 1e-6而非逐字符比对允许42.0与42视为相等。4.2 奖励函数RL 训练的目标信号def gsm8k_reward_func(completions, answer, **kwargs): # 预测答案与标准答案数值一致 → 1.0否则 → -1.0GRPOTrainer 在每个训练步会对num_generations4条采样输出打分用该稠密二值奖励引导模型学会先逐步推理、再把最终答案写在####之后的输出格式。4.3 训练配置要点脚本使用trl.GRPOTrainer与GRPOConfig关键超参数如下参数默认值说明max_steps20固定步数避免小数据集报错per_device_train_batch_size2小 batch 避免 OOMgradient_accumulation_steps4梯度累积等效扩大 batchlearning_rate1e-5训练学习率max_completion_length256生成上限容纳逐步推理num_generations4GRPO 每组采样数bf16True混合精度训练脚本还体现了两条来自 core/instructions.md 的硬性约束提交完整模型而非 LoRA adapter评测器会拒绝带adapter_config.json的目录因此 LoRA 训练后必须model.merge_and_unload()再save_pretrained每 epoch 保存 checkpoint 后立即/submit在时间预算内多次提交、根据分数迭代这是 AutoRL-Bench 的核心玩法——最终取本次实验内所有提交的最高分。五、从运行到查看结果GSM8K 的完整命令链5.1 环境安装git clone gitgithub.com:microsoft/RD-Agent.git ~/RD-Agent cd ~/RD-Agent conda create -n autorl python3.10 -y conda activate autorl pip install -e . # 全局依赖trl, vllm, torch, opencompass 等 pip install -r rdagent/scenarios/rl/autorl_bench/requirements.txt # GSM8K无额外依赖随后配置.env复制.env.example或手动创建OpenHands Agent 需要OPENAI_API_KEY、OPENAI_API_BASE、CHAT_MODEL等项。5.2 运行 GSM8K 任务# Example Agent简单 GRPO 训练验证流程 python -m rdagent.scenarios.rl.autorl_bench.run \ --agent example_agent --task gsm8k --model Qwen/Qwen2.5-1.5B --timeout 7200 # OpenHands Agent GSM8K python -m rdagent.scenarios.rl.autorl_bench.run \ --agent openhands --task gsm8k --model Qwen/Qwen2.5-1.5B --timeout 41600命令行参数说明参数说明示例--agentAgent 类型example_agent、rdagent、openhands--taskBenchmark 任务名内置或smith-*gsm8k--modelHuggingFace 模型 repo_id首次自动下载Qwen/Qwen2.5-1.5B--timeoutAgent 最大运行时长秒7200或41600约 11.5h--portGrading Server 端口默认 500050005.3 查看结果# 实时查看运行日志 tail -f workspace/gsm8k/run_id/agent.log # 查看评分记录 cat workspace/gsm8k/run_id/scores.json # 查看全局实验汇总 cat rdagent/scenarios/rl/autorl_bench/results.csv # Web UIStreamlit 面板 streamlit run rdagent/scenarios/rl/autorl_bench/core/ui.py --server.port 8511六、工作区结构、时间预算与评测服务6.1 隔离工作区与软链接每次run.py调用产生独立工作区gsm8k 的典型布局为workspace/gsm8k/ ├── run_id_agent/ # 一次独立实验 │ ├── code/ # Agent 代码区 │ ├── output/ # 模型输出可保留 output/v1、output/v2 多版本 │ ├── models/Qwen/Qwen2.5-1.5B → rl_files/models/...只读软链接 │ ├── data → rl_files/datasets/gsm8k/只读软链接 │ ├── description.md → benchmarks/gsm8k/description.md │ ├── instructions.md → core/instructions.md │ ├── run_meta.json # 时间预算信号唯一时间来源 │ ├── scores.json # 本次实验所有提交的评分 │ └── grading_server.log模型与数据统一缓存在git_ignore_folder/rl_files/可用环境变量AUTORL_FILE_PATH覆盖见 conf.py其中datasets/gsm8k/train.jsonl即上文下载的训练数据baseline_workspace/缓存各模型的 baseline 分数。6.2 时间预算与迭代循环core/instructions.md 约定默认时间预算为 12 小时43200 秒唯一时间来源是run_meta.json字段start_time、timeout_s、last_submit_time、end_time也可通过GET $GRADING_SERVER_URL/time查询剩余时间。推荐的任务循环为先ls查看工作区文件阅读description.md与instructions.md在code/下编写训练脚本SFT、GRPO、PPO 均可将模型保存到$OUTPUT_DIR如output/v1通过POST $GRADING_SERVER_URL/submit提交评测根据返回分数在剩余时间内持续迭代。/submit响应示例{ submission_id: 3, score: 65.0, baseline_score: 45.0, improvement: 20.0, best: {submission_id: 2, score: 68.0}, total_submissions: 3 }6.3 Baseline 与增益衡量AutoRL-Bench 的核心问题是大模型如 GPT-5.2通过 Workflow 对小模型进行 RL 训练后分数能否超过 baseline。run.py在启动 Agent 前会用原始模型评测一次 baseline有缓存随后 Agent 的所有提交都以improvement当前分 - baseline衡量增益最终取本次实验内最高分写入results.csv供论文实验汇总。七、为你的 GSM8K 实验做对的关键点结合 core/instructions.md 与 OpenCompassEvaluator 的实现实践中有四个高频坑值得注意禁止直接提交未训练的基座模型未经训练的模型只会拿到 baseline 分improvement 0浪费一次提交额度必须提交完整模型评测系统不支持单独提交 LoRA adapter 目录PEFT 训练后需model.merge_and_unload()合并再保存 tokenizertokenizer 兼容性用 trl 保存模型后tokenizer_config.json中的extra_special_tokens可能被存成 list而 vLLM/transformers 加载时要求 dict需删除该字段后再提交否则评测失败答案格式严格遵守训练提示词应引导模型以#### 数字结尾因为评测按数字精确匹配exact match计算准确率extract_answer会优先提取####后的数字。八、小结与延伸GSM8K 在 AutoRL-Bench 中扮演了静态数据集 OpenCompass 评测的标准范式训练数据由 data.py 下载并软链接进工作区评测由 OpenCompassEvaluator 以 exact match 准确率统一打分Agent 则基于 description.md 与 instructions.md 在时间预算内用 GRPO/PPO 等 RL 方法迭代训练。如果你希望新增类似基准任务可以参照 benchmarks/init.py 中的注册方式与 README 的扩展指南 实现自己的data.pydescription.md并通过discover_smith_benchmarks()自动发现 rl-smith 基准将其纳入同一套训练-评测闭环。【免费下载链接】RD-AgentResearch and development (RD) is crucial for the enhancement of industrial productivity, especially in the AI era, where the core aspects of RD are mainly focused on data and models. We are committed to automating these high-value generic RD processes through RD-Agent, which lets AI drive>项目地址: https://gitcode.com/GitHub_Trending/rd/RD-Agent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表