22 Apr, 2026

1 commit

  • - 把 batch timeout 改成“可无限长跑”:
      - [tune_fusion.py](/data/saas-search/scripts/evaluation/tune_fusion.py:400)
      - 现在 `--batch-eval-timeout-sec <= 0` 时,不再给 `subprocess.run` 设置 Python 层超时
    - 新增 resilient wrapper,负责自动续跑:
      - [run_coarse_fusion_tuning_resilient.sh](/data/saas-search/scripts/evaluation/run_coarse_fusion_tuning_resilient.sh)
      - 逻辑是:检查 `trials.jsonl` 里已完成的 live eval 数量,没到 `max_evals` 就继续 `resume-run`
      - 即使异常退出,也会 sleep 后自动从已有 `run_dir` 继续
    - 启动/续跑脚本都切到 resilient 模式:
      - [start_coarse_fusion_tuning_long.sh](/data/saas-search/scripts/evaluation/start_coarse_fusion_tuning_long.sh)
      - [resume_coarse_fusion_tuning_long.sh](/data/saas-search/scripts/evaluation/resume_coarse_fusion_tuning_long.sh)
    
    **当前任务**
    - `run_name`: `coarse_fusion_clothing_top771_resilient_20260422T091650Z`
    - `run_dir`: [coarse_fusion_clothing_top771_resilient_20260422T091650Z](/data/saas-search/artifacts/search_evaluation/tuning_runs/coarse_fusion_clothing_top771_resilient_20260422T091650Z)
    - `launch log`: [coarse_fusion_clothing_top771_resilient_20260422T091650Z.log](/data/saas-search/artifacts/search_evaluation/tuning_launches/coarse_fusion_clothing_top771_resilient_20260422T091650Z.log)
    
    **已确认**
    - wrapper 已启动并进入 `attempt=1`
    - 真正传入的是 `--batch-eval-timeout-sec 0`
    - `tune_fusion.py` 正在运行
    - `build_annotation_set.py batch` 已经在运行
    - `eval.log` 已经打出这轮的前几条 query 评测进度,说明不是空转
    
    **监控方式**
    - `tail -f artifacts/search_evaluation/tuning_launches/coarse_fusion_clothing_top771_resilient_20260422T091650Z.log`
    - `tail -f logs/eval.log`
    - `tail -f artifacts/search_evaluation/tuning_runs/coarse_fusion_clothing_top771_resilient_20260422T091650Z/trials.jsonl`
    - `cat artifacts/search_evaluation/tuning_runs/coarse_fusion_clothing_top771_resilient_20260422T091650Z/leaderboard.csv`
    
    **这次和上次的关键区别**
    - 上次是“单轮 batch 被 Python 超时截断”
    - 这次是“单轮不设 Python 超时 + 外层 wrapper 自动续跑”
    - 所以长时间运行、中途中断、再恢复,都会沿着同一个 `run_dir` 往下推进
    tangwang
     

17 Apr, 2026

1 commit

  • 【方案落地】
    - 配置层:在 config/config.yaml 中注册 core_queries(原53条)和 clothing_top771(771条)
      核心改动:config/schema.py (line 410) 增加 EvaluationDataset 模型;
                config/loader.py (line 304) 提供 get_dataset/list_datasets,兼容旧配置;
                新增 scripts/evaluation/eval_framework/datasets.py 作为 dataset registry 辅助模块
    - 存储与框架:所有 artifact 按 dataset_id 隔离,标注缓存跨数据集共享
      核心改动:store.py (line 1) 增加 dataset_id 字段到 build_runs/batch_runs;
                framework.py (line 1) build/batch_evaluate 接受 dataset_id 并固化 snapshot
    - CLI 与调参:所有子命令增加 --dataset-id 参数
      核心改动:cli.py (line 1)、tune_fusion.py (line 1) 及启动脚本
    - Web 与前端:支持动态切换评估集,History 按 dataset 过滤
      核心改动:web_app.py (line 1) 新增 /api/datasets,/api/history 支持 dataset_id;
                static/index.html 和 eval_web.js (line 1) 增加下拉选择器
    
    【验证与测试】
    - 新增 tests/test_search_evaluation_datasets.py,pytest 通过 2 passed
    - 编译检查通过(pyflakes/mypy 核心模块)
    - eval-web 已按新模型重启并通过健康检查(后续因资源占用不稳定,不影响标注)
    
    【LLM 标注运行状态】
    - 目标 dataset:clothing_top771(771条query)
    - 手动拉起 reranker(因 search.rerank.enabled=false),确认 /health 正常
    - 执行 rebuild --dataset-id clothing_top771,当前已进入第1个 query "白色oversized T-shirt" 的批量标注阶段(llm_batch=24/40)
    - 日志:logs/eval.log(主进度),logs/verbose/eval_verbose.log(详细 LLM I/O)
    tangwang
     

16 Apr, 2026

1 commit