mcpField
T
tao-run-automl-deft-pipeline

tao-run-automl-deft-pipeline

github.com/promptingcompany数据与数据库039 次安装17 周前更新
代码仓库

关于 tao-run-automl-deft-pipeline

该工作流 Skill 串联 AutoML 超参数搜索与 DEFT 数据改进循环:先在原始数据上调参,再运行 DEFT,最后在增强数据上再次调参。它负责规格与检查点交接,并通过单一预检门槛协调三个阶段。

主要功能

  1. 01串联两轮 AutoML 与 DEFT
  2. 02传递调参规格和检查点
  3. 03DEFT 基线复用前阶段检查点
  4. 04增强数据阶段使用检查点热启动
  5. 05统一三阶段预检与成本说明

适用场景

  1. 01在 AOI ChangeNet 流程中组合调参与数据改进
  2. 02将 AutoML 结果交接给 DEFT 循环
  3. 03在增强数据集上微调并比较模型

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/promptingcompany/nv-skills --skill tao-run-automl-deft-pipeline

安装后在 Claude Code 中输入/tao-run-automl-deft-pipeline确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

BENCHMARK.md
skill-card.md
skill.oms.sig
evals/
evals.json
references/
handoff.md
pitfalls.md
preflight.md
quick-start.md

详细介绍

AutoML + DEFT 流水线

一种工作流桥接技能,通过委派给两个现有技能,依次运行 三个阶段——使用 tao-run-automl 进行 HPO,并使用 DEFT 应用技能(AOI 默认使用 tao-run-deft-aoi;非 AOI 场景使用其他 skills/applications/deft-* 技能)执行迭代式数据改进循环。

此技能不会重新实现 AutoML 或 DEFT。它只负责衔接工作:HPO 规格输入、AutoML 与 DEFT 之间的规格交接,以及在 DEFT 完成后,使用增强数据集重新运行 AutoML。

适用场景

  • 用户要求“运行 AOI 工作流”或“改进我的 AOI ChangeNet 模型”——默认使用此技能,而不是直接使用 tao-run-deft-aoi。单独的 DEFT 循环是此流水线的内部阶段。
  • 用户希望在同一模型/数据集上串联 AutoML 和 DEFT
  • 用户提到“在两端都运行 AutoML”、“先调优 HP,再运行 DEFT”、“热启动 DEFT”、“在 DEFT 前后运行 AutoML”
  • 用户已有经过 AutoML 调优的规格,并询问如何将其输入 DEFT

不适用场景

  • 用户明确只要求 DEFT 循环(“只运行 DEFT 循环”、“跳过 AutoML”)→ 直接使用 tao-run-deft-aoi
  • 用户只需要 AutoML,不需要后续 DEFT → 直接使用 tao-run-automl
  • 用户正在进行零样本评估、RAG 或非训练工作流

心智模型

Phase 1 (AutoML baseline)        Phase 2 (DEFT loop, plain train)        Phase 3 (AutoML refinement)
─────────────────────────        ────────────────────────────────        ───────────────────────────
specs/baseline_spec.yaml         (Phase 1 winner pre-seeds baseline      ${RESULTS_DIR}/iter${N}/dataset/
train/base/training_set.csv       — DEFT skips its baseline train)       train_combined_iter${N}.csv
        │                                       │                                       │
        ▼                                       ▼                                       ▼
[ AutoML HPO sweep ]               [ DEFT: baseline-inference → RCA       [ AutoML HPO sweep ]
   N recommendations                 → iter 1..N (plain retrain) ]        re-tunes HPs against the
   pick best by val_loss / FAR      RCA / route / SDG / mining             DEFT-augmented dataset
        │                                       │                                       │
        ▼                                       ▼                                       ▼
best HPs spec + ckpt ─────►      DEFT-augmented CSV ───────────►        final best checkpoint
                                 + iter winner checkpoint               (the deliverable; no
                                 (Phase 3 warm-starts from it)           further retrain)

交接内容如下:

  • 阶段 1 → 阶段 2:一个规格文件和获胜检查点。在 DEFT 的基线步骤中用相同 HP 重新训练会浪费算力,因此桥接流程会将阶段 1 的获胜 HP 深度合并到 baseline_spec.yaml,把获胜检查点复制到 ${RESULTS_DIR}/baseline/train/ 下并使用 DEFT 预期的文件名,同时预先填充 deft_state.json + loop_log.jsonl,使 DEFT 从基线推理 → 评估 → RCA → 第 1 次迭代处恢复。DEFT 本身仍保持普通训练(保留 automl_policy: off)。详见 references/handoff.md 中逐字列出的 4 步流程。
  • 阶段 2 → 阶段 3:一个训练 CSV和迭代获胜者的检查点。CSV(train_combined_iter${N_final}.csv)是 AutoML 的训练数据;检查点(deft_state.json 中的 iterations.<best>.best_ckpt_path)会配置到每个 rec 的 train.pretrained_model_path,使阶段 3 从阶段 2 的获胜模型继续微调,而不是从头开始。没有这项热启动,阶段 3 通常会比迭代获胜模型表现更差。阶段 3 的获胜检查点就是交付物——阶段 3 后无需单独重新训练。详见 references/handoff.md。

