delivery-handoff-2026-06-02.md
15.4 KB
本次交付包追加更新(2026-06-02 16:03 UTC)
交付结论
当前最新里程碑已经从“dual-axis 首轮可跑通”推进到 dual-axis 候选已收敛到 hum_focus:
- 远程基线当前为:
9c3f182(更新前) -
hum_focus当前优于hum_balanced与v6基线 - 因此下一轮应围绕
hum_focus做微调,而不是回退或盲搜
当前最新事实
dual-axis 对比结果
-
hum_focus:top1=0.7topk=0.85humming_like=0.5confused=0.25
-
hum_balanced:top1=0.65topk=0.95humming_like=0.25confused=0.25
当前判断
-
hum_focus是目前最值得继续迭代的 dual-axis 起点。 - 下一阶段建议是以
hum_focus为锚点做小步搜索,优先保住humming_like优势。
本次交付包追加更新(2026-06-02 16:11 UTC)
交付结论
最新的 hum_guard 复核结果已经确认:
- 它没有超过
hum_focus -
topk持平,但top1更低 - 所以下一轮仍应围绕
hum_focus微调
fresh evidence
num_queries=20top1=0.6topk=0.85humming_like top1=0.5confused top1=0.0
本次交付包追加更新(2026-06-02 16:12 UTC)
交付结论
当前已经完成“先交付、后续续跑”的冻结动作:
- 交接文档已补齐最新快照
- 新 session 可直接从这些文件继续
- 当前最重要的优化方向仍是
hum_focus
当前可直接继承的内容
- 训练数据规范
- pgvector 导出规范
- FMA / 开源数据接入说明
- SOTA 研究和切片策略说明
重启后建议顺序
- 读
docs/session-handoff.md - 读
docs/CHANGELOG.md - 继续做
hum_focus小步搜索 - 再做训练 / 评测 / 提交闭环
本次交付包追加更新(2026-06-02 15:56 UTC)
交付结论
当前最新里程碑已经从“dual-axis 参数化完成”推进到 dual-axis smoke 首次端到端评测完成:
- 远程基线当前为:
6279850(更新前) - 训练、建索引、评测全部跑通
- 但这组权重没有改善
humming_like,说明接下来要做更细粒度搜索
当前最新事实
dual-axis smoke 结果
- 观测时间:
2026-06-02 15:56:02 UTC - 结果文件:
/tmp/dualaxis_smoke/eval.json - 评测结果:
num_queries=20top1=0.5topk=0.9clean=0.875augmented=0.5humming_like=0.0confused=0.25
当前判断
- dual-axis 入口是可用的,但当前试验组合不是更优解。
- 下一阶段应进入更细粒度的权重搜索,而不是直接扩大规模。
本次交付包追加更新(2026-06-02 15:47 UTC)
交付结论
当前最新里程碑已经从“知道该做 dual-axis”推进到 dual-axis hard-case weighting 已在代码中参数化:
- 远程基线当前为:
7812b58(更新前) -
sample_type_weights与pair_type_weights已可配置 - 训练 dry-run 已通过
- 因此下一轮可直接做最小调参实验,而不是再先改代码结构
当前最新事实
代码实现位置
-
src/data/dataset.py:-
sample_type_weights控制 song-level 采样重复度 -
pair_type_weights控制 pair-levelhard_weight
-
-
train.py:从training配置透传 -
configs/default.yaml:提供默认 dual-axis 配置
fresh verification
-
python -m py_compile train.py src/data/dataset.py:通过 -
train.py --data data/synthetic_v2 --device cpu --epochs 1 --batch-size 4 --dry-run:通过 - 自定义权重实例化检查:
dataset_len=96sample_multiplicity_minmax=6/6hard_weight=[5.0, 1.0]
当前判断
- 现在已经具备一个最小、低风险、可反复实验的 dual-axis 入口。
- 下一阶段最值得做的是直接搜索
humming_like/confused的权重组合,而不是继续做只读分析。
本次交付包追加更新(2026-06-02 15:46 UTC)
交付结论
当前最新里程碑已经从“确定 v6/v5 谁更适合作为基线”推进到 解释清楚它们为什么会这样表现:
- 远程基线当前为:
93dfa15(更新前) -
v5的关键机制是type-aware hard-case weighting -
v6的关键机制是sample-level confused-priority weighting - 因此下一轮最合理的不是继续盲 sweep,而是做
humming_like与confused的双轴分治策略
当前最新事实
v5 / v6 差异来源
-
v5:- 历史记录位置:
docs/CHANGELOG.md:6805+ - 定义:
type-aware hard-case weighting - 结果:
humming_like top1=0.50,confused top1=0.00
- 历史记录位置:
-
v6:- 历史记录位置:
docs/CHANGELOG.md:2954+ - 定义:
sample-level confused-priority weighting - 结果:
humming_like top1=0.25,confused top1=0.25
- 历史记录位置:
- 汇总解释:
docs/sota-research-2026.md:113-114
当前判断
-
v5与v6的差异已经可解释,不再是黑箱经验差异。 - 下一阶段最值得做的是:
- 设计双轴 hard-case weighting;
- 让
humming_like与confused分开控制; - 再用现有双轨验证链回归测试。
本次交付包追加更新(2026-06-02 15:45 UTC)
交付结论
当前最新里程碑已经从“知道 hard-case 有缺口”推进到 知道哪套历史基线最值得作为下一轮优化起点:
- 远程基线当前为:
d4961b1(更新前) -
v6是当前总体最优基线:top1=0.65,topk=0.95 -
v5在humming_like上更强:top1=0.5 - 因此下一轮不该盲改,而应以
v6为主基线,对比吸收v5的 hard-case 优势
当前最新事实
hard-case baseline sweep
- 观测时间:
2026-06-02 15:45:18 UTC - 汇总:
/tmp/synth_v2_baseline_sweep/summary.json - 结果:
-
v3: overalltop1=0.6,topk=0.75;humming_like=0.0,confused=0.25 -
v4: overalltop1=0.4,topk=0.8;humming_like=0.0,confused=0.0 -
v5: overalltop1=0.6,topk=0.9;humming_like=0.5,confused=0.0 -
v6: overalltop1=0.65,topk=0.95;humming_like=0.25,confused=0.25
-
当前判断
-
v6适合作为下一轮总体优化主基线。 -
v5适合作为humming_like对照基线。 - 下一阶段最值得做的是:
- 审计
v5与v6的配置/数据/切片差异; - 把
v5的humming_like优势迁移到v6; - 再用真实路径 clean + synthetic hard-case 双轨复测。
- 审计
本次交付包追加更新(2026-06-02 15:43 UTC)
交付结论
当前最新里程碑已经从“real-path clean 闭环跑通”推进到 hard-case 短板已被明确量化:
- 远程基线当前为:
81704ac(更新前) - real-path FMA smoke 已证明
clean闭环可跑通 - synthetic hard-case smoke 已证明当前主要短板在
humming_like/confused的 top1 - 因此下一阶段不应重复 clean smoke,而应聚焦 hard-case 鲁棒性优化
当前最新事实
hard-case smoke 结果
- 观测时间:
2026-06-02 15:43:17 UTC - 组合:
data/synthetic_v2+data/models_v6/best_model.pt+data/index_v6/reference - 结果文件:
/tmp/synthetic_v2_eval_v6_top16.json - 评测结果:
num_queries=16top1=0.6875topk=1.0clean: n=7, top1=1.0, topk=1.0augmented: n=4, top1=0.75, topk=1.0humming_like: n=4, top1=0.25, topk=1.0confused: n=1, top1=0.0, topk=1.0
关键解释
- real-path FMA external smoke manifest 目前只有
cleanquery:- external test =
1613 clean - rerun overlap test =
35 clean
- external test =
- 当前仓库里能提供
humming_like/confused的现成评测集是data/synthetic_v2。
当前判断
- 真实路径闭环已经足够证明工程链可运行。
- 下一阶段的收益最高点已经收敛到:
-
humming_liketop1 提升; -
confusedtop1 提升; - 将 hard-case 生成/标注引入真实开放数据评测链。
-
本次交付包追加更新(2026-06-02 15:40 UTC)
交付结论
当前最新里程碑已经从“reference index 完成”推进到 fixed real-path 200-ref rerun 已拿到首份显式 evaluate 指标:
- 远程基线当前为:
9371e94(更新前) - real-path
200-refindex 已完整完成 - 显式
evaluate.pysmoke 已完成 - 当前首份结果:
top1=0.8571,topk=1.0,num_queries=35 - 因此主线已从“索引能否跑通”进入“评测质量与 hard case 扩展”阶段
当前最新事实
evaluate smoke 路径
- 观测时间:
2026-06-02 15:40:30 UTC - 结果文件:
/tmp/fma_realpath_small_rerun_eval/eval_top50.json - 评测结果:
split=testnum_queries=35top1=0.8571topk=1.0-
by_type.clean:n=35,top1=0.8571,topk=1.0
- query 数来源说明:
- 200-ref catalog 与现有 external smoke test overlap =
235items - 其中非
referencequery =35 - 所以
--max-queries 50实际只评到35条
- 200-ref catalog 与现有 external smoke test overlap =
当前判断
- 当前已经拥有一条完整可复用的真实路径 smoke 证据链:
chromaprint complete -> reference complete -> evaluate complete - 下一阶段更值得做的是:
- 扩大评测 query 数与 reference 规模;
- 引入
confused/humming_like/ hard negative 评测。
本次交付包追加更新(2026-06-02 15:35 UTC)
交付结论
当前最新里程碑已经从“进入 reference 阶段”推进到 fixed real-path 200-ref rerun 已完整产出最终 embedding/reference index:
- 远程基线当前为:
41c4d7c(更新前) - chromaprint 已完整完成:
200/200 - reference 已完整完成:
200/200 - 最终产物
reference_embs.npy/reference_ids.npy已落盘 - 因此主问题已从“能否穿过建索引核心阶段”转向“后续 evaluate / identify 链如何衔接验证”
当前最新事实
fixed real-path rerun 路径
- 观测时间:
2026-06-02 15:35:19 UTC - 输出目录:
/tmp/fma_realpath_small_rerun_index2 -
chromaprint_progress.json:status=completerefs_done=200 / 200hashes=57577postings=187446skipped_refs=0
-
reference_progress.json:status=completerefs_done=200 / 200windows_done=2068elapsed_sec=410.046embedding_shape=[2068, 192]skipped_refs=0
- 当前已出现最终产物:
reference_embs.npyreference_ids.npy
当前判断
- 这条 fixed rerun 已经给出强证据:
flush=True与坏音频 skip tolerance 修复后,真实路径样本可以完整跑完两段核心建索引流程。 - 下一阶段应集中验证:
- 是否自动衔接到 evaluate / identify;
- 若没有,补一轮显式 evaluate smoke。
本次交付包追加更新(2026-06-02 15:29 UTC)
交付结论
当前最新里程碑不是新的失败,而是 fixed real-path 200-ref rerun 已明确跨入 reference/embedding 阶段:
- 远程基线当前为:
707449b - chromaprint 已完整完成:
200/200 - reference 阶段已写出首个 checkpoint:
25/200 - 已出现
reference_progress.json与 partial numpy 产物 - 因此下一 session 不应再把这条 rerun 当作“停在 chromaprint 无下游文件”的旧状态
当前最新事实
fixed real-path rerun 路径
- 前台 session:
19709 - 观测时间:
2026-06-02 15:29:17 UTC - 输出目录:
/tmp/fma_realpath_small_rerun_index2 -
chromaprint_progress.json:status=completerefs_done=200 / 200hashes=57577postings=187446skipped_refs=0
-
reference_progress.json:status=buildingrefs_done=25 / 200windows_done=256elapsed_sec=52.567eta_sec=367.967skipped_refs=0
- 当前已出现:
reference_embs.partial.npyreference_ids.partial.npy
当前判断
-
flush=True与坏音频 skip tolerance 修复之后,真实路径 rerun 已穿过chromaprint -> reference阶段边界。 - 当前最高优先级不再是重复证明 chromaprint 完成,而是继续盯 reference 阶段是否:
- 完整落盘
reference_embs.npy/reference_ids.npy;或 - 暴露新的明确 traceback / failure evidence。
- 完整落盘
建议的新 session 接管顺序
- 先看 ./session-handoff.md 顶部新快照
- 读取前台
session 19709最新输出 - 检查
/tmp/fma_realpath_small_rerun_index2/是否已从 partial 转为 final 产物
Delivery Handoff / 2026-06-02
本次交付包(2026-06-02 15:09 UTC)
交付结论
这次新增的关键交付,不再是单纯的进度观察,而是一个新的异常状态检查点:
- 远程基线已推进到:
cdf33bb - observable chromaprint smoke 与 legacy 全量 FMA
build-index进程都已退出 - 但两者都没有进入
reference_*/evaluate.py - 因此下一 session 的首要任务,已从“盯进度”切换为“排查
build-index异常退出”
当前最新事实
observable 路径
- 原进程:
PID=431703 - 最后观测时间:
2026-06-02 15:09:19 UTC - 当前
ps -p 431703:无存活进程 - 当前目录仅有:
chromaprint.pklchromaprint_progress.json
- 最后 progress 状态:
status=buildingrefs_done=4420 / 8000elapsed_sec=3964.861hashes=357373postings=3774363
- 当前仍未出现:
reference_progress.jsonreference_embs.partial.npyreference_ids.partial.npyreference_embs.npyreference_ids.npyevaluate.py
legacy 全量 FMA 路径
- 原进程:
PID=424691 - 当前
ps -p 424691:无存活进程 - 当前目录仍只有:
/tmp/fma_real_smoke_stopcheck/fma_index_smoke
- 仍未看到 index artifact 或
evaluate.py
当前判断
- 这不再是“CPU-only 长时间构建但仍在推进”的状态。
- 现在更像是:
build-index在 chromaprint 阶段中途退出,但没有留下显式下游产物。
已完成的低风险修复
- 已把
run_demo.py、chromaprint_matcher.py、ecapa_embedder.py的关键日志改为flush=True。 - 极小样本
/tmp/chroma_repro_tiny12已验证:失败时日志与 traceback 可实时落盘,不再保持0 bytes。 - 这意味着下一 session 继续排查时,日志可作为一手证据,而不是黑箱。
已完成的坏音频容错修复
- 已为 chromaprint/reference 两个建索引阶段增加单文件容错:坏 MP3 / 缺失音频会被记录并跳过。
- 最小复现
/tmp/chroma_skip_repro已验证:RC=0-
skip decode failure日志可见 -
reference_embs.npy/reference_ids.npy成功产出 - progress 中记录
skipped_refs=1
- 这说明:单个坏 MP3 不再拖垮整轮
build-index。
新 session 接管顺序
- 先看 ./session-handoff.md
- 再看 ./changelist-2026-06-02.md
- 然后优先做 3 件事:
- 复盘
run_demo.py build-index的退出路径与异常处理 - 检查是否存在未捕获 OOM / shell termination / silent failure
- 在更小样本上复现“chromaprint 中途退出但无后续文件”的行为
- 复盘
当前卡点
- 关键进程已经退出,但没有明确 traceback 留存。
- observable 与 legacy 两条路径都停在“没有
reference_*/ 没有evaluate.py”的中间态。 - 工作树仍有大量数据噪音,提交时必须只显式暂存文档/代码文件。
本次交付包含的关键文档
本次明确不提交
acr-engine/data/raw/*acr-engine/data/external_smoke/*/tmp/*- checkpoint / index artifacts
__pycache__