LOCAL_TRAIN · 数据质量与训练影响

A/C 合并去重 + B,能改善哪些模型症候?

2026-10-30 · Codex · 全量静态审计 5 个冻结文件、1,735 个视图、949 个源实例 · 未启动训练或重新判分

这批数据适合建立去重对照,但不能据此认定已补足纠错、停止或长期推理能力。合并会消除多池造成的隐式加权,保留大部分可执行修复知识;它几乎不增加新决策,还会保留教师的工具习惯与部分过程标签错配。

  1. 已核实C1/C2/B 的监督位置全部包含在 A 中。按同源 A/C 的监督并集合并,再单独加入 B,得到 989 个全量候选视图;其中 13 个是 C3 失败报告。C3 单列时,修复主池为 A 936 + B 40 = 976 个视图。
  2. 已核实恢复区域的相对曝光几乎没变:3.75% → 3.82%。B 文件本身的份额变大,不能直接解释成“纠错训练显著加强”。这些恢复位置原先也被 A/C 重复监督。
  3. 具体缺口过程标签仍有语义错配。发现一条 B 的失败→通过主要来自运行配置变化;一条 C3 把预期失败的负向测试当作未完成证据。去重保留了这两类问题。
  4. 训练影响推断更可能减少冗余和无意加权,未必消除复读或恢复基座成绩。A 中 80.3% 的轨迹仍监督查询 git 历史;已有大量自然结束正例,但 SFT 后 completed 仍降到 5/50,提示还存在当前学生状态覆盖和推理协议问题。

1. 对照三轮评测:要治疗的是行为链条

参考用户指定的 2026-10-28 三轮分析报告。下表直接取其内嵌数据。三轮均为固定 50 题;Run2 是续训权重,不是新的独立随机重复。基座前 31 题存在约 4% 时钟偏快,生成端还有续写状态影响,不能把差异全部归因于训练数据。

基座Run1Run2

“长截断复读”“首次修改前失控”“查询历史”等来自轨迹启发式;它们不是官方失败原因。测试命令不等于有效验证,git 历史查询不等于获取答案,max_tokens 不等于累计输出预算耗尽。官方 resolved 始终是结果指标。

更值得解释的是:首轮后自然完成减少,修改前失控和无修改增加;续训没有反转这一趋势。数据筛选需要覆盖“从观察中作决定、改变错误策略、完成修改、验证、收尾”的完整过程。单纯增加测试命令、缩短文字、提前调用编辑,都不是充分目标。

2. “合并去重”必须先定义到监督位置

此次主解释为:同一源实例先核对完整 token 序列一致,再对 A/C 的监督位置求并集,每个源轨迹只保留一次;B 仍作为局部恢复视图单独训练。这是合并情景核算,没有导出或替换任何训练文件。

A · 936 条成功修复主干,687 原发布 + 249 cap-3 扩展
C1 / C2 · 无新增位置保留行为标签;并集后等价于 A 原有 mask
B · 40 条相同上下文,仅重加权一段恢复动作
C3 · 13 条单列只监督最终报告,语义需要复核

全量候选表包含原 dev 数据,不能直接整体入训。总上下文 token 统计包含观察与重复前缀;监督 token 统计为 loss mask=1 的位置曝光次数;“唯一位置”指同一源序列中的位置,不是词表中不同 token 的数量。

为什么三种去重会产生不同结果

保留原 split 后的训练规模

这张表用冻结监督审计中的 train 各池合计投影。原始逐成员 split manifest 在当前可用位置缺失,故 937/924 是可核算的数量,不是已生成的 train 成员清单。正式导出时必须恢复原成员划分,不能因合并重新把旧 dev 放入训练。

3. 数据质量:格式可靠,过程与目标仍有缺口

