Skip to content
cccskills
FreePublished on GitHub

framework-integration

三方框架特性落地(原 framework-feature-enablement + framework-extension-dev 合并): 一个入口信号「框架侧特性没落地」,内部分两分支——**分支 A 框架已有 → 使能与验证** (计数契约 + 三层证据 + 使能异常回修);**分支 B 框架缺失 → 补齐开发** (注入点 + 代码组织/注册机制 + 合入姿势:平台注册优先 / 上游 PR / fork 钉版 / monkey 备选)。

分支 A 触发词:量化/稀疏/缓存开关没生效、融合算子没命中、使能异常或精度不符、 "起 vllm 服务""模型在框架里跑不通""把 mindiesd 接到其他框架"。

分支 B 触发词:框架没 comm-stream 掩盖、框架没缓存消费者、框架不支持某 collective/mask、 feature_* NotImplemented、要给框架补一条结构性能力。

near-miss:纯安装/权重 → env-install;纯采集/分析 → profiling-collect / profiling-analyze; 纯选档(该不该开量化、开哪一档)→ dit-perf-opt; mindiesd 仓内 pattern / 算子 / 图下发开发 → dev-workflow + pattern-dev / operator-dev / aclgraph-dev。

由 model-auto-optimization 的 S1(融合接入)/S4(有损使能)/S5(训练感知)与 §0 缺口补齐策略路由, 亦由 dev-workflow 的框架接入/验证场景指引加载。

The English summary is being prepared. Showing the original description.

See how to install

Files included (20)

  • SKILL.md36.2 KB
  • evals/evals.json18.9 KB
  • references/cache-dit-enablement.md18.7 KB
  • references/cache-dit-minimax-h3-case.md24.1 KB
  • references/cache-enablement-pattern.md5.5 KB
  • references/diffsynth-engine-case.md12.4 KB
  • references/diffsynth-engine-enablement.md20.1 KB
  • references/diffsynth-engine-notes.md9.7 KB
  • references/framework-support-matrix.md36.1 KB
  • references/lightx2v-enablement.md20.4 KB
  • references/lightx2v-mindiesd-case.md27.0 KB
  • references/run-entry-and-request-tiers.md5.4 KB
  • references/train-aware-lossy-method.md13.6 KB
  • references/troubleshooting-vllm-omni.md7.7 KB
  • references/vllm-omni-case.md6.0 KB
  • references/vllm-omni-enablement.md26.9 KB
  • references/vllm-omni-minimax-h3-case.md14.9 KB
  • references/vllm-omni-qwen-image-case.md11.9 KB
  • references/vllm-omni-train-aware-enablement.md8.9 KB
  • scripts/ascii_luma_preview.py14.5 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

三方框架特性落地:使能与验证(分支 A) / 缺口补齐开发(分支 B)

合并说明:原 framework-feature-enablement(= 本文件分支 A)与原 framework-extension-dev (= 分支 B)已合并为本技能——入口前不再判「已有 / 未支持」,判定收进 §0 的两分支表内。 框架差异知识单点:各框架的注入点 / 注册机制 / 合入形态一律以 references/{framework}-*-enablement.md 为真源(§3),本文件只留两分支共通的方法与判据。

0. 入口信号与分支判定

0.1 入口信号

只要求一个信号:框架侧特性没落地。 三种表现都从本技能进:

表现例子
开关 / 接口存在,但没开、或开了看不出效果量化 / 稀疏 / Cache 开关、compile_backend 配了但 0 命中
机制存在但当前形态不命中 / 报错 / 精度不符融合算子没命中、4D attention 使算子运行期 fallback、inferShape does not exist
框架自身没有这条路径无 comm-stream 掩盖、无缓存机制、无稀疏/量化消费者、不支持某 collective / mask

提问者不需要先判定"已有还是未支持"——由上表在 §0.2 分流;但分支持续变更要留一条记录(不静默切换)。

0.2 两分支判定

观察分支出口证据
框架该能力已存在(开关 / 接口 / 机制具备),只是没使能或没生效——含为使能所需的最小 glue 修复(如 supports_packed_mask_free classmethod)A:使能与验证(§1)计数契约 + 三层证据(图命中 → kernel diff → 墙钟)
框架该能力未支持(无机制 / 无注册点 / 无消费者 / 无注入点)B:补齐开发(§2)输出一致 + 计数契约 + 三层证据;fork/探针须标 [探针]
mindiesd 仓内要新增 / 适配 pattern、kernel、图下发、后端越界:非本技能dev-workflow + pattern-dev / operator-dev / aclgraph-dev
缺口归属不清先判归属(§2.1,以代码落点定侧)判定行写入任务记录后再动手
  • 是否补、补到哪一档由 model-auto-optimization §0 的「缺口补齐策略」经用户一次性确认决定; 本技能只提供「怎么使能 / 怎么补」的知识与流程,不代替该确认。
  • 跨侧特性(mindiesd 提供能力接口 + 框架提供接入点)按 §2.1 拆两侧子任务,对接联调在本技能收口。

0.3 定位与分工(相邻能力)

相邻能力分工
env-install环境安装与权重准备(本技能前置);装库 / 权重 / 容器类异常直接归它
profiling-collect / profiling-analyze证据侧:采集与 kernel diff / 三层证据
perf-gate性能验收口径:同窗 A/B、噪声阈值、探索态 vs 验收态
accuracy-gate精度验收口径:等价分层与三级验收(有损档的质量门)
pattern-dev / operator-dev实现侧:新增 / 适配 pattern、算子本体
dummy-run快速验证载体:融合可行性、使能集合预判
model-auto-optimization编排层:阶段账 / 门禁 / 报表 / 产物目录 / 缺口策略
本技能框架侧落地:分支 A 使能 + 验证 + 回修;分支 B 补齐开发 + 注入点 + 合入姿势

