用途
CDF Orchestration 的 SMT 缺陷图像生成(DIG)工作流,用于在 Kubernetes 上生成合成 PCB 检测图像。它通过一个 DAG(defect_image_generation_smt_dag_k8s)覆盖多种模式,由 pipeline_mode 决定运行哪些阶段:CDF Simulation 渲染 PCB 元件,CDF Augmentation 将渲染结果转为逼真的干净(golden)图像,CDF AnomalyGen 添加纹理缺陷。Simulation 还可渲染姿态缺陷(偏移、立碑、侧翻)。
主要能力与模式
- simulation:仅渲染 PCB 元件。
- sim2real:从板场景生成干净(golden)元件图像,阶段为 Simulation → image-edit。
- sim2real(含姿态操作):从板场景生成姿态缺陷(偏移、立碑、侧翻),阶段为 Simulation → image-edit。
- full:从板场景生成纹理缺陷(桥连、多余焊锡、缺失),阶段为 Simulation → image-edit → AnomalyGen。
- defect:在真实或已准备的干净图像上生成纹理缺陷,阶段为 AnomalyGen。
从板 USD 开始的请求有时称为“Day 0”,从真实或已准备图像开始的请求称为“Day 1”。
使用方式
- 解析请求的操作与模式,确定 pipeline_mode 与所需阶段。仅需 payload 的请求在本地准备并校验,将校验后的 payload JSON 放入最终答复,不启动运行;状态或结果查询使用已有的具名运行;手动 UI 录入需先配置 UI 访问并报告 URL,由用户触发运行。
- 仅收集该模式所需输入,复用任务中已提供的值,缺失项需询问,不得虚构位置、端点或模型名。
- 依据 payload-contract.md 构建纯 JSON(api_version: "1.0"),将运行相关的资产位置放在 payload 覆盖项中。使用 checkout 的 Airflow Python 环境校验 payload:先用 uv(0.9+)在 checkout 中创建环境(uv sync --frozen --all-packages --inexact),再用其解释器运行 scripts/payload.py。校验器使用 DAG 的 payload 模型与工作项编译器,拒绝工作流不使用或自行设置的覆盖键,不提交任何任务。
- 执行请求需检查就绪状态:使用用户配置或提供的集群凭据文件与控制器 URL,检查控制器就绪、DAG 加载、池、PVC、相关凭据与空闲 GPU 容量。就绪检查使用 Airflow 3 API,通过 POST /auth/token 获取令牌,以 Authorization: Bearer <token> 传递。GET /api/v2/dags/defect_image_generation_smt_dag_k8s 查看 DAG 是否加载与暂停;GET /api/v2/pools 查看池槽位;从仓库根运行 storage_check.py 确认存储映射,必须打印 Storage mapping: ready 才能触发。
- 触发一次并跟踪运行:所有运行路径以 /api/v2/dags/defect_image_generation_smt_dag_k8s 开头,对 ID 进行 URL 编码。选择唯一 run ID 并记录,payload 放在 conf.payload 内,logical_date 必填。POST 超时或返回 409 时,用 GET /dagRuns/<run-id> 获取该运行并比对 conf.payload,匹配表示已接受,不同表示 ID 冲突,绝不用新 ID 重试。每隔几分钟轮询运行状态并报告变化。
- 检索并解释结果:读取 outputs.md,用清单关联 simulation、golden 与缺陷图像,将原始导出计数与校验后的选择计数分开报告。
适用场景
- 从 PCB 场景生成焊锡桥连等缺陷。
- 仅生成 golden 检测图像。
- 在已有 IC/clean_image 图像上添加缺陷。
- 对板上每个 0603_H100 生成立碑缺陷。
- 在 115_2819_000 上以全板覆盖生成桥连缺陷。
- 为某个 golden 配置使用不同的 image-edit 提示词。
- 查看某次已完成 DIG 运行的全部缺陷。
限制
- 校验器仅校验 payload 及其编译;组件覆盖内的键、场景内容、存储对象与端点在每个任务启动时才检查。
- 仿真模板面向 Artix 示例板;其他板需要自己的场景、焊锡、标注与采集设置。
- 选择器中的组件名在仿真任务启动时依据板元数据解析,校验器无法确认。
- 姿态缺陷运行的裁剪图存放在 goldens/ 下,因为 sim2real 将每个输出视为 golden 图像。
- 默认 AnomalyGen 即使使用外部 image-edit 也需要同一节点上两块 GPU。
- 一次运行中每个 amg_endpoints 条目都附加同一个 VLM_API_KEY。
- 外部 image-edit 请求使用部署的 NGC API 密钥认证。
- 请求的缺陷计数并非按输入覆盖;full 模式对每个干净输入最多保留一个选中的导出。
依赖与前置条件
执行需要授权的 Kubernetes 连接、已加载 DIG DAG 的 Airflow 3 控制器,以及所选模式的存储与模型访问权限。payload 校验器需要可信的 CDF Orchestration checkout 及其 Airflow Python 环境;仅解释工作流或起草 JSON 则不需要。执行就绪还要求产品 checkout 中的配套脚本 skills/cdf-orchestration-preflight/scripts/storage_check.py;若不可用,应报告缺失依赖为就绪阻塞项,不得跳过存储映射检查。