harbor-qwen-grpo-experiment / docs /SWESMITH_GRPO_700_EXPANSION.md
keryszhan's picture
发布Harbor代码智能体强化学习实验报告
ec5809e verified
|
Raw History Blame Contribute Delete
8.25 kB

SWE-Smith GRPO 700题扩充名单

固定日期:2026-08-15;结果更新:2026-08-17
状态:700题主名单与487题候补名单用于扩充和Oracle候选。项目随后按允许短缺决策冻结267题,并已完成任务镜像、导出、AutoDL导入、注册和64K Canary;700不是最终训练集规模。2026-08-30项目阶段性归档,腾讯云CVM、云硬盘和k3s运行面已经释放。

1. 结论

主名单已按两阶段固定为700题,两个阶段互不重叠:

阶段 定义 数量 当前状态
A swe-smith-filter-pro 内扩充 350 保留原125题,新增225题;350题均已有 completed 基础镜像
B 官方 SWE-Smith 中存在、但不属于完整 swe-smith-filtered 3,748题集合 350 仅完成名单筛选;需要生成任务目录并处理镜像
合计 GRPO候选主名单 700 不是最终可训练的 freeze 数据集

阶段A保留了现有125题 freeze-pro,没有因重新排序而删除历史任务。新增225题均来自原487题 filter-pro 且 image_available=true。阶段A仍需对新增任务补做正式 Oracle、split 和注册验收,验收完成后才能称为新的 freeze-pro-350。

阶段B使用完整固定 revision 的 kylemontgomery/swesmith-filtered 3,748题做差集,不是只减去487题 filter-pro。因此这350题确实来自此前 filtered 数据集之外。

最终执行没有强行补齐700题。完成静态、alignment、Oracle、镜像、仓库上限和split约束后,项目按显式短缺模式选择267题;该结果详见第8节。上表继续描述候选计划,不再作为当前状态。

2. 固定数据源

数据源 固定 revision 用途
SWE-bench/SWE-smith ea6d7173829c7ec8fa16c22055699ff2e9188091 59,136个唯一官方任务及基础镜像元数据
kylemontgomery/swesmith-filtered d5e8f5b004b9727509d74f2a63637b09386901f1 完整3,748题差集边界
SWE-bench/SWE-smith-trajectories 08e109b4a59eaeebf80e4675cd125d42e7ac99a4 Claude 3.7、Claude 3.5、GPT-4o逐任务成功证据
RUCAIBox/SWE-Master bc8904f44d62f10b5eb16189b22eca31e20cd48e MiniMax-M2/GLM-4.6教师池任务级成功证据

SWE-Master没有公开逐任务的教师模型归属。因此本文中的“跨数据源成功”只表示官方Claude/GPT轨迹与SWE-Master教师池均存在成功证据,不表示五个模型全部成功,也不能判断具体由MiniMax-M2还是GLM-4.6成功。

3. 筛选优先级

任务按以下证据层级选择,层内再优先GPT-4o、Claude 3.5、Claude 3.7成功,并以 sha256(task_id) 做最终稳定排序:

  1. 官方轨迹与SWE-Master两个数据源均成功;
  2. 官方Claude/GPT轨迹成功;
  3. SWE-Master reward_mean=1;
  4. SWE-Master 0<reward_mean<1。

阶段A另外有两个不可覆盖的约束:完整保留原125题,新增任务必须已有 completed 基础镜像。阶段B主名单和候补名单不受当前镜像状态限制,因为它们尚未进入项目的镜像流水线。

选择器在证据层级内按仓库轮转,并设置每个350题阶段约5%的初始仓库上限,即18题。本次无需放宽上限。阶段A覆盖67个仓库,阶段B覆盖102个仓库,合并后覆盖107个仓库。

4. 主名单统计

指标 阶段A 阶段B 合计
任务数 350 350 700
跨数据源成功 32 350 382
仅官方轨迹成功 277 0 277
仅SWE-Master full 11 0 11
仅SWE-Master partial 30 0 30
GPT-4o成功 0 13 13
Claude 3.5成功 36 41 77
Claude 3.7成功 280 335 615
仓库数 67 102 107

同一任务可以被多个官方模型成功,因此模型列不能相加得到任务总数。阶段B的350题全部具有跨数据源成功证据;这意味着尚未使用低优先级任务就已达到目标规模。

5. 候补容量

