constant folding、operator fusion等ONNX Runtime的图优化有哪些?constant folding、operator fusion等
ONNX Runtime 在加载 ONNX 模型后会做一系列 图级优化(graph-level passes),在保持语义等价的前提下减少 op 数、减少访存、提升执行效率。常见包括:常量折叠、算子融合、冗余消除、layout 转换、子图替换(用更快的融合 op 替代多 op 子图)等。
Constant folding:若某 op 的输入都是 常量(如 initializer 或前序 fold 的结果),在 编译时 直接算出该 op 的输出,用 常量 替换该节点,从而减少运行时计算。例如 Add(Const(1), Const(2)) → 替换为 Const(3)。可递归做,直到没有新的常量可算。收益:少 kernel、少中间 tensor,有时还能触发后续更多融合。
Operator fusion:把 多个小 op 合并成一个融合 op(如 Conv+BN+Relu → 一个 FusedConvBNRelu kernel),减少 kernel launch 与中间结果读写。OR 内置多种 融合规则(pattern:某一子图 → 一个融合 op);也支持 EP(Execution Provider) 提供的融合(如 CUDA EP 的 Conv+Add+Relu 等)。与 constant folding 配合:先 fold 掉常量,图更简单,融合 pattern 更易匹配。
| 返回模块 | 返回总览 |