前置:环境与权重就绪(见 env-install:import mindiesd 成功、三方框架装好、模型权重可用且经其确认)。


1. 分支 A:框架已有 → 使能与验证

1.1 使能与验证回路

① 使能评估 → ② 路径决策 → ③ 使能异常定位与回修

① 使能评估:目标特性需要 mindiesd 的什么 kernel / pattern?框架侧接入点是什么(配置注册表 / 特性开关 / compile 入口 / 图形态)?特性来源是 mindiesd 能力还是框架原生(决定查 docs/zh/features/* 还是该框架 enablement 文件)?

② 路径决策:

a) 有现成融合 / 单算子 → 开启并验证生效
   姿势:特性开关 / 注册表替换 / _compiled_call_impl 赋值(见 §1.6)
   → 三层证据确认(图命中 → kernel diff → 墙钟,证据走 profiling-analyze)
b) 融合不支持(无 pattern / 图形态不匹配 / 无抽象接口)
   → 接入 mindiesd 算子(runtime 替换,见 §1.6)
     或走 compile(新增 / 适配 pattern,图形态差异加变体)
   → 需要实现改动时指向 pattern-dev / operator-dev
   → 融合可行性先用 dummy-run 快速验证(pattern 命中不依赖层数 / 权重),
     再在真实权重下 kernel diff + 墙钟复验

a) / b) 是判据;执行顺序另有纪律(见 §1.2):无抽象接口框架的算子注入一律两阶段—— 先 API(runtime 注入)→ 再 compile(图级适配)。下表方向与档位一律「本组合观测」, 判定以最近一次实测为准(历史结论只作参照,不得替代本任务复测)。

③ 使能异常定位与回修:见 §1.5。

1.2 两阶段顺序纪律(API 优先 → compile 适配)

  1. 阶段 1 · API 接入(runtime 注入):在最小改动面上把 mindiesd 单算子接到调用点。 落点三选一——框架配置注册表(rms_type / rope_type / *_REGISTER)、框架侧算子 dispatch 点、 或直接改模型代码(模型 / 层源码内 import mindiesd 并替换调用点)。不预设"无注册表就只能 走 compile"。出口条件:接口签名与几何约定对得上、同 seed 数值对拍通过(等价或落在该算子 量化级容差内)、单点收益方向明确。
  2. 阶段 2 · compile 适配接入:接口确认可行后再走 mindiesd 的 compile 机制做图级适配 (新增 / 适配 pattern、图形态变体、_compiled_call_impl 写入、平台注册 backend)。 适配动作清单与开关治理见 pattern-dev/references/fusion-enablement-notes.md 「compile 阶段的适配动作」(1→7 顺序不可跳)。出口条件:真图命中(pattern 计数)→ kernel diff (融合 kernel 出现、被替代 kernel 消失)→ 数值核验(eager vs compile)→ 墙钟收益过噪声阈值。

为何 API 先行:① 改动面小、成本低(pattern + 注册链 + 后端是两侧成倍工作量);② 失败早暴露 (接口签名 / 几何约定 / 自研算子部署顺序错配在最小改动下立即暴露,不被 compile 的图形态问题掩盖); ③ 先拿到可归因的单点收益(eager 侧收益是后一阶段的分母与数值对拍基线)。

为何 API 不替代 compile:API 只作用于被替换的调用点(层内单算子),框架侧的拷贝 / 调度开销与 未展开的整链融合仍在;compile 才能在图级命中原生 API 无法表达的多算子链,并消减 functionalization 引入的拷贝(见 pattern-dev Phase 7)。

何时停在 API 阶段即可(按证据判定,不留半开状态):

  • 收益已达标:eager 单算子已覆盖热路径,再叠 compile 的 kernel 级结果为负 ⇒ 停在 API 并记录回退 (本组合观测:vLLM-Omni 侧 FA / norm / rope / adaln 由单算子承载,叠 compile 无正收益)。
  • compile 无正收益或改数值语义:受控交错 A/B 落在噪声阈值内(<3%)⇒ 回退;或图级编译改变数值 语义(输出非逐字节,如 compiled FA 的数值 / seed 语义)⇒ 即便有方向性收益也按「非无损」回退。
  • 适配代价落在探针侧:接口可行性已验证,但 compile 适配需改框架仓且未合入上游 ⇒ 按 [探针] 标注 (经验 vs 探针判定见 .agents/README.md §7),不进推荐姿势与报表宣称。

收益量级参考(两阶段的相对贡献,一律「本组合观测」;换框架 / 模型 / 负载规模 = 重判; 本表不记绝对耗时,机制与读数以下表「落点文件」为准):

链阶段 1(API / runtime 注入)阶段 2(compile 图级适配)落点文件(真源)
LightX2V × 视频 DiT(有注册表接口)注册表替换,累计约一成在其之上再拿个位数百分点(长视频档更小);另有一项收益来自 a2a 留 eager 的通信项lightx2v-enablement.md §3.1/§3.2
vLLM-Omni × 视频(无注册表接口)eager 单算子(自动路由面)已覆盖热路径无正收益 → 回退、默认关vllm-omni-enablement.md §3.1/§3.5
vLLM-Omni × 图像同上(单算子 + FA 路由)编译成功但方向性收益小、且输出非逐字节 ⇒ 回退vllm-omni-enablement.md §3.5
cache-dit × vLLM-Omni 0.26框架原生 Cache / 量化开关逐 block compile 噪声内无稳健收益 → 回退cache-dit-enablement.md §3.4
DiffSynth-Engine × 图像(无注册表接口)模型层直接注入(RoPE 实数域改写、text encoder key 归一化)是阶段 2 命中的前置图级命中集合与端到端收益(个位数百分点量级)diffsynth-engine-enablement.md §3.2–§3.4
  • 各框架的注入点 / 注册机制 / 合入形态差异见 §3 的真源文件(同一「注入」动作落在不同层, 姿势不可照搬);本文件不复述逐框架机制。
  • 使能判断用 dummy run 即可(pattern 匹配基于图结构);使能集合与真实权重一致。
  • 单次结果不迁移:换框架 / 并行配置必须按回路重新验证。

1.3 框架侧验证(已部署模型,真实权重)

框架无关的验证骨架:启动服务 → 健康探针 → 一次真实请求 → 校验产物(字节数 / 形状 / md5)。

  • 具体启动命令与端点选型(vLLM-Omni 全栈):references/vllm-omni-enablement.md §2.1(启动姿势 + 启动自检 curl + /v1/images/generations vs /v1/images/edits 端点选型); Edit / I2I 模型(QwenImageEditPlusPipeline 等)必须走 multipart edits 端点, 否则 500 Missing preprocess images。
  • 启动期环境类异常(缺 X11 库 / 权重分片缺失 / HCCL ranktable / 设备版本变量):归 env-install 与 本技能 troubleshooting → env-install/references/troubleshooting-env.md §H、 references/troubleshooting-vllm-omni.md §E1/E2(本文件只留指针,不复制命令)。
  • 权重落位:按 env-install/references/weights-prep.md §2.2「落位约定」书写 (模型根目录直接 serve,模型名之下不再加厂商 / 组织层;框架侧历史写法已弃用)。
  • 无服务的本地 pipeline 快验(先排除服务层噪声):from_pretrained 装载 + 单步推理是 "该特性有没有改变输出 / 有没有报错"的最短代码路径—— <Pipeline>.from_pretrained({model_weight_dir}, torch_dtype=torch.bfloat16).to(device) → <pipeline>(prompt=..., num_inference_steps=1, output_type="latent") → 校验输出 shape / dtype / 非全零, 并与「同 seed、同 prompt、关掉该特性」的基线逐元素比一次(判据分层见 accuracy-gate)。 它只用于快验与定位(不覆盖服务层调度 / 批处理面,给不出吞吐结论);收益仍须按上面的 服务化骨架 + §1.4 计数契约测。Cache 系特性的开启姿势见 references/cache-dit-enablement.md / references/cache-enablement-pattern.md,装载与编译期异常见 §5 故障排查。

验证通过标准(框架无关四项):推理无异常(无 RuntimeError / OOM / CANN error);输出合法 (shape > 0、非全零、产物字节数与预期一致);显存峰值 < 物理显存 90%;特性叠加的开关生效且过 §1.4 计数契约(量化看权重精度与 --quantization 档位、稀疏看 sparsity 参数、Cache 看命中日志, 框架逐步计数器未填充时用 kernel 级计数兜底)。

1.4 计数契约(真实性核验,防 no-op 假加速)

宣称收益前,除"开关生效"外还须有技术真实参与的运行期计数并写入产物——缓存复用次数、 稀疏 / 量化 kernel 调用数、融合 kernel 实际执行次数等;可设 fail-closed 断言 (如「预期 dense N / sparse M / actual kernel M」,不符即运行契约失败)。计数口径记入 model-auto-optimization/references/artifact-layout.md 的产物(technique_counters)。

  • 框架的逐步统计属性未填充时,用 kernel 级计数契约兜底:若框架自身暴露的逐 step 计数器 (缓存命中步 / 累计属性)在该框架路由下未填充(改三方仓补 glue 需另行确认),不要因此判 「特性无效」——改用 kernel 级计数作真实参与证据:被跳过的阶段应表现为相关 kernel 分类计数 骤降一个量级(而非归零或持平),实现「步级跳过」类特性(Cache 等)的等价契约。
  • 三层证据(可靠性递增):MINDIE_LOG_LEVEL=DEBUG 日志 → graph_log_url DOT 图 → kernel_details.csv。
    • ⚠️ 日志 2048 字符截断会误判 0 命中 → 以 DOT 图 / kernel_details.csv 为准
    • ⚠️ 图命中 ≠ 运行期全部生效:residual_gate_add 对 4D attention 张量运行期 fallback, 需看融合 kernel 实际执行次数
    • 不做耗时比较:dummy 与真实权重的耗时差异由层数主导,耗时评估必须真实权重 + kernel diff (证据走 profiling-collect → profiling-analyze)
  • 收益判定用受控交错 A/B + 噪声阈值:同卡组同日做 C1→E1→C2→E2 交错、n≥4 取中位消除热漂移; 差异落在噪声阈值内(本仓惯例 <3%)不宣称收益,判「回退(默认关)」,不留半开状态 (口径与归档见 perf-gate、cache-dit-enablement.md §3.4)。
  • 稀疏 / 融合的「路径区分」先于收益判定:eager 公共 API(外部逐层 mask,如 rf_v3)与融合算子 (op 内 mask+BSA 一体,如 EagleQBSA)是两条不同实现,墙钟 / 收益口径不可混称;先 op 级微基准 (同几何对拍 dense vs 目标路径,import mindiesd 前置,warm+稳态取 ms)确认 kernel 价值,再接线 e2e 复验(方法见 profiling-analyze heuristics「Host/Kernel 与数据搬运归因」)。
    • eager 外部 mask 路径的收益边界:该路径「能生效但收益有限」——mask 选择逻辑开销可忽略, 大头是每层每步的全尺寸 rearrange/pool 数据搬运(随层数线性放大)⇒ 只省下部分步时,且前缀 dense 步进一步摊薄端到端收益,op 级单调用甚至可能慢于 dense。故:融合 op 存在时优先融合 op; 未接线时其收益只能先按 op 级证据固化,e2e 组合为待决项。
    • 宣称纪律(fail-closed):必须有本步 kernel 计数证据(dense FA 计数下降 + 稀疏 kernel 出现) 或同几何同 sparsity 的 op 级对拍;无证据不宣称「稀疏生效」,兜底日志(如 staying dense) 与 lossless 逐字节相同时按「未生效」处置(≠「收益小」)。
  • 有损档(缓存 / 稀疏 / 量化)过 accuracy-gate 的质量门;探针类修复标 [探针]。

1.5 使能异常定位与回修

  1. 定位算子执行差异:图命中 vs 运行期实际 kernel(graph_log_url DOT 图 → kernel_details.csv)、数值 / 精度差异、shape / 布局差异 (如 4D attention 张量使 residual_gate_add 运行期 fallback)。
  2. 判定根因(三类,指向不同修复侧):
    • mindiesd 侧:pattern 实现错误 / 注册缺失 / kernel 语义不符 → 指向 pattern-dev / operator-dev 修复;
    • mindiesd 自研算子部署侧:自定义 CANN 算子产物只在 repo mindiesd/ops/vendors/*,运行期靠 import mindiesd(env.py 设 ASCEND_CUSTOM_OPP_PATH)——必须先 import mindiesd 再初始化 NPU / 建张量,否则 aclnnXxx … inferShape function does not exist(部署 / 顺序问题, 非参数问题;部署校验与 golden 通过判据见 operator-dev/references/custom-op-runtime-deploy-verify.md,框架侧同款姿势见 cache-dit-enablement.md §2.2);
    • 框架适配侧:调用姿势(_compiled_call_impl 未赋值)、图形态与 pattern 期望不符、开关未生效、 Dynamo 重编译(backend 实例未复用)→ 本技能内修复框架侧适配(§1.6)。
  3. 修复后复验:重新采集 + kernel diff + 墙钟(profiling-collect → profiling-analyze),确认根因消除。

1.6 接入姿势(运行时算子接入 / compile 融入)

运行时算子接入(阶段 1):把算子替换为 mindiesd 单算子(如 npu_rms_norm、npu_rotary_mul); 有注册表接口的框架改配置即可,无接口的改模型 / 层源码直接 import mindiesd 替换调用点。 单点收益读数与口径以该框架 enablement 文件为准(绝对数字归档 {run_results_dir}/archive/)。

compile 融入(阶段 2)跨框架通用姿势:

  • ⚠️ torch.compile(submodule, backend=...) 不赋值不生效,必须写入 submodule._compiled_call_impl (等价 nn.Module.compile())。未赋值时 warmup 与 eager 一致、pattern 0 命中。
  • backend 实例复用:每次新建 MindieSDBackend() → Dynamo BACKEND_MATCH failure 反复重编译 直至 recompile_limit 后静默退回 eager;须缓存单实例。
  • compile backend 经平台注册表注入(推荐形态):不要在框架核心硬编码第三方包名;平台侧注册懒 工厂、core 只查注册表、未知名 raise 不静默回退,实例仍须缓存单份(先例:LightX2V #1471)。
  • collective 留 eager(防 a2a 退化):多卡序列并行(USP / Ring)下若把 collective 编进图, split_sizes 可能被推断错导致变长 alltoall 路径退化(hcom_alltoallv,单次耗时比固定等分 alltoall 放大数十倍,比例关系)→ 用 torch._dynamo.disable / torch.compiler.disable 把 collective 留在 eager(graph-break),计算段继续融合。⚠️ 优先框架原生可选机制,不要全局改共享 collective 类(合入版把"全局钉 disable"收敛为平台注册 + 配置可选)。
  • 图形态差异:同一算子在不同框架 Dynamo 展开形态不同(如 chunk(2) 在 diffusers 是单 split 双 getitem、在 LightX2V 是两个独立 split 节点)→ pattern 需加变体(pattern-dev);诊断用 graph.print_readable() 对比 pattern 期望与真实图。
  • 逐框架的具体改动点不在此复述:DiffSynth-Engine 的 3 处适配见 references/diffsynth-engine-enablement.md §3.1/§3.2,LightX2V 见 references/lightx2v-enablement.md, vLLM-Omni 见 references/vllm-omni-enablement.md §3.5。

2. 分支 B:框架缺失 → 补齐开发

2.1 缺口判定与归属(框架 × mindiesd 合作界面)

模型优化的「预期关键路径」有时在目标框架自身缺失(无 comm-stream 掩盖、无缓存机制、无量化 kernel 消费者、Ring 不支持 attn_mask…)。判据 = 该能力框架是否已存在(已存在 → 回分支 A)。 归属以代码落点(仓库)定侧:

落点归属
mindiesd 仓文件(含 mindiesd/parallel 等本仓实现)dev-workflow + pattern-dev / operator-dev / aclgraph-dev 开发子任务
三方框架仓文件:结构性能力(comm-stream masking、缓存框架、稀疏 / 量化消费者、平台注册后端…)本技能分支 B
三方框架仓文件:接线 / 小修(使能所需的最小 glue)分支 A(§1)
重叠区(同一特性两侧都有改动)按文件拆两侧子任务,互不越界,对接点统一收口

合作界面(注册表 / 平台分发 / 注入点 / 合入形态)随框架而异 → 两侧分别开发后在对接点联调验证 (输出一致 + 计数契约 + 三层证据,姿势见 §1);该框架的合作界面差异记录进 framework-support-matrix.md 的姿势列,避免同一框架反复摸索。

2.2 补齐实现流程

  1. 最小复现缺口:用最小用例 / 框架入口复现「关键路径缺失」证据(报错 / 回退 / 无机制)。
  2. 形态选择(按 §0 用户确认执行,不静默切换):见 §2.4 四档合入姿势。
  3. 实现:按 §2.3 的注入点分类落到目标框架的对应层(editable 安装改后即生效;无 .git 环境按 env-install 的版本处理姿势)。
  4. 验证:输出一致性 + 计数契约(预期计数 fail-closed)+ 三层证据(图命中 / kernel diff / 墙钟, 见 §1.4);有损类补齐过 accuracy-gate 质量门。
  5. 收口:合入上游时遵循评审收敛姿势——common 零改动、平台注册 + 配置可选、未知名 raise 不静默回退、backend 实例单例、collective 留 eager(先例:LightX2V #1471 hccl_eager)。
  6. 回填:更新 framework-support-matrix.md(状态 / 新特性行 + 证据码 + 版本 + 日期)、 在对应框架的 {framework}-*-enablement.md / -notes.md 补开启方式与坑 (-case.md 受限保留:须在 Reference Files 登记 + 标注「不作为推荐加载入口」+ 实测数字出库, 见 .agents/README.md §7),需要时增补本技能 evals。

2.3 注入点与代码组织(分类,逐框架实例见 §3 真源)

注入点类型载体适用
配置注册表替换框架配置字段(rms_type / rope_type / *_REGISTER)框架有抽象接口 ⇒ 阶段 1 零代码
框架侧算子 dispatch平台实现内的 CustomOp dispatchmindiesd 进 venv 后自动路由,不改模型代码
模型层直接改写模型 / 层源码内 import mindiesd 并替换调用点无配置接口时的阶段 1 落点;也是阶段 2 命中的前置
_compiled_call_impl 原地写入逐 submodule 编译并写回compile 接入(不赋值不生效)
平台注册表注入 backend / 后端平台侧注册懒工厂 + 配置字段推荐形态:core 不硬编码第三方包名、未知名 raise
env 门控 fork 适配fork 补丁 + env 开关未合入上游 ⇒ [探针]、默认关

表格给的是注入点类型学(跨框架复用);LightX2V / vLLM-Omni / DiffSynth-Engine 各自 落在哪种类型、具体代码地图与注册机制,单点在 §3 的 per-framework enablement 文件。

2.4 合入姿势(四档,按影响面从小到大收敛)

档形态适用 / 代价
① 平台注册 + 合入上游(推荐)能力经注册表 / 平台实现接入,common 零改动;随上游 PR 合入影响面最小、可持续;需按上游评审收敛(未知名 raise、配置可选、单例)
② 上游 PR(不经平台注册层)直接改框架公共路径并追求合入公共路径改动影响所有平台,评审收敛周期长
③ fork 本地补丁(钉 base_commit)fork 仓补丁 + 版本钉死快速可用;不得当最终能力宣称,回填须标 [探针]
④ monkey-patch(运行期注入)运行期替换对象 / 方法漂移风险最高,仅作验证与过渡;默认关 + 保留 .bak
  • 选择依据:改动归属(改哪个仓)+ 是否接受改三方框架仓 / 合入上游,由 §0 用户确认后落定; 同一任务内不静默换档(换档要留记录)。
  • 先例(可照抄的收敛姿势):LightX2V #1471 把「全局 @torch._dynamo.disable 改共享 collective 类 与 core 硬编码 mindiesd 包名」收敛为平台注册表 + 配置可选键(hccl_eager / COMPILE_BACKEND_REGISTER),common 零改动。

2.5 关键纪律

  • 框架能力版本漂移:实现前先钉框架 base_commit;合入上游前不得把 fork 结果当最终能力宣称。
  • 结构性实现不并入 enablement 的 case:enablement 只做接线 / 小回修,结构性能力各自单点维护。
  • 最小复现先行:无缺口证据(报错 / 回退 / 无机制)不动手,避免把"配置没开"误判为"框架没有"。
  • 本技能只提供「怎么补」的知识与流程;是否补、补到哪一档由 §0 的确认决定。

3. 框架差异真源与 references 登记(加载时机)

同一框架的开发范式 / 注入点 / 注册机制 / 合入形态 / 坑,只写在下面这一份里——本 SKILL 与 framework-support-matrix.md 只做指针与状态,不复制机制细节;分支 A(使能)与分支 B(补齐) 共用同一份("注入点速查表"不另存第二份)。

真源文件覆盖(框架差异 / 机制)加载时机
references/vllm-omni-enablement.mdvLLM-Omni 0.28:画像与版本边界、启动与并行(--omni 姿势 / --text-encoder-tp-size 契约 / worker 残留清理 / DLO offload)、特性开关面板(自动路由面 / 量化 w8a8·mxfp8 / 稀疏 RAINFUSION_ATTN 几何前置 / Cache cache_dit / torch.compile 接入点 / 计数契约)、回修与 [探针] 清单使能或排查 vLLM-Omni 侧特性时
references/diffsynth-engine-enablement.mdDiffSynth-Engine:无算子注册表接口 ⇒ 走 compile;compile_backend="mindie" + _compiled_call_impl 原地写入、backend 实例复用、RoPE 实数域改写 / text encoder key 归一化(命中前置)、三层证据、与 LightX2V 的差异照搬清单接入 DSE / 排查其命中与使能时(原 -case.md+-notes.md 已合并进本件)
references/lightx2v-enablement.mdLightX2V(#1471 合入版):注册表接入、平台注册懒工厂 + 配置可选键、代码地图、三条必修坑(a2a 不进图 / backend 单例 / swiglu 双 split 变体)、[探针] 清单(含框架侧结构性实现的跨侧指针 → §2)接入 LightX2V 或照抄其合入姿势时
references/cache-dit-enablement.mdcache-dit × vLLM-Omni 0.26:trunk 托管链画像与版本边界、自研算子部署前置("先 import mindiesd" 顺序)、Cache 主导旋钮、稀疏两条路径、受控交错 A/B、kernel 级计数契约兜底cache-dit / 缓存类特性使能时
references/train-aware-lossy-method.md跨框架通用方法(与具体产物隔离):训练感知有损的分类与归组判据 → 四步使能回路 → 三条前置契约(步数语义 / 装载计数防 no-op / 组件契约先读参考实现)→ 判定三件(比值法 + 逐步墙钟 + 质量分层,PSNR 不可判接错)→ 归因链 → 数字纪律S5 训练感知类任务(少步蒸馏 / 换解码器)
references/vllm-omni-train-aware-enablement.mdvLLM-Omni 训练感知开启方式:少步蒸馏 LoRA 链(仅 0.28 有;model_index.json 不得 pin base_schedule;装载计数日志契约 = 计数行与实际适配器模块数一致(rank 递进))、VAE解码替换 框架未提供 ⇒ fork 探针、视频 VAE 帧数契约、少步档 Cache 结构性失效该框架训练感知档
references/cache-enablement-pattern.md三方框架用库内 CacheAgent / DiTBlockCache / AttentionCache 做有损缓存的通用姿势(接入三要素 + 验证三件套 + 坑速查)明确要求基于库内 CacheAgent 开发缓存能力时;框架本身不支持 cache 时不得作兜底(那种情形按「不支持」登记并引 framework-support-matrix.md 三态)
references/run-entry-and-request-tiers.md部署完成后的运行入口与档位:vLLM-Omni serve 目标二选一 + 请求级 extra_params.task 档位切换;LightX2V torchrun 入口 + --config_json 档位语义(并行档位语义指回 dit-parallel-opt);使能异常时的回退姿势(选哪一档退归 dit-perf-opt)需要"起服务 / 换运行档 / 请求级切 task / 档位报错回退"时
references/troubleshooting-vllm-omni.mdvLLM-Omni 构建 / 启动 / 运行期异常(§E1 构建、§E2 启动、§E3 运行期;编排层口径见其开头指针)该框架异常排查时
references/framework-support-matrix.md跨框架支持状态矩阵 + 证据码 + 版本(特性命名以 docs/zh/features/* 为准)使能前查支持面 / 分支 B 缺口判定 / S4 组合前裁剪候选 / 框架或 docs 版本升级后刷新

接线(非本技能内容,按需跳转):证据(采集 / 分析 / kernel diff)→ profiling-collect / profiling-analyze;性能与精度验收口径 → perf-gate / accuracy-gate; 实现层改动(pattern / 算子)→ pattern-dev / operator-dev;快速验证 → dummy-run; 环境与权重 → env-install(references/{troubleshooting-env,weights-prep}.md); 产物目录 / 运行态 / 报表契约 / 编排阶段 → model-auto-optimization(references/{artifact-layout,run-state}.md)。

单次结论不迁移:案例中"某修复必要 / 有效 / 无效"仅在该框架 + 并行配置下成立; 换框架 / 换配置必须按 §1 回路重新验证。

4. 存量 -case.md / -notes.md 登记(受限保留)

.agents/README.md §7:-case.md 受限保留——须在所属技能的 Reference Files 登记并标注 「不作为推荐加载入口」,且实测数字按数字纪律一律出库({run_results_dir}/archive/, skill 内只留判据)。本表只登记在库事实、可迁移内容的真源归属与加载时机:

存量文件真源归属(可迁移内容的落点)加载时机(均不作为推荐加载入口)
references/cache-dit-minimax-h3-case.mdcache-dit-enablement.md(trunk 托管链 / 部署前置 / Cache 主导旋钮与计数契约)需回看 cache-dit 链原始读数时(读数已出库 {run_results_dir}/archive/cache-dit-minimax-h3-case.md)
references/diffsynth-engine-case.mddiffsynth-engine-enablement.md(命中与使能)+ diffsynth-engine-notes.md(模型结构与几何契约)需回看 DSE 链原始读数时(读数已出库 {run_results_dir}/archive/diffsynth-engine-case.md)
references/diffsynth-engine-notes.mddiffsynth-engine-enablement.md(前置与版本边界)需回看 Qwen-Image 侧结构 / 几何契约原文时
references/lightx2v-mindiesd-case.mdlightx2v-enablement.md(注册表接入 / 平台注册懒工厂 / 三条必修坑)需回看 LightX2V 链原始读数时(读数已出库 {run_results_dir}/archive/lightx2v-mindiesd-case.md)
references/vllm-omni-case.mdvllm-omni-enablement.md(0.28 使能面 / 计数契约 / [探针] 清单)需回看 V1 图像链原始读数时(读数已出库 {run_results_dir}/archive/)
references/vllm-omni-minimax-h3-case.mdvllm-omni-enablement.md §3/§5(开启方式与单步 profile 面)需回看 V1 视频链原始读数时(读数已出库 {run_results_dir}/archive/vllm-omni-minimax-h3-case.md)
references/vllm-omni-qwen-image-case.mdvllm-omni-enablement.md §3.5(compile 输出非无损否决)需回看 V3 图像链原始读数时(读数已出库 {run_results_dir}/archive/)

默认加载链路一律走 §3 真源表;本表各件与 §6 同列,均不作为推荐加载入口。 各件实测表内的绝对读数按数字纪律改写为量级 / 比值并附归档指针(表与文件保留)。

5. 故障排查

  • 通用部署问题(环境依赖、缺 X11 库、权重分片缺失、装库 / 权重缺口)→ env-install/references/troubleshooting-env.md(§H 与正文)
  • SSH / CRLF / 传输域 / 本地开发机 TLS(schannel)→ remote-access/SKILL.md「故障排查」表与 remote-access/references/transport-troubleshooting.md
  • 自研算子部署顺序与部署校验(golden)→ 本文件 §1.5 与 operator-dev/references/custom-op-runtime-deploy-verify.md
  • 多卡运行期劣化(SIGKILL 残留态 / 端口 bind / 热降频与 clean-window 口径 / 拓扑选卡)→ dit-parallel-opt/references/ascend-topology-bandwidth-diag.md §1–§5
  • vLLM-Omni 构建 / 启动 / 运行期异常 → references/troubleshooting-vllm-omni.md(§E1–E3)
  • 编排层口径(基线冻结 / md5 口径 / 产物同目录 / 报表)→ model-auto-optimization/** (workflows/optimization-flow.md、references/{run-state,artifact-layout,overview-report}.md); 测量口径 → perf-gate

6. Reference Files

  • 本技能默认加载入口的 references 全部单点登记于 §3(真源 / 覆盖 / 加载时机),此处不重复登记; references/framework-support-matrix.md 为状态查询入口,其余为框架差异与方法件。
  • 存量 -case.md / -notes.md(受限保留;不作为推荐加载入口): references/cache-dit-minimax-h3-case.md、references/diffsynth-engine-case.md、 references/diffsynth-engine-notes.md、references/lightx2v-mindiesd-case.md、 references/vllm-omni-case.md、references/vllm-omni-minimax-h3-case.md、 references/vllm-omni-qwen-image-case.md —— 真源归属与加载时机见 §4 登记表;只在 §3 真源件 未覆盖的历史细节上回查(其中绝对读数以 {run_results_dir}/archive/ 为准)时读。
  • 跨技能接线(环境 / 证据 / 验收口径 / 实现层 / 快验 / 编排)→ §3 末「接线」段。
  • 开发流程与复盘规范 → dev-workflow/SKILL.md。

7. Bundled Scripts

  • scripts/ascii_luma_preview.py — 解码输出亮度预览与对拍(零依赖、零 NPU、零网络):读帧目录出 逐帧聚合指标(均值 / 标准差 / 钳位占比)+ ASCII 亮度图,或两目录同尺寸帧对拍(逐帧灰度相关系数)。 加载时机: 质量门禁只能记 inconclusive(尤其「无图像输入能力」成因)而需留下「可机读 + 可人眼读」 的视觉存证时——把「无法看图」与「质量通过」明确分开。材料落 {run_results_dir}/。

8. 维护与更新

当 vllm / vllm-ascend / vllm-omni 版本或框架接入姿势变化、新增框架使能 / 回修 / 补齐经验、 或融合 pattern 使能集合变化时,按 dev-workflow 的复盘流程更新本 skill;框架特有开启方式与坑写入 对应 references/{framework}-*-enablement.md(实测数字入会话产物归档),正文只保留两分支共通回路与判据。

体积提示:本 skill 是能力层中负载最重者。若继续膨胀,优先把框架特定章节下沉为 references/{framework}-{variant}.md(渐进披露),正文只保留 §0 分支判定与 §1/§2 共通判据。 边界复查(改名后):分支 A = 开启 / 使用框架已存在的特性(含为使能的最小 glue 修复); 分支 B = 框架未支持特性的从无到有开发(合入姿势见 §2.4);mindiesd 仓内开发 → dev-workflow + pattern-dev / operator-dev / aclgraph-dev。

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

**精度验收标准**:凡是"改动不应改变结果"的场合(等价替换、算子/子模块融合、并行切分、 编译与图下发、拷贝消减),都按本标准判"合格 / 不合格"——等价分层(L1 逐位 / L2 数值门 / L3 有损门)+ 三级验收序(① 同配置重跑逐位 → ② 跨配置数值门 + 产物 md5 不变 → ③ 质量门)+ 判据不达标时的排障入口。当用户说"这个算子能不能换个写法/换个 kernel/等价实现/ 无损替换""替换后结果会不会变""怎么证明逐位一致""结果不对""花屏""尾部塌了" "CPU 跑对 NPU 跑不对",或发现某个 hotspot 占了大头(例如某类算子在阶段里占 90% 以上)想动手时, 都应触发;即使用户只说"这样改有没有把结果改坏""能不能判它是无损的"也应触发。 覆盖:等价分层与判据、满足本标准的实现约定(per-shape 对拍写进实现,把索引/相位/顺序类重写 错误在首次调用抓住)、per-shape 条件性等价(同一改动在不同形状下结论可能不同)、 判据不达标 → `references/silent-failure-localization.md` 排障入口、否决案例的形态学 (换写法未换 kernel / 差异极小仍非逐位 / 等价但 OOM)、以及收益口径的归属(性能数字一律交 `perf-gate`)。 **近义分流**:选量化档 / 特性选档(要不要开量化、开哪一档)→ `dit-perf-opt`; 并行选型(USP / CP / TP 怎么切)→ `dit-parallel-opt`;本技能只判"结果是否被改变", 不负责选档与选型。

The English summary is being prepared. Showing the original description.

Ascend/MindIE-SD15Updated Oct 17, 2026

NPU 图批量下发能力(aclgraph / aclgraph_ex 家族)的开发与调优。覆盖 mindiesd 的 aclgraph_backend:NPUGraph 静态 capture、全局 graph pool、 lazy capture、专用 copy stream + event 管线、shape/dtype 校验、max_entries 驱逐。 当用户需要减少 host launch 开销、静态 shape 大 batch 场景加速、 或排查 NPUGraph replay 输入不匹配问题时使用此 skill。 即使用户只提"批量下发""graph capture""图捕获"而未说 aclgraph,也应触发; pattern/Inductor 融合(default 后端)见 pattern-dev,算子本体见 operator-dev, 本技能只覆盖图批量下发。由 dev-workflow 的编译开发阶段与 model-auto-optimization 的 图下发场景指引加载。

The English summary is being prepared. Showing the original description.

Ascend/MindIE-SD15Updated Oct 17, 2026

MindIE-SD 核心算子(FA/BSA/GMM/MM)性能基准工具链。使用:模型优化(model-auto-optimization 的 S1/S4 选型)中用 mindie_bench 对单算子做实现级实测,按 dtype/量化档/稀疏度/形态对比 选出最优配置(产物:选型证据;稀疏度-性能曲线供 S4 稀疏度选型);开发:benchmarks/ 工具链扩展与新算子接入测试(供 operator-dev / pattern-dev 调用)。 当用户需要对比算子实现选型、新增或修改 benchmark 代码、排查 benchmark 数据异常、 给基准加算子/指标时使用;即使用户只说"benchmark 数据不对""给基准加个算子" "对比下这几个 FA 实现哪个快"也应触发;特性级方案选档请走 dit-perf-opt (本 skill 只做实现级实测)。 由 model-auto-optimization 的 S1/S4 选型场景与 operator-dev 的算子接入验证场景调用, 亦由 dev-workflow 在基准开发时指引加载。

The English summary is being prepared. Showing the original description.

Ascend/MindIE-SD15Updated Oct 17, 2026

MindIE-SD Python 代码格式与 lint 规则。当编写、格式化、lint 检查或审查 MindIE-SD 项目的 Python 代码时使用此 skill。 即使用户只提到"提个MR"或"代码好像有 lint 问题"而未明确说格式化,也应触发;Markdown 格式问题见 markdown-lint,提交/PR 规范见 mindie-sd-community-governance。 通常由 dev-workflow 在编码阶段指引加载。

The English summary is being prepared. Showing the original description.

Ascend/MindIE-SD15Updated Oct 17, 2026

MindIE-SD 仓库开发总入口(侧轨)。当用户进行 MindIE-SD 的任何代码开发工作时使用此 skill—— 包括但不限于写 pattern、改测试、部署到昇腾、跑 benchmark、性能分析、多卡并行、复盘归档。 模型/三方框架自动优化类任务(非本仓代码改动)由 model-auto-optimization 入口承接, 本入口只在优化流程需要新增 pattern/算子/部署代码时承接其指向的开发子任务。 即使用户未明确提到"开发流程",只要涉及 MindIE-SD 代码改动都应触发。

The English summary is being prepared. Showing the original description.

Ascend/MindIE-SD15Updated Oct 17, 2026

分布式并行策略选型与实测(USP / CP 通信掩盖 / CFG / TP/RSP/PP 概览;含拓扑相关选型 (按实测拓扑分域条件化:域内 bulk vs 跨域 head-parallel 翻转)与 AlltoAllV 缺陷绕过)。在 model-auto-optimization 中承担 S3:优先 USP、结合拓扑带宽差异选 CP,少量 step + 多 rank 验证特性开启与掩盖(产物:并行方案 + 多 rank 证据)。当用户需要多卡并行 策略选择、**序列并行形态抉择**(纯 Ulysses vs 复合 AllGather-KV×Ulysses:按 GQA / 跨域带宽 / 形态 plumbing 条件化定胜负)、**并行 × 稀疏叠加**(seam 契约:先汇聚后稀疏、 窗口偏移、块对齐、per-head 掩码;含「稀疏看似生效实则未生效」判定)、通信掩盖调优 (含**掩盖率上限**:1-1/n 何时成立、c/f 决定的真实上限、没生效的排查)、**并行方案 差异归因**(阶段 Δ 分解 / 集合通信按 communicator 归属 / 4→8 卡线性度),或排查多卡 跑不动 / 通信暴露大 / 换卡组 / 端口 bind / HCCL 带宽验证问题时使用;**并收编原并行作用域诊断**: 改了 SP/CP/Ulysses/AllGather-KV 后**不报错但结果没变/性能没变**、或小规模能跑大规模崩 (如 Ascend EE1003 coreDim 超限)时,用本技能证明"改动到底有没有生效"(判别量逐层收窄 + 两侧对照 + 日志≠生效,见 `references/scope-effectiveness-check.md`); 即使用户只说 "多卡跑不动""通信暴露大""为什么没达到 6/7 的掩盖率""CP 和 USP 该选哪个""CP 叠稀疏 怎么不生效"而未说并行,也应触发。特性档位/接口事实见 `docs/zh/features/parallelism.md` /`usp.md`(仓内真源),框架侧开启见 framework-integration; 本技能承载选型决策、monkey-patch 掩盖与多卡诊断实测。 由 dev-workflow 多卡场景触发,亦由 model-auto-optimization 的 S3 阶段触发。

The English summary is being prepared. Showing the original description.

Ascend/MindIE-SD15Updated Oct 17, 2026

See all skills by Ascend

Report a problem with this skill