候补名单共有487题:

  • 阶段A候补137题,其中120题已有 completed 基础镜像,17题尚无当前镜像;
  • 阶段B固定350题候补,350题也全部为跨数据源成功;
  • 扣除阶段B主名单和候补后,仍有10,314个符合成功证据且位于完整 filtered 集合之外的候选任务。

候补任务不与700题主名单重叠。后续静态检查、Oracle或镜像处理失败时,应按同一阶段候补顺序替换,不能用阶段B任务替换阶段A并继续声称满足 filter-pro-350 定义。

6. 文件与复现

主名单:

  • configs/datasets/swesmith-grpo-700-20260815.json
  • SHA-256:660cf10573a71086768442f171b86a99df41f564306ef2291de587053e640e61

候补名单:

  • configs/datasets/swesmith-grpo-reserves-20260815.json
  • SHA-256:e0029d372740e3fd3a097d008e9e974166f3cf0dd815c52c2ad1b37cb21f1f82

每条记录包含任务ID、阶段、仓库、基础镜像名、证据层级、成功的官方模型、SWE-Master结果类型、当前镜像状态、是否保留自原 freeze-pro,以及是否属于固定30题模型选择Canary。主名单包含全部30题Canary,候补名单不包含Canary题。

可复现入口:

make swesmith-grpo-700-plan

只查看两个主阶段的任务ID:

jq -r '.tasks[] | select(.stage == "filter_pro") | .task_id' \
  configs/datasets/swesmith-grpo-700-20260815.json

jq -r '.tasks[] | select(.stage == "outside_filtered") | .task_id' \
  configs/datasets/swesmith-grpo-700-20260815.json

该复现命令只读取固定公开元数据并重建名单,不下载任务目录、不执行Oracle、不构建镜像,也不访问TCR。

7. 后续处理边界

实施已固定以下硬约束:

  • 单仓库最多20题,最终split精确为490/105/105且仓库隔离;
  • Stage A和Stage B必须各350题,Stage A不足时停止并报告,不用Stage B静默补齐;
  • 复用历史177个Oracle accepted和103个180秒口径下的终止失败,仅4个RuntimeError重试;
  • 保持现有80个TCR任务分片。每个Oracle批次先查询实际tag并做增量投影,任一分片超过100 tag即禁止云端作业;
  • 复用旧版已验收的基础镜像rewrite;新基础镜像以baseanchor-*确定性分散到现有task-00..79,不新增仓库。Linux镜像搬运在首次copy前查询目标仓库实tag并对完整pending集合做100 tag硬门禁;
  • 静态结果、Oracle结果、最终选择、导出包和注册数据均校验任务树/verifier指纹及精确ID集合。

执行顺序:

export CURATION_VERSION=swesmith-grpo-700-v1
export CURATION_PROFILE=grpo700

make grpo700-plan
make grpo700-materialize
make dataset-filter
make dataset-images-plan
make dataset-images-mirror-linux
make dataset-images-check
make grpo700-oracle-reconcile

# 重复执行,直到无pending任务或确认Stage A无法达标。
make dataset-oracle
make grpo700-status

make grpo700-resolve
make dataset-freeze-check
make dataset-freeze
make dataset-export

dataset-freeze在grpo700 profile下会先对最终700题的TCR任务镜像做存在性验收,然后才生成freeze-700/。AutoDL仅在导入包的SHA-256、split ID、任务指纹和数量全部一致后执行make dataset-register。实际CVM作业完成前,本文件的700个ID仍不得当成可训练freeze数据。

8. 最终冻结结果(2026-08-17)

项目最终没有把数量门槛置于质量门禁之上。以CURATION_ALLOW_SHORTFALL=true解析得到267题、89个仓库,单仓最大13题:

指标 结果
train 187
validation 42
test 38
Stage A 217
Stage B 50
仓库 89
任务镜像 267/267 verified

正式数据集名为swesmith-curated-grpo-267-v1,split manifest语义摘要为ae5df9a3f4a3fc8af44fac420b36529e283839e1bd3de9daba65d5bcda51447d。导入后的profile状态为static_total=1187、static_accepted=1032、oracle_total=473、oracle_accepted=283、基础镜像103 available/2 skipped/0 pending。

冻结后使用Klear-AgentForge-8B-SFT在validation确定性抽样30题执行64K Canary,结果为12/30、Mean 0.400、Exceptions 0。后续GRPO或PPO都只消费同一267题freeze;算法切换不修改split、任务内容、镜像或Oracle结果。