维度全量核查结果能支持的结论与边界
格式token / mask / 台账5/5 文件 SHA 与训练审计一致;1,735/1,735 通过长度、词表、mask、keep_msgs、spans 和台账计数校验;没有非 assistant 监督位置。具备重新组合的工程基础。C1/C2 为 A 子集,B 与 C3 另行检查角色边界;检查的是发布 payload,不是重新运行工具。
结果修复轨迹A 的 936/936 有 evaluator success;935 自然 finish,1 条为 max_steps。全部记录为 evaluator_acceptance。有归档的执行验收依据。F2P/P2P 通过数由总验收结果及声明节点数推导,不能冒充逐节点 JUnit 重放;本轮没有重跑 judge。
筛选既有错误 maskingA 中 294/936 条经过消息屏蔽,共 1,320 个 assistant 块不计 loss;最终保留 15,434 个 assistant 块。当前数据已经做过错误步骤选择,不能把改进建议写成“从零加 error masking”。应修正漏检、错检和缺失的替代行为。
隔离来源与多样性949 个实例来自 696 个仓库家族;A 本身为 936 个实例 / 691 仓。与受保护 SWE Verified 仓库名单的精确 family 交集为 0。支持仓库名层面的隔离;不等于已完成 fork、语义近重复或所有 benchmark 污染审计。原 train/dev 划分仍须独立保留。
监督停止与报告A 中 904/936 条保留最终报告监督,31 条最终报告被屏蔽,1 条没有自然报告。C3 只保留 13 个报告。不是完全没有“结束”样本。屏蔽不实收尾是合理的,但不会自动生成一个正确收尾替代目标;也不覆盖学生陷入循环后的停止决策。
任务测试判别力A 中 330/936 个任务只声明 1 个 F2P 节点;F2P 节点数中位数 2,P2P 通过数中位数 34。节点数少不证明测试弱,节点数多也不证明覆盖充分。本轮未用错误补丁/正确替代实现挑战这些验证器,无法认定“通过即语义正确”。
行为当前学生状态B 只有 40 个源实例 / 40 个家族;它们来自成功教师轨迹内部。路径元数据统一指向 deepseek-flash 生成批次。这些是局部恢复示范,不是当前 Qwen3.5-4B 在长截断、循环和压缩后状态上的真实纠偏分布。生成者标识来自归档路径,未另行重验调用签名。

A 的完整上下文长度

936 个实例,P50=18,388,P90=45,980.5,最大 65,491;217 条达到 32K。训练输入有中长上下文,但没有 64K 以上完整样本。

A 的受监督工具调用

15,089 bash / 392 read / 219 edit。bash 内也包含读写文件,不能把 native edit 少直接解释为没有代码修改;它确实使独立 edit 工具的示范较少。

思考长度与运行时复读需要分开。受监督思考正文重分词 P50=52、P90=669,最大 7,652;2,267 个块为空白思考占位符。按“至少 3,000 字符且压缩比小于 0.1”的静态候选规则,没有检出受监督的长复读。历史精确边界审计最大值为 7,653,差 1 来自正文抽取/重分词口径。这不证明训练后不会复读,而是削弱了“直接模仿训练集中 16K 复读文本”的解释。

查询历史的习惯会留下来。752/936 个 A 实例的正向监督中出现 git log/show/blame/rev-list/reflog,共 1,564 次;baseline 559/687、cap-3 193/249,两个来源都有。评测中查历史从基座 9/50 变成 46/50、45/50,与教师风格迁移的假设一致,但这仍不是因果证明。应筛无信息增益的查询,不能禁止所有历史查询。

为什么“最后编辑后测试通过”不能只取一个正则数字

原数据库记录 404/936 有 test 命令位于末次疑似编辑之后;本轮从序列化观察解析出 887/936 有 pass 摘要,669/936 的最后一个 pass 位于最后一个疑似写操作之后。两个口径不同,且 heredoc 被粗略算作写入、多个工具观察可能合并,均不能直接转成真实质量通过率。C2 的 422 条包含更细的既有规则检查,但仍应结合具体命令语义。报告没有将其余样本自动判为“没有验证”。

4. 逐例核查:最终成功与局部监督正确是两回事

以下是有目的的语义复核,不是随机抽样,不能把发现比例外推为全量缺陷率。全量统计覆盖 949 个实例;人工深读集中于这些具体反例与正例。C3 的 13 个最终目标均核对了文本和台账。

