开发者
资源
[object Object]

MindIE SD 基于 PyTorch 的 [object Object] 编译器提供自定义后端 [object Object],在昇腾芯片上提供两套互补的加速能力:

  • Pattern 融合:利用 Pattern Matcher 将常见算子组合自动替换为昇腾融合算子,减少 kernel 启动开销
  • ACLGraph 加速:通过 [object Object] 将计算图捕获为静态执行图,replay 时跳过动态图调度

两项能力通过 [object Object] 统一控制。

[object Object]
[object Object]

两种加速能力共享相同的入口:对模型或其子模块调用 [object Object] 并指定 [object Object]

对 transformer 整体 compile:

[object Object]

对单个 Module 使用装饰器:

[object Object]

对 forward 函数使用装饰器:

[object Object]
[object Object]

[object Object] 内置了多组算子融合 Pattern,编译时自动匹配并替换为昇腾优化算子。各 Pattern 的开关可通过 [object Object] 单独控制:

[object Object]

各融合算子的详细 API 说明请参见

[object Object][object Object]
[object Object]

作为 [object Object][object Object] 参数传入,自动启用 Pattern 融合和 ACLGraph 加速。

[object Object]
[object Object]

Pattern 融合的开关通过 [object Object] 控制:

[object Object]undefined
[object Object]

在 Pattern 融合的基础上,可进一步启用 ACLGraph 将优化后的图捕获为静态执行计划。

[object Object]

[object Object][object Object] 互斥,同时开启时 [object Object] 优先级更高。

[object Object]undefined
[object Object]

在上方 的基础上,调用前配置 [object Object] 即可启用:

[object Object]
[object Object]

语音等场景下输入长度不固定,可通过外部 padding 适配:

[object Object]
[object Object]
  • 环境依赖:仅昇腾 NPU 环境支持
  • 输入 shape:运行时输入 shape 须与捕获时一致,变更会触发重新捕获
  • 动态特性:不支持动态 shape、动态 control flow 或 conditional branching
  • 首次耗时:首次触发图捕获存在一次性耗时开销
  • graph.update:不提供 [object Object] 接口(该接口用于 LLM 场景动态注入 attention metadata,SD 场景不需要)
  • 配置时机[object Object] 需在 [object Object] 调用前完成配置
[object Object]
  • 相关的定位手段与PyTorch的compile一致,中定义了日志模块,开启后,可以观察到pattern使能前后的图变化情况。配合torch.compile缩小范围,可以识别pattern失效的原因。
  • 通过控制compile的范围,可以有效控制问题定位的范围。
  • 其他定位手段可以参考官网。