为什么是三个阶段,而不是两个

  • 仅运行阶段 1可在原始训练数据分布上找到合适的 HP,但模型仍存在 DEFT 专门用于弥补的分布差异。
  • 仅运行阶段 2(只运行 DEFT)可以弥补这些差异,但使用的是 specs/baseline_spec.yaml 中手动编写的 HP——通常并非最优。
  • 仅运行阶段 3会针对增强数据集运行 AutoML,但没有经过调优的基线,DEFT 循环的迭代成本会更高(收敛更慢,需要更多迭代才能达到 KPI)。

运行全部三个阶段:AutoML 先在原始数据上以较低成本调优一次,DEFT 使用合理的 HP 执行繁重的数据处理工作,最后 AutoML 再针对如今更丰富的数据集进行调优。对于最终部署的 FAR/召回率而言,阶段 3 是三者中最重要的。

前期成本

此流水线按顺序执行。总耗时 ≈ 阶段 1(N_automl × 单个 rec 的训练时间)+ 阶段 2(M 次迭代 × 单次迭代成本)+ 阶段 3(N_automl × 单个 rec 的训练时间)。

请注意,阶段 2 没有单独的基线训练——阶段 1 的获胜检查点会作为 DEFT 的基线复用,因此基线成本已计入阶段 1 的 N_automl 次训练中,无需额外重新训练。启动前请向用户说明这一点。通常阶段 2 的迭代仍是主要成本(每次迭代都包含 SDG + 重新训练),但在单 GPU 设备上,阶段 1 和阶段 3 各自仍需数小时。若用户的环境中有单个作业的耗时估算,请使用该估算,而不是猜测分钟数。各阶段的成本明细见 references/pitfalls.md。


整合式预检——一道关卡,涵盖全部三个阶段

整个流水线只有一道用户关卡。 在执行任何有副作用的操作(docker pull、docker login、委托给下游技能的任何作业启动调用、${RESULTS_DIR}/ 下的文件变更)之前,Agent 必须生成一份整合式预检摘要,涵盖所有下游技能的预检。用户批准后,运行将自主完成全部三个阶段——不再进行任何交互式暂停。

用户明确表示不希望在阶段之间收到确认请求。DEFT 循环自身的内联 ## Pre-Flight Summary 关卡将变为不提问的展示步骤(所有值均预先提供);tao-run-automl 在阶段 1 和阶段 3 中共用的启动预检也同样如此。

打印关卡前,Agent 必须完整阅读每个下游预检部分,并运行其中规定的所有只读检查,在摘要中呈现每项检查的结果。必须执行 DEFT 技能 ## Pre-Flight 中的每一步——如果跳过任何一步,整合式关卡即无效,流水线不得继续。摘要必须按以下顺序包含:(1)工作区/主机/平台/网络,(2)凭据 SET/UNSET 状态,(3)已解析的容器镜像 URI 及 PRESENT/MISSING 状态,(4)含数据泄漏检查的数据集表格,(5)阶段 1 配置,(6)阶段 2 配置(含预先植入的基线来源),(7)阶段 3 配置,(8)计算资源估算,(9)确认语句。通过关卡后,将收集到的所有值传递给每个下游技能,使其无需再询问。关卡后唯一允许的暂停是运行中触发的安全硬停止关卡(例如 DEFT 的 KPI 回归关卡);请在摘要中指出这些关卡。

完整构建流程、摘要各部分的确切必备内容(包括 GPU 内存经验法则、DEFT 循环默认值和原文照录的必需输入)、下游关卡抑制输入,以及旧版技能库将自身 STOP 关卡写死时的回退方案,请参阅 references/preflight.md。


阶段 1 — AutoML 基线

使用以下参数调用 tao-skill-bank:tao-run-automl:

