changelist-2026-06-02.md
13 KB
Changelist / 2026-06-02
本次补充交付(2026-06-02 16:12 UTC)
目标
把当前工作切换成“可交接、可暂停、可恢复”的状态。
本次纳入交付的内容
| 类别 | 内容 |
|---|---|
| 状态 | 当前 dual-axis 仍以 hum_focus 为最佳候选 |
| 文档 |
CHANGELOG、session-handoff、delivery-handoff 已补齐最新快照 |
| 约束 | 继续保留相对路径文档跳转,不碰大数据与训练产物 |
| 续跑 | 新 session 可直接从 handoff 接上继续做训练/评测/优化 |
这次交付的意义
- 先把当前成果冻结,避免上下文丢失。
- 给新 session 留一个最短恢复路径。
- 后续可以无缝继续补数据集、改切片、提准确率。
本次补充交付(2026-06-02 15:09 UTC)
目标
把当前状态从“仍在稳定推进”升级为“已确认异常退出、需要排查”的交接包。
本次纳入交付的内容
| 类别 | 内容 |
|---|---|
| 证据 |
PID=431703 与 PID=424691 均已退出 |
| 状态 | observable 目录仍停在 chromaprint_progress.json + chromaprint.pkl
|
| 风险 | 没有 reference_*,没有 evaluate.py,没有明确 traceback |
| 文档 |
CHANGELOG、changelist、delivery handoff、session handoff、AGENT memory
|
文件级变更
| 文件 | 说明 |
|---|---|
| ./CHANGELOG.md | 补记 build-index 异常退出 checkpoint |
| ./delivery-handoff-2026-06-02.md | 顶部改写为异常排查接管包 |
| ./session-handoff.md | 顶部快照切到“进程已退出、无下游产物” |
| ../AGENT.md | 更新长期记忆,避免新 session 误判为仍在运行 |
当前最重要的 fresh evidence
- 观测时间:
2026-06-02 15:09:19 UTC -
ps -p 431703:无存活进程 -
ps -p 424691:无存活进程 -
pgrep -af 'run_demo.py build-index|evaluate.py ...':未发现接续进程 - observable 目录仅有:
chromaprint.pklchromaprint_progress.json
- 末次 progress:
status=buildingrefs_done=4420/8000
- 未出现:
reference_*evaluate.py
重要决策
- 当前已不应继续把它描述成“仅仅线性慢”。
- 下一轮工作应转向 build-index 异常退出排查。
- 新提交已经有意义,因为状态从“运行中”变成了“已退出且无下游产物”。
本次追加交付(2026-06-02 15:18 UTC)
新增代码修复
| 文件 | 变更 |
|---|---|
| ../acr-engine/run_demo.py |
build-index / demo 关键日志统一 flush=True
|
| ../acr-engine/src/engines/chromaprint_matcher.py | chromaprint 阶段 progress 日志 flush=True
|
| ../acr-engine/src/engines/ecapa_embedder.py | embedding/reference 阶段关键日志 flush=True
|
新增验证证据
- 极小样本复现:
/tmp/chroma_repro_tiny12 - 结果:
RC=1 - 现在日志已实时落盘,不再是
0 bytes:[build-index] starting chromaprint index ...[build-reference-index] start: refs=12 ...ValueError: No reference embeddings were produced ...
结论
- 当前已修复“失败时日志完全不可见”的可观测性问题。
- 下一轮 root cause 排查可以直接依赖实时日志,而不再需要盲等。
本次追加交付(2026-06-02 15:22 UTC)
新增代码修复
| 文件 | 变更 |
|---|---|
| ../acr-engine/src/engines/chromaprint_matcher.py | 坏音频/缺失音频跳过;progress 增加 skipped_refs
|
| ../acr-engine/src/engines/ecapa_embedder.py | 坏音频/缺失音频跳过;progress 增加 skipped_refs
|
新增验证证据
- 最小容错复现:
/tmp/chroma_skip_repro - 输入:
1 good mp3 + 1 bad mp3 - 结果:
RC=0 - 验证点:
- 日志可见
skip decode failure -
chromaprint_progress.json为status=complete -
reference_progress.json为status=complete - 两个 progress 文件都记录
skipped_refs=1 - 最终成功产出
reference_embs.npy/reference_ids.npy
- 日志可见
结论
- 当前已验证:单个坏 MP3 不再拖垮整轮
build-index。 - 下一轮应回到真实路径复现,确认主问题是否就是由坏 MP3 触发。
本次追加交付(2026-06-02 15:29 UTC)
新增运行证据
| 类别 | 内容 |
|---|---|
| rerun | fixed real-path 200-ref rerun 仍在前台运行:session 19709
|
| chromaprint |
200/200 完成,skipped_refs=0
|
| reference | 已进入 embedding/reference 阶段,并完成 25/200 checkpoint |
| 产物 | 已落盘 reference_progress.json、reference_embs.partial.npy、reference_ids.partial.npy
|
当前最重要的 fresh evidence
- 观测时间:
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=256skipped_refs=0
- 已出现:
reference_embs.partial.npyreference_ids.partial.npy
结论
- 这次 fixed rerun 已经证明:修复后的真实路径样本不再卡死在 chromaprint 阶段。
- 当前最有价值的下一步,变为继续盯
reference_*完成或捕获新的明确失败证据。
本次追加交付(2026-06-02 15:35 UTC)
新增运行证据
| 类别 | 内容 |
|---|---|
| chromaprint |
200/200 完成,skipped_refs=0
|
| reference |
200/200 完成,windows_done=2068
|
| 产物 |
reference_embs.npy、reference_ids.npy 已完整落盘 |
| shape | embedding_shape=[2068, 192] |
当前最重要的 fresh evidence
- 观测时间:
2026-06-02 15:35:19 UTC - 输出目录:
/tmp/fma_realpath_small_rerun_index2 -
reference_progress.json:status=completerefs_done=200/200windows_done=2068embedding_shape=[2068, 192]skipped_refs=0
- 最终产物:
-
reference_embs.npy(1588352 bytes) -
reference_ids.npy(74576 bytes)
-
- stdout 明确出现:
Built reference index: 2068 windows, embeddings shape (2068, 192)[done] embedding index built: 2068 refs
结论
- 当前已确认:修复后的真实路径 rerun 不仅能进入 reference 阶段,而且能完整产出最终 embedding index。
- 下一轮最高价值工作应切到:评测链是否自动衔接,以及必要时补显式 evaluate smoke。
本次追加交付(2026-06-02 15:40 UTC)
新增运行证据
| 类别 | 内容 |
|---|---|
| evaluate | 显式 evaluate.py smoke 已完成 |
| query 规模 |
num_queries=35(overlap 中全部非 reference query) |
| 指标 |
top1=0.8571, topk=1.0
|
| by_type | clean: n=35, top1=0.8571, topk=1.0 |
当前最重要的 fresh evidence
- 观测时间:
2026-06-02 15:40:30 UTC - 结果文件:
/tmp/fma_realpath_small_rerun_eval/eval_top50.json - 评测结果:
split=testnum_queries=35top1=0.8571topk=1.0
- query 数说明:
- overlap test items =
235 - 非
referencequery =35 - 所以
--max-queries 50实际评到35条
- overlap test items =
结论
- 当前已不只是建索引成功,而是已经拿到首份真实路径
build-index -> evaluate闭环证据。 - 下一轮应把重点切到:更大评测规模与 hard case / confusion 评测。
本次追加交付(2026-06-02 15:43 UTC)
新增运行证据
| 类别 | 内容 |
|---|---|
| hard-case smoke |
synthetic_v2 + models_v6 + index_v6 显式评测完成 |
| 总体 |
num_queries=16, top1=0.6875, topk=1.0
|
| hard case |
humming_like top1=0.25, confused top1=0.0
|
| 结论 | 当前短板已明确落在 hard-case top1,而不是 clean/topk |
当前最重要的 fresh evidence
- 观测时间:
2026-06-02 15:43:17 UTC - 结果文件:
/tmp/synthetic_v2_eval_v6_top16.json - 评测结果:
top1=0.6875topk=1.0humming_like: n=4, top1=0.25, topk=1.0confused: n=1, top1=0.0, topk=1.0
- manifest 审计结果:
- real-path FMA external smoke 只有
cleanquery - synthetic_v2 才包含
augmented/humming_like/confused
- real-path FMA external smoke 只有
结论
- 当前已经不仅知道“系统能跑通”,还知道“最该优化哪里”:hard-case 的 top1。
- 下一轮更有价值的是围绕
humming_like/confused做输入层、切片、混淆增强与 hard negative 优化。
本次追加交付(2026-06-02 15:45 UTC)
新增运行证据
| 类别 | 内容 |
|---|---|
| baseline sweep |
v3~v6 已完成统一 hard-case sweep |
| 总体最佳 |
v6: top1=0.65, topk=0.95
|
| humming_like 最佳 |
v5: top1=0.5
|
| confused 最佳 |
v3 / v6: top1=0.25
|
当前最重要的 fresh evidence
- 观测时间:
2026-06-02 15:45:18 UTC - 汇总文件:
/tmp/synth_v2_baseline_sweep/summary.json - 统一评测集:
data/synthetic_v2 - 结果摘录:
-
v3: overall0.6/0.75, hard-casehum=0.0,conf=0.25 -
v4: overall0.4/0.8, hard-casehum=0.0,conf=0.0 -
v5: overall0.6/0.9, hard-casehum=0.5,conf=0.0 -
v6: overall0.65/0.95, hard-casehum=0.25,conf=0.25
-
结论
- 当前最合理的下一轮实验基线是
v6,因为总体最稳。 - 但
v5在humming_like上明显更强,值得做 targeted diff / 吸收。
本次追加交付(2026-06-02 15:46 UTC)
新增差异审计证据
| 类别 | 内容 |
|---|---|
| v5 来源 | type-aware hard-case weighting |
| v6 来源 | sample-level confused-priority weighting |
| 解释 |
v5 更利于 humming_like,v6 更利于 confused
|
| 决策 | 下一轮应做双轴 hard-case weighting / 分治,而不是单轴加权 |
当前最重要的 fresh evidence
-
docs/CHANGELOG.md:2954+:v6= sample-level confused-priority weighting -
docs/CHANGELOG.md:6805+:v5= type-aware hard-case weighting -
docs/sota-research-2026.md:113-114:-
v5:overall=0.60,humming_like=0.50,confused=0.00 -
v6:overall=0.65,humming_like=0.25,confused=0.25
-
结论
- 现在已经不仅知道
v5/v6哪个更强,还知道“为什么”。 - 下一轮应把
humming_like与confused分开建模或分开加权。
本次追加交付(2026-06-02 15:47 UTC)
新增代码能力
| 文件 | 变更 |
|---|---|
| ../acr-engine/src/data/dataset.py | hard-case 采样权重与 pair 权重改为配置驱动 |
| ../acr-engine/train.py | 训练链路透传 dual-axis 权重配置 |
| ../acr-engine/configs/default.yaml | 增加 sample_type_weights / pair_type_weights 默认配置 |
当前最重要的 fresh evidence
-
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=96unique_songs=16sample_multiplicity_minmax=6/6hard_weight=[5.0, 1.0]
结论
- dual-axis hard-case weighting 已从“设计建议”升级为“代码中可直接调参实验”的状态。
- 下一轮可直接围绕
sample_type_weights与pair_type_weights做最小实验。
本次追加交付(2026-06-02 15:56 UTC)
新增运行证据
| 类别 | 内容 |
|---|---|
| dual-axis smoke |
train -> build-index -> evaluate 完整跑通 |
| 训练输出 | /tmp/dualaxis_smoke/models/best_model.pt |
| 索引输出 | /tmp/dualaxis_smoke/index/ |
| 评测输出 | /tmp/dualaxis_smoke/eval.json |
| 结果 |
top1=0.5, topk=0.9
|
| hard-case |
humming_like=0.0, confused=0.25
|
当前最重要的 fresh evidence
num_queries=20clean: n=8, top1=0.875, topk=1.0augmented: n=4, top1=0.5, topk=0.75humming_like: n=4, top1=0.0, topk=0.75confused: n=4, top1=0.25, topk=1.0
结论
- 目前这组 dual-axis 配置证明了“可配置实验链路”是通的。
- 但它没有带来
humming_like改善,说明后续搜索需要更细:该拆分sample_type_weights与pair_type_weights的取值粒度。
本次追加交付(2026-06-02 16:03 UTC)
新增运行证据
| 候选 | top1 | topk | humming_like top1 | confused top1 | 结论 |
|---|---|---|---|---|---|
| hum_focus | 0.7 | 0.85 | 0.5 | 0.25 | 当前最优 |
| hum_balanced | 0.65 | 0.95 | 0.25 | 0.25 | 只回到 v6 水平 |
当前最重要的 fresh evidence
- 观测时间:
2026-06-02 16:03:13 UTC -
hum_focus结果文件:/tmp/dualaxis_sweep/hum_focus/eval.json -
hum_balanced结果文件:/tmp/dualaxis_sweep/hum_balanced/eval.json - 对比结论:
hum_focus在humming_like上优于hum_balanced,且总体更优。
结论
- 当前 dual-axis 线的最佳候选已收敛为
hum_focus。 - 下一轮应围绕
hum_focus做微调搜索,而不是回退到v6或扩大盲搜范围。