有效 B 示例

docopt_docopt_pr6:相同测试入口下修正比较逻辑

可见 pytest 从 1 failed, 2 passed 变为 3 passed。恢复动作修正了 equality 比较,最终报告说明 __ne__、基于内容的比较与确定性 repr。B 保留 514 个监督 token,失败观察之前的动作在 B 中不计 loss。它能提供“根据断言修正具体实现”的短恢复示范。

归档独立验收支持最终 patch 被接纳;不能由此推广为复杂多文件或长循环恢复能力。

B 窗口错配

cdgriffith_puremagic_pr108:运行配置变化被计入恢复

失败端:PUREMAGIC_DEEPSCAN=0 python -m pytest -q
观察:2 failed, 106 passed

受监督 msg 55:Those tests inherently deep scan dependent, not concern. Normal passes.
接着修改文档拼写;msg 57 将新文件加入 diff;msg 59 清理测试生成文件。

通过端:python -m pytest -q(不再设置 PUREMAGIC_DEEPSCAN=0)
观察:108 passed

这个局部窗口没有修复“关闭 deep scan 导致的失败”,而是切回另一运行配置。最终任务修复可以有效,生成文件清理也不等于篡改既有测试;问题在于把这段当作因果明确的“失败→修复→相同条件通过”。B 中这条的 763 个目标 token 还会被额外加权。

模型审核为 KEEP,并在 notes 中承认 deep-scan=0 的失败是预期的。这说明“动作内容可保留”与“适合作为恢复窗口”是两种判断,当前标签没有充分区分。

C3 标签错配

businho_pytest-ruff_pr25:预期失败的负向测试

在 /tmp/broken_ruff2 写入故意损坏的 ruff.toml:broken = true
运行 pytest --ruff --ruff-format,按预期得到错误消息与 2 failed。
另一个观察:All checks passed! / 3 files already formatted。

最终目标:Implemented the fix ... Existing test suite: 7 passed
Manual broken ruff.toml ... fail with the ruff error displayed.

数据台账把 2 failed 当作 HONEST_INCOMPLETE_REPORT 的证据;但这里是在测试“错误是否正确暴露”,失败输出是被期望的验证现象。关键词筛查还把 Existing lint behavior remains unchanged 中的 remains 当作限制说明。这条报告可以忠实于可见观察,却不是一个明确承认未完成的 C3 示范。

13 条 C3 最终目标全部以 Implemented 开头,多数再将剩余失败归因为旧测试或环境。这样的文本有时合理,有时需要反事实证据。当前检查不能认证这些归因全部正确,也不能将它们统称为“诚实放弃”训练集。

C2 筛查边界

durandtibo_grizz_pr315:验证后的动作不一定是反复修改

先得到 14 passed,随后用 Python heredoc 检查两种 ingestor 对不存在文件都抛出预期异常,观察输出为两个 OK。原规则把 python - << 视作修改,因此它进入 A/C1,却不满足 C2 的“最后修改后测试”规则。这个例子说明:选择更窄 C2 或删验证后尾部前,需要区分有效补充验证和无意义返工。

5. 加入 B 到底加强了多少纠错监督?

口径原五池A/C 并集 + B解释
B 文件独占曝光份额1.14%1.91%只计算 B 那一行,容易高估改变
B 所标注恢复位置的全部曝光397,074240,700将 A、C 中同一位置的重复也算上
恢复区域 / 全部监督曝光3.754%3.823%只增加约 0.069 个百分点
恢复覆盖的新实例 / 新位置0 / 00 / 0B 的 40 条、120,350 个位置本来已在 A 中

去重还降低了“有 C1/C2 标签的源实例”被重复抽到的程度:C1 成员的视图份额从 50.4% 降到 34.5%,C2 从 62.4% 降到 45.7%。这是源实例成员份额,彼此可以重叠,不能相加成 100%。因此,去重并非只删除坏权重,也会撤销原来对早期修改和验证结束任务的偏重。

B 额外曝光倍数试算