输入AOI 默认值备注
network_archvisual-changenet与 DEFT 循环预期使用的模型相同
train_dataset_uri<workspace>/train/base/training_set.csv与 DEFT 将开始使用的训练集相同
eval_dataset_uri<workspace>/train/base/validation_set.csv留出集——不得使用 KPI 测试集(<workspace>/kpi/testing_set.csv),因为该测试集保留用于 DEFT 的最终报告
metricFAR @ 100% recall(首选)或 val_loss请参阅 references/pitfalls.md——ChangeNet AOI 类别不平衡,仅使用 val_loss 可能导致模式坍塌
algorithmbayesian如果计算资源紧张,可用 LLM-brain 或 autoresearch
automl_max_recommendationsAOI 用 5–10推荐次数越多,HP 越好,但计算资源消耗也线性增加
spec_overrides固定 epochs/batch_size;仅搜索与优化器相关的 HP否则 AutoML 可能转向长时间训练方案,超出阶段 2 的预算

搜索结束后,AutoML 的 result["best"]["specs"] 即为获胜的超参数字典。

移交至阶段 2

阶段 1 移交两项产物:获胜的spec 和获胜的checkpoint。无需在 DEFT 的基线步骤中重新训练相同的 HP,而是使用阶段 1 的输出预先植入 DEFT 的基线状态,使 DEFT 从基线推理 → 评估 → RCA → 第 1 次迭代开始。四个步骤——写入合并后的 baseline_spec_automl.yaml、将获胜的 checkpoint 复制到 ${RESULTS_DIR}/baseline/train/、初始化 deft_state.json,使 iterations.baseline.stage_completed == "train"(并追加对应的 loop_log.jsonl 条目),然后调用 DEFT——已在 references/handoff.md 中逐字给出,并附有确切代码。循环中的 automl_policy: off 保持不变。

交接前的质量检查

针对留出集快速评估表现最佳的检查点:统计各类别的预测数量(如果模型退化为只预测一个类别,则改为评估表现第 2 或第 3 的检查点),并与零样本 ChangeNet 基线进行比较(如果 AutoML 的表现不如零样本,则明确指出并暂停)。请参阅 references/handoff.md。


第 2 阶段 — DEFT 循环(常规训练,使用第 1 阶段的预置基线)

调用 tao-skill-bank:tao-run-deft-aoi(阅读其 SKILL.md 了解完整接口)。对于非 AOI 应用,请调用对应的 DEFT 技能;交接结构相同。

跳过 DEFT 循环中的基线训练子步骤。 第 1 阶段已生成一个使用表现最佳的 HP 训练的检查点,并且第 1 阶段的交接(见上文)已预先填充 ${RESULTS_DIR}/baseline/train/ 和 ${RESULTS_DIR}/deft_state.json,因此 DEFT 会从基线推理 → 评估 → RCA → 第 1 次迭代继续运行。DEFT 循环的其余部分保持不变。不得修改其 automl_policy: off 不变量。

DEFT 循环负责:

  • 显示预检摘要 — 这不是新的用户确认关卡。上文的整合预检是唯一确认关卡;DEFT 摘要仍会作为审计跟踪显示预置的 baseline/train/ 来源,但不得重新提示,因为所有输入都已在整合关卡中收集。
  • 对预置检查点执行基线推理 → 评估 → RCA,以及完整的逐轮 RCA → 路由 → SDG → 挖掘 → 组装 → 训练周期。
  • KPI 关卡和停止条件;${RESULTS_DIR}/ 目录布局、deft_state.json、loop_log.jsonl、DEFT_Loop_Report.html。

循环退出后(达到 KPI 或达到 max_iterations),从 deft_state.json 中提取两个值:

  • iterations.<best>.best_ckpt_path — 循环中表现最佳的常规训练检查点
  • 最终迭代标签 N_final — 用于定位增强后的训练 CSV

如果 DEFT 循环因无法恢复的关卡而硬停止,请跳过第 3 阶段。没有经过验证的增强 CSV 可供 AutoML 使用。


第 3 阶段 — 在 DEFT 增强数据集上进行 AutoML 优化

再次调用 tao-skill-bank:tao-run-automl,将增强后的训练 CSV 作为训练数据集,使用与之前相同的留出验证 CSV,并将第 2 阶段的迭代获胜检查点作为热启动:

输入AOI 值
network_archvisual-changenet
train_dataset_uri${RESULTS_DIR}/iter${N_final}/dataset/train_combined_iter${N_final}.csv
eval_dataset_uri与第 1 阶段相同(<workspace>/train/base/validation_set.csv)— 确保比较公平
metric与第 1 阶段相同
algorithm与第 1 阶段相同
automl_max_recommendations5–10
初始规格从 <workspace>/specs/baseline_spec_automl.yaml(第 1 阶段的获胜规格)开始 — 为搜索提供强有力的中心点以进行优化
热启动检查点${RESULTS_DIR}/deft_state.json 中的 iterations.<best>.best_ckpt_path — 将此路径设为 spec_overrides["train"]["pretrained_model_path"]。这样,每个第 3 阶段的推荐项都会从第 2 阶段的获胜检查点进行微调,而不是从头训练。