保留 A+C3 的唯一监督 6,176,116 个位置;B 覆盖其中 120,350 个。试算只改变重复曝光,不生成任何新实例或能力。每个梯度累积窗口采用自身监督 token 分母,因此表中总 token 份额不是精确梯度份额或预测分数。

总曝光 = 6,176,116 + w × 120,350
恢复区域曝光 = (1 + w) × 120,350

不建议先把 B 放大很多倍。40 条中最长 5 条占 B 监督 token 的 41.3%,整体容易被少数长窗口主导;而上述配置切换反例也会被一起放大。优先修正窗口标签、增加真实恢复场景,再讨论权重。

另一个容易误解的点是:B 的失败前缀 loss=0,仅对 B 这个视图成立。同一上下文在 A 中仍按 A 的 mask 监督;如果某个错误动作在 A 中未被屏蔽,添加 B 不会抵消它。需要在源实例层面统一执行明确的坏步骤屏蔽。

6. 这批数据可能怎样影响下一轮训练

目标症候数据能提供什么合并后的预期影响判断边界
无意重复、继续拟合教师风格同源副本从 1,735 减至 989,唯一任务不变较明确的机制降低局部任务/步骤的隐式权重;同 epoch 下减少训练曝光,可能减少能力偏移不等于消除所有过拟合;同 step 数继续训会重复更多轮,收益可能缩小
首次修改前失控仍有 324 个 C1 标签实例,已有有依据的早期修改改善有限不会新增从 16K 思考失控状态切回行动的示范;C1 成员权重还会降低不把“第 6 步前修改”设成普适硬门;基座成功组首次修改中位数为 10 步
长截断复读、动作循环屏蔽了部分既有重复,保留中短思考没有直接治疗证据可减少旧冗余;无法凭 teacher-forced 样本教会学生在自身失控状态恢复静态无复读不保证自回归无复读;需将采样、续写机制作为独立对照因素
遇错不改变策略B 的 40 个教师内生恢复窗口,前缀/观察均保留局部有效可偏重断言反馈后的实现修正;实际恢复区域份额只略升覆盖窄,有窗口归因错误;不是当前学生失败前缀的新纠偏数据
反复验证、不自然结束904 个 A 最终报告仍被监督,C2 标签仍保留保留已有能力完整收尾知识不丢;简单并集不增加新的停止信号31 个被屏蔽报告没有自动补上正确替代;需证明最后修改后的验证及部署协议相容
错误定位、部分 F2P、P2P 回归936 个归档成功修复,691 个仓库家族保留基本修复知识广仓库覆盖有价值,但新的接口/跨文件能力覆盖没有增加测试充分性、错误补丁拒绝能力及长程复杂任务覆盖仍未验证
虚假完成、将失败归因环境C3 仅 13 个最终报告,不监督修复行动可能带来负迁移若无正确证据,可能强化“已实现 + 失败无关”的收尾话术不能把这种风险写成已发生的训练因果;应先逐条复核,而非直接放大 C3
工具错误与查询历史泛化96.1% 受监督调用为 bash,80.3% A 实例查询历史习惯大概率保留去重后仍会学习这些工具偏好;native edit 的独立样本很少bash 写入可以完全正确;应补足工具前置条件和恢复,不按工具名字惩罚

最合理的收益假设是“训练目标更均衡、少花预算重复已有内容”,而非“新合并数据已能修好三症候”。没有新训练和独立执行评测,不能预测会恢复到 20/50,也不能给出解决率增幅。

7. 建议:先修标签,再用一次受控训练判断

优先级最小有效动作完成证据
P0 · 数据身份恢复原始逐成员 split manifest;合并后保留 instance/family/pool 标签、原 hash、源消息位置。C3 独立登记。成员划分与原 train/dev 一致;所有同源视图同 split;发布新版本而不覆盖旧数据。
P0 · B/C3 语义逐条复核 40 个 B 的失败原因、恢复动作和前后执行条件;复核 13 个 C3 的“未完成”语义与失败归因。B 不能以改配置/缩小验证替代修复;预期失败的负向测试不作为未完成证据;去掉错配或重新分类。
P1 · 过程覆盖从训练分区收集当前学生真实失败状态上的恢复;补最后编辑后的有效验证与正确收尾。失败前缀真实、续写实际执行、独立验收;不以 benchmark 原题或近似答案制作纠偏。
P1 · 多样性在任务/行为层面采样,限制单一源轨迹曝光;保留容易任务与复杂任务,不机械只选短轨迹或前 6 步修改。同时报告唯一源任务、有效监督 token、恢复类型和长度分布;不能只报 JSONL 行数。