必须使用热启动:不使用热启动时,每个推荐项都会从随机初始化开始,只有 10–20 个周期可用于重新收敛;与第 1 次迭代相比,第 3 阶段的 val_loss 会退化 0.03–0.05,而 _pick_best 安全网会悄然回退到迭代获胜检查点 — 浪费第 3 阶段的计算资源。具体的 spec_overrides 代码(选择 far_pct 最低的迭代,并排除任何先前的 final_automl)、广泛探索的权衡、输出到 ${RESULTS_DIR}/final_automl/,以及将第 3 阶段的检查点接回 DEFT 报告(通过 iterations.final_automl,并重新运行 prepare_inference_spec.py,同时使用 _pick_best 退化安全网)的说明,均见 references/handoff.md。

陷阱与质量检查

这些内容适用于两个 AutoML 阶段——应将其融入 Agent 的行为中,而不是只粘贴一次。详细信息请参阅 references/pitfalls.md:

  • 指标陷阱(AOI 类别不平衡)。 ChangeNet AOI 以 PASS 为主;val_loss 可能会模式坍塌,导致模型对所有样本都预测 PASS,召回率为零。优先直接使用 FAR @ 100%-recall,或者通过 pred_counts 合理性检查来限制 val_loss,也可以依据 FAR @ 100%-recall 选出 top-K。对于平衡任务或回归任务,使用 val_loss 没问题。
  • 运行间噪声。 对于相同配置,AutoML 的指标方差可能达到 2–3 倍。如果获胜结果看起来比次优结果好得可疑,请使用新的随机种子重新运行,然后再将规格提交给 Phase 2。
  • 数据集洁净度(数据泄漏)。 两个 AutoML 阶段都使用与 KPI 测试集(kpi/testing_set.csv)不同的验证集;该测试集会一直保持未触碰状态,直到 DEFT 的 evaluate 阶段。Phase 3 使用增强后的 CSV 进行训练,但沿用相同的验证集,以便 Phase 1 和 Phase 3 的结果保持可比。
  • 计算预算。 提前说明各阶段的结构,只有在用户提供单次作业耗时后,才给出实际耗时范围。

快速开始(AOI 示例)

从“运行 AOI 工作流”开始时,Agent 会向用户发送一段分为三个阶段的说明(Phase 1 AutoML 基线 → Phase 2 DEFT 循环 → Phase 3 AutoML 优化,并说明成本,最后询问“是否可以继续?”);获得确认后,调用 tao-run-automl(Phase 1),写入合并后的规格,预先填充 deft_state.json,调用 tao-run-deft-aoi(Phase 2)并预先提供所有输入,然后再次调用 tao-run-automl(Phase 3)——除非后续技能遇到无法恢复的硬性停止条件,否则不再暂停——最后总结完整过程(AutoML 基线最佳结果 → DEFT 第 1 次迭代 → ... → DEFT 第 N_final 次迭代 → Phase 3 最佳结果)。

请参阅 references/quick-start.md,了解面向客户的原文消息以及确认后准确的调用顺序。

非 AOI 的 DEFT 应用

相同的三阶段模式也适用于其他 DEFT 技能——替换 network_arch、Phase 2 DEFT 技能、规格/检查点路径约定,以及 Phase 3 增强 CSV 路径即可。交接流程相同(Phase 1 输出用于预先填充 DEFT 基线的规格和检查点,Phase 2 输出增强数据集,Phase 3 输出最终检查点),而基线跳过机制适用于任何具有可恢复基线状态的 DEFT 风格循环。请参阅 references/quick-start.md。


另请参阅

  • tao-skill-bank:tao-run-automl — AutoML 接口、算法、超参数范围
  • tao-skill-bank:tao-run-deft-aoi — 完整的 DEFT AOI 循环(Phase 2 默认项)
  • tao-skill-bank:tao-train-visual-changenet — 底层的 ChangeNet 训练/评估/推理技能(AutoML 和 DEFT 均会使用)
  • 其他 skills/applications/deft-* 技能 — 非 AOI 的 Phase 2 目标
  • references/preflight.md — 构建整合后的预检门槛
  • references/handoff.md — Phase 1→2 预填充、Phase 2 质量检查、Phase 3 热启动与报告接线
  • references/pitfalls.md — 指标、噪声、数据泄漏和计算预算指南
  • references/quick-start.md — 示例原文消息和非 AOI 变体

评论

支持 Markdown