训练预算与对照必须一并定义

按原 train 合计投影,保留 C3 时 1,647 → 937 个视图,监督曝光 9,965,547 → 5,922,376,输入上下文约减少 39.7%。在每次累积 8 条的既有配置下,一遍数据约从 206 次更新变成 118 次。这不是训练墙钟耗时承诺,也不是相同优化预算。如果固定 206 steps,新数据会被重复约 1.75 遍,不能把结果仅解释为“去重更好”。

建议从同一官方 Qwen3.5-4B 初始化新的 LoRA,以相同 mask/框架、学习率调度和执行 dev 协议对照。先做原分布与去重分布的同曝光预算比较,再单独加入修正后的 B/C3 或新增恢复数据。不要同时改变数据、LoRA rank、采样温度和 harness。

对照变化回答的问题
D0原五池分布可比的原始数据目标
D1A/C 去重,B 保留,其他固定隐式多视图加权是否有害
D2D1 加 B/C3 语义修正标签/恢复窗口质量是否影响行为
D3D2 加真实学生状态恢复与收尾数据新状态覆盖是否带来额外泛化

D0–D3 是验证设计,不是已执行的实验。用独立家族执行 dev 选择 checkpoint,resolved 与回归题数为主;复读、首次有效修改、验证和停止作为解释指标。SWE50 保持冻结,不能回流训练,也不应被反复用于调数据和选 checkpoint。

8. 全量源实例明细

949 个源实例,一行一个;A 的数值使用合并后保留的 A mask,C3 使用其报告 mask。标签可重叠。筛选仅查看归档统计;“无解析 pass”“报告被屏蔽”不是自动失败判定。

9. 来源、口径与未覆盖事项

所有分析输入以路径和 SHA-256 绑定。五池源文件来自主 checkout 的冻结发布位置,用户指定的三轮 HTML 来自另一 Lody worktree;本报告写入当前 worktree。没有修改原数据,没有读取 hidden gold/test 内容,没有调用教师或占用 GPU 训练。

审计代码、统计定义与复现入口

代码:analysis/swe/audit_acb_quality.py。逐行校验既有 ids/mask 合同,以临时 SQLite 索引源实例与监督视图,解码 949 个唯一上下文;序列相同时才比较监督位置集合。原 samples 数据库以只读 URI 打开。输出是审计统计,不含新训练发布资格。

python -X utf8 analysis/swe/audit_acb_quality.py \
  --source-root E:/Deeplearning/local_train \
  --reference <用户指定的三轮评测 HTML> \
  --output <临时审计 JSON 路径>

长度分位数采用排序后 (n−1)×q 的线性插值。思考正文长度为 decode 后截取 <think> 正文再用同一 tokenizer 重分词,含空白占位符,不能与整个 assistant 回合长度混用。长复读静态检查为正文至少 3,000 字符且 zlib 压缩比 <0.1,不表示生成时 finish_reason=length。

查询历史按受监督 bash 命令匹配 git log/show/blame/rev-list/reflog;测试与潜在写入复用既有 segment_review 规则。多工具调用可能合并观察,heredoc 也可能被当作写入,所以自动 pass/修改顺序仅用于筛查。结构与监督集合的计数不依赖这些行为启发式。

mask spans 的末端为包含端点。B 区域曝光对同源的每个视图计算 mask 与 B mask 的交集,再累计;因此不会把 B 文件的单独份额误写成全部恢复监督份额。token 份额不是精确梯度归因。

阅读顺序建议:先看主要结论与合并口径,再看 B/C3 反例和曝光试算。此报告刻意保留“有价值的数据基础”与“尚未解决的模型行为”之间的证据边界。