芯片层 开放阅读

图优化

Graph Optimization

概念 ID
graph-optimization
更新时间
2026-05-29
来源数量
待补

图优化

3 秒看懂

  • 图优化(Graph Optimization)是深度学习编译器和运行时对计算图(有向无环图或动态图)进行自动改写的过程,在不改变模型语义的前提下提升执行效率、降低资源消耗。
  • 类比:把未优化的 Python 循环代码交给编译器自动做循环展开、公共子表达式消除,图优化就是在“计算图”层面自动完成类似的性能魔术。
  • 核心动作:算子融合、常量折叠、死节点消除、内存布局转换、并行切分、代数化简等数十种图重写规则。它是通往“写一次,高效跑在所有硬件”的关键阶梯。

3 分钟产业解释

在现代 AI 工程化流程中,模型被表达为计算图(如 TensorFlow Graph、PyTorch FX Graph、ONNX graph)。图优化作为编译器栈(如 XLA、TVM、MLIR-based 编译器)和推理引擎(如 TensorRT、OpenVINO)的核心模块,在不侵入模型代码的情况下实现:

  • 训练侧:通过图优化生成更高效的反向传播图、减少内存分配、融合小算子以降低 kernel launch 开销,直接缩短每步训练时间。
  • 推理侧:极其关键。云端推理要求高吞吐与低延迟,边缘推理受限于内存、带宽和功耗。图优化可以消除冗余计算(如将 BatchNorm 折叠进卷积权重)、将多个算子融合为一个 GPU kernel、将 int8/float16 量化误差补偿到图中。
  • 硬件适配:不同 AI 芯片(GPU、TPU、NPU)的指令集和内存层级迥异,图优化负责将高级计算图变换为适配硬件特性的定制结构,其中算子分派、张量排布(layout)、内存规划、多流并行均通过图层面的变换完成。

产业痛点:模型越来越大的同时,硬件多样性暴涨。手工针对每种硬件写高性能实现已不可能,自动化、可组合的图优化已成为 AI 基础设施的“必选项”,推动着 MLIR、Halide、TVM 等可重定目标的编译技术走向舞台中央。

15 分钟专家深入

计算图形态与优化空间

  • 静态图(声明式,代表:TensorFlow 1.x、XLA HLO、ONNX):完整图在运行前已知,允许全局优化(如全图内存规划、跨步融合、通信与计算重叠定制)。
  • 动态图(命令式,代表:PyTorch eager):逐步构建和执行,图结构依赖实际数据流;可通过 JIT 捕获(TorchDynamo / torch.jit.trace)提取出一段可优化的子图,然后进行区域图优化。
  • 图层级 IR:框架将模型前端算子(如 conv2d、gelu)Lower 到中间表示(IR),图优化在该 IR 上做模式匹配和重写。常见的 IR 层次有 High-level IR(接近源算子)、Operator-level IR(适合融合、重排),和 Low-level IR(贴近硬件,进行指令级优化)。

典型的图优化技术族

  • 图精简:公共子表达式消除(CSE)、死代码消除(DCE)、常量折叠(将仅依赖常量的子图提前计算出结果)、形状推断(消除动态尺寸带来的部分开销)。
  • 算子融合:垂直融合(如 Conv + BatchNorm + ReLU 合为一个 kernel,省去多次内存读写)、水平融合(将多个相同形状、相同操作的张量批处理为一次调用,提升 GPU 利用率)。
  • 内存与布局优化:通过图分析启用内存重利用(in-place 操作、buffer 复用),以及布局变换(如 NCHW→NHWC、FP32→FP16 插入 cast 尽可能落在融合区内以减少带宽)。在训练图中更是通过重计算 / checkpointing 用计算换内存,这都是图级别变换。
  • 并行与分布优化:在图层面切分张量(模型并行)或插入通信原语(AllReduce、All-to-All),并通过流水线调度(如 GPipe)将微批次交错,提升分布式训练的显存效率。编译器可自动搜索切分策略,改写图结构。
  • 代数化简:利用数学等价性将复杂算子组合转换为更高效的等价形式,如将多个小卷积替换为一个大卷积(空间融合)、将 gather+concatenate 替换为张量重塑等。

图优化编译器架构

典型的深度学习编译器将图优化分层:

  1. 前端转换:从框架图(TensorFlow Graph、PyTorch FX)转为编译器 IR。
  2. 高层图优化:进行算子融合、布局变换、常数传播。该阶段的 IR 保留高级运算语义(如卷积、矩阵乘),方便模式匹配。
  3. 低层图优化 / 张量化:把高层算子 Lower 成低级循环/张量计算表达(如 Halide、TVM TensorIR),并在此层进行自动调度(auto-tuning),选择最优的并行参数、unroll 因子等。
  4. 代码生成:生成特定硬件后端代码(LLVM IR、CUDA C、SPIR-V、自定义 ISA)。

整个过程可视为一系列 图重写 pass 的管线。每个 pass 遍历图、匹配子图模式并替换为优化后的子图。这些 pass 的组合顺序由编译优化策略(多数厂商有预置调优流水线)决定。

技术原理(最深·机制与关键参数)

图优化的本质是在保持计算图的语义等价性前提下,通过局部/全局图变换降低执行开销。核心机制包括模式匹配与图重写、数据流分析、成本模型驱动的搜索。

计算图形式化

一个计算图 G=(V, E),节点 V 为运算(ops),边 E 为张量流动。每个节点定义输入/输出张量形状、数据类型、运算属性(如卷积的 stride、padding)。图优化变换 τ: G → G‘,满足:对任意合法输入,G 和 G’产生的输出在数学上一致(或误差在数值容忍范围内)。

常用重写机制示例

1) 算子融合(以 Conv-BN-ReLU 为例)

原始子图 (conv-> batch_norm -> relu) 可以改写为一个融合节点 conv_bn_relu,其内部算法直接在一次 kernel 启动内完成:卷积计算后,进行 BN 的乘加,就地应用 ReLU 激活,然后将结果写回全局内存。这消除了中间张量的显存分配和多次全局内存读写。

原始图:
  input -> Conv2D -> tmp1
  tmp1 -> BatchNorm -> tmp2
  tmp2 -> ReLU -> output

重写后:
  input -> FusedConvBNReLU -> output

2) 常量折叠 (Constant Folding)

当子图中所有输入节点都是常量(如权重、固定值)时,编译器可在编译期提前算出该子图的结果张量,并替换原图为一个常量节点,运行时无需计算。例如,shape 计算 Reshape(constant_shape) 可在编译期完成,消除 runtime shape 计算开销。

3) 布局与内存复用

若分析发现张量 A 的生命周期与张量 B 不重叠,且尺寸兼容,编译器可插入别名(alias)节点,让 A 和 B 共用同一段内存块,图重写为:

A = op1()
B = op2()   // 使用 A 的 buffer
...

进一步,若发现某一计算链的输出只被后续算子使用且原始输出不再被引用,可引入 in-place 操作:直接将结果写回输入内存(如 in-place ReLU)。图层面表现为一个标记,代码生成时遵循。

4) 数据流驱动的并行化切分

图优化器可自动寻找张量切分轴(如 batch 维或 hidden 维),将一个大节点 S 替换为多个并联小节点 S₁…Sₖ,并在图里插入相应的通信和合并操作。常见实现通过引入“虚拟 SPMD”指令,将 gpu 计算前的分块、线程绑定映射为图上的 “shard” 和 “merge” 节点。

搜索式优化(Auto-Tuning)

对于低层算子实现(如矩阵乘、卷积),图优化编译器常使用成本模型 + 自动调优。TVM 中的 AutoTVM/Ansor 为每个图节点生成大量可能的低级代码变种,使用机器学习预测执行时间,挑选最优实现,将最佳低级实现注入图。这一过程是图优化的下延,实现对硬件微架构的适配。

典型图优化管线伪代码(用Python概念表示)

graph = import_model(model)        # 从框架获取计算图
for p in optimization_passes:
    if p == "constant_folding":
        graph = fold_constants(graph)
    elif p == "fuse_ops":
        patterns = [conv_bn_relu, lstm_cell_fuse, ...]
        graph = apply_pattern_fusions(graph, patterns)
    elif p == "memory_planning":
        graph = allocate_buffers(graph, reuse_policy)
    elif p == "layout_transform":
        graph = convert_layout(graph, target="NHWC")
    ...
graph = lower_to_code(graph, target)

关键参数(定性):

  • 优化 pass 数量:通常数十至上百种,部分受制于 IR 能力。
  • 模式匹配规则数量:用户可自定义。如 ONNX Runtime 内置数百条融合规则,TensorRT 使用 pattern matching API 进行复杂子图替换。
  • 搜索空间大小:自动调优时,算子实现变种可达百万级,编译器利用抽样和成本模型剪枝。

技术演进史

  • 2015–2017:框架内嵌图优化萌芽
    TensorFlow 1.0 将计算定义为静态图,随后引入 Grappler 模块进行图修剪、常量折叠和布局优化,但这些优化相对固定。Caffe 和早期的框架几乎没有编译层。
  • 2018–2019:专项编译器登场
    Google 发布 XLA(Accelerated Linear Algebra),采用 HLO IR,通过全图融合、缓冲区别名等技术大幅提升 TPU/GPU 性能。同期,Intel 推出 nGraph(后演变为 OpenVINO 的一部分),NVIDIA 发布 TensorRT 以推理为中心,融合大量算子,并量化到 INT8。
  • 2019–2020:动态图拥抱图优化
    PyTorch 成为主流,其动态图阻碍全局优化。于是 PyTorch 引入 TorchScript(JIT)及后续的 torch.fx,允许用户在模型代码部分区域获取图表示并应用优化 pass。ONNX 作为开放标准使得图优化可在框架间共享。
  • 2021–至今:统一编译器基础设施
    MLIR(Multi-Level IR)生态兴起,允许不同层次的图优化组合和复用。TVM 将 Relay IR(高层图优化)与 TensorIR(低层自动调度)分离,实现端到端自动化。Apache TVM 社区和 MLIR-based 编译器如 IREE、CIRCT 逐步推进。动态形状图优化、自动微分与图优化融合、面向稀疏和混合精度的图重写成为前沿。
  • 近期趋势:图优化与神经网络结构搜索(NAS)结合,将硬件性能反馈到图变换决策;AI 编译器的图优化开始采用学习-based 启发式(如用 GNN 预测融合收益);MoE 等大规模稀疏模型催生动态路由与异步通信的图级编排。

技术路线对比(量化表)

下方比较基于公开技术特性,未获得具体性能数字,因此采用定性标签表示能力。

对比维度TensorFlow GrapplerTorchDynamo/InductorXLA (HLO)TVM (Relay + TensorIR)ONNX Runtime (Graph Optimizer)TensorRT
优化层级高层图裁剪、布局中层原语融合、底层 Triton/Inductor 代码生成全图融合、内存别名、布局高层算子融合 + 低层自动调优高层融合、常量折叠、布局高层算子融合、量化、内核自动调优
支持的图模式静态图动态图(捕获子图)静态图(JIT 或 AOT)静态图(Relay)及动态形状支持静态图(ONNX 格式)静态图(序列化引擎)
算子融合Conv-BN-ReLU 等基础通用融合 + 水平批处理激进全图融合,可生成巨型 kernel可自定义融合 pattern大量预置规则,可扩展极致融合,结合内核调优
内存优化中(buffer 别名)后端依赖强(缓冲区别名、重计算插入)强(内存规划、内存重用)中(内存规划)中(显存优化)
量化和压缩int8 通过 TF Lite依赖后端原生 bf16/fp16可插入量化 pass支持 INT8/FP16,剪枝支持 INT8/FP8/稀疏
硬件后端CPU, GPUNvidia GPU (Triton), CPU (C++ 代码生成)TPU, GPU, CPU广泛(CPU/GPU/专有加速器)CPU/GPU/FPGA/NPUNVIDIA GPU
自动调优能力依赖底层编译器针对 TPU/GPU 有静态调度强(AutoTVM/Ansor)对 kernel 参数自动调优
主要适用场景训练与推理(TF 生态)PyTorch 训练/推理大规模训练/TPU 推理端到端部署及硬件研究跨框架推理部署NVIDIA GPU 峰值推理

注:上述比较反映典型配置与社区公开能力,实际表现因版本、硬件和模型结构而异。

上下游

上游:模型表达与框架前端

  • 框架前端:PyTorch (torch.fx)、TensorFlow (tf.function)、JAX 等生成高层计算图。图优化必须尊重前端语义(如自定义 autograd、控制流)。
  • 中间表示与编译器:MLIR、Relay、HLO 等定义 IR 范式,决定可优化的图操作集合。框架厂商与开源社区持续扩展 IR 以支持新算子(如 attention、MoE dispatch)。
  • 模型格式标准:ONNX 提供可移植的图优化目标格式,大量厂商在其上构建优化器。

下游:执行引擎与硬件

  • 推理引擎:TensorRT、OpenVINO、MIGraphX、TFLite、ExecuTorch 等将优化后图编译为可在目标设备装载的 Engine。
  • 硬件抽象:图优化器最终输出被编译为与硬件紧密耦合的低级代码(CUDA kernel、Vulkan compute shader、DSP 指令、NPU 专用流图)。硬件厂商(NVIDIA、Intel、AMD、高通、华为)提供自己的图优化 API 或编译器插件。
  • 系统运行时:优化后图可集成到服务框架(如 Triton Inference Server、TF Serving),实时图中处理动态 batch、请求合并等。

关键指标(定性)

评估图优化效果的常用维度:

  • 执行延迟/吞吐:单次推理耗时(ms)或每秒处理 token 数。测试通常使用标准 Benchmark(MLPerf)在相同硬件上进行优化前后对比。
  • 峰值显存/内存占用:优化后模型在给定 batch size 下所需的设备内存是否减少,直接影响大模型部署可行性。
  • 首次编译时间:图优化 pass 本身耗时,对于在线 compile 且部署新模型频繁的场景影响工程效率。
  • 算子数目:融合前后图中独立算子数量,越少通常 kernel launch 开销越低。
  • 带宽利用率:通过优化后的内存访问模式,提升计算与带宽重叠比例。
  • 可移植性损失:过度定制硬件优化的图可能失去通用性,需平衡。

无具体定量数据(搜索未获得),公开评测(如 MLPerf Inference)可提供相对比较。

供需与市场数据

注意:本次搜索请求未返回具体的市场统计数据,以下基于行业公开知识做定性概述,不引述确切数字。

  • 需求端:大型语言模型(LLM)和生成式 AI 将推理成本推至产业核心关注点。图优化通过提升吞吐、降低延迟与成本,直接影响 API 经济模型的盈亏平衡。预计未来数年,云端/边缘的 AI 推理 Workload 将占据超过 90% 的 AI 算力消耗(据行业共识),由此驱动图编译器和优化工具成为刚性需求。
  • 供给端:开源框架(如 PyTorch 2.0 内置 Inductor 编译器)与商业方案(NVIDIA TensorRT、Intel OpenVINO、Qualcomm AI Engine Direct)并行发展。云端服务商(AWS、阿里云、火山引擎等)均推出定制化的图优化推理服务。MLIR 等统一编译器标准降低了硬件厂商自研优化工具的成本,促进行业供给。
  • 产业动向:AI Infra 的融资活跃度近年明显上升,以 ML compiler 为核心技术的初创公司(Modular、OctoML 等)获数轮融资,显示资本对“软硬协同优化”赛道的青睐。不过具体融资额和数据未获得,无法引用。

代表公司与资本映射

  • 谷歌:XLA 编译器和 JAX 生态,主导 TPU 图优化。MLIR 开源项目发源地,与 TensorFlow 深度绑定。
  • Meta:PyTorch 2.0 的 torch.compile 使用 TorchDynamo 捕获图,结合 Inductor(基于 Triton)或 AOTAutograd 执行优化。在开源社区影响力巨大。
  • 微软:ONNX Runtime (ORT) 作为跨平台推理优化引擎,集成多种图优化,并支持训练优化。深度参与 MLIR。
  • 英伟达:TensorRT 是 GPU 推理的效率标杆,通过图优化 + 内核调优服务自家硬件。未来 Grace-Hopper 等硬件推出将联合图编译器进一步突破内存墙。
  • 英特尔:OpenVINO 支持 CPU/VPU/GPU 推理,包含一套图优化及量化工具。oneAPI 生态包含 Graph Compiler。
  • 初创力量:Modular(推出 Mojo 语言和统一 AI 引擎,图优化为核)、OctoML(基于 TVM 的商业化部署平台)、MosaicML(已被 Databricks 收购,训练图优化用于高效 LLM 训练)等。这些公司获得了大量风险投资(无具体数字),反映了市场对图优化价值的认可。

投资逻辑

  1. AI 效率基座:大模型参数量每年指数级增长,硬件摩尔定律放缓,图优化成为连接算法与硬件的核心效率环节。拥有高级图优化能力的推理平台将在每 token 成本上取得竞争优势。
  2. 软硬协同壁垒:在图优化层面深度适配特定硬件(如 GPU 张量核心、TPU 脉动阵列),能够形成技术护城河,原因是优化规则和调优流程需要针对微架构精心设计,替代成本高。
  3. 开源商业化路径:基于开源编译器(MLIR、TVM)提供企业级支持、自动化调优平台和硬件抽象层的商业模式正在成熟,符合云厂商降低 TCO 的需求。
  4. 风险提示:开源社区快速迭代可能削弱商业优化方案的价值;硬件厂家自研编译器可能封闭生态;图优化可能被更上层技术(如直接生成高效代码的 LLM)部分替代,但短期内尚难颠覆。

常见误读纠偏(≥2)

  • 误读:图优化只对推理重要,训练用不着。
    纠偏:训练中的图优化同样关键。例如,XLA 通过融合前向和反向 pass 中的算子,可节省大量 GPU 显存,且能减少 kernel launch 延迟,提升训练吞吐。PyTorch 2.0 的 torch.compile 对训练加速效果显著。同时,重计算/checkpointing 就是训练图优化的典型,用计算换内存,使得大模型训练可行。

  • 误读:算子融合就是图优化的全部。
    纠偏:算子融合只是图优化技术栈中的一个成员。真正的图优化还包括内存布局重排、跨步通信融合、动态并行化、代数化简、量化插入等多种变换。只强调融合会忽视内存规划和并行策略带来的同等量级收益,低估了编译器级优化的复杂度。

学习路径

  1. 理解计算图:学习 PyTorch 的自动微分机制和 torch.fx,动手获取模型图并进行简单遍历。
  2. 编译原理基础:了解 LLVM IR、MLIR 架构,理解 Pass Manager、图重写模式(Rewrite Pattern)。
  3. 专研图优化编译器:阅读 TVM 文档,运行教程优化一个 ResNet,体会 Relay 图层优化和自动调优。
  4. 深入学术论文:参考 “TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems”、“TVM: An Automated End-to-End Optimizing Compiler for Deep Learning”、“XLA: Optimizing Compiler for Machine Learning”,以及综述 “The Deep Learning Compiler: A Comprehensive Survey”。
  5. 动手实践:在 ONNX Runtime 中注册自定义融合规则;用 PyTorch 2.0 torch.compile 输出优化后的 FX 图进行分析;尝试在 MLIR 中添加一个简单的 pass。

一句话总结

图优化是 AI 基础设施的“翻译官兼体能教练”,将人类偏好的高级模型表示,转化为硬件诚服的高效执行图,其深度决定了 AI 从实验室走向规模化部署的能效天花板。

延伸阅读与来源

  • Abadi, M. et al. “TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems.” 2015.
  • Google, “XLA: Optimizing Compiler for Machine Learning.” TensorFlow documentation.
  • Chen, T. et al. “TVM: An Automated End-to-End Optimizing Compiler for Deep Learning.” OSDI 2018.
  • The MLIR Team, “MLIR: A Compiler Infrastructure for the End of Moore’s Law.” 2020.
  • NVIDIA, “TensorRT Developer Guide.” (最新版本参考官方文档)
  • Li, M. et al. “The Deep Learning Compiler: A Comprehensive Survey.” IEEE TPDS 2021.
  • PyTorch 2.0 官方博客和技术报告关于 torch.compile 和 TorchDynamo 的说明。
  • ONNX Runtime GitHub 仓库及图优化相关文档。

(因检索工具限制未能获取实时资料,以上引用自公开可查的行业论文、文档,具体性能与版本特性以官方最新发布为准。)

source: 公开披露与公开资料整理 本页仅用于产业链学习、信息检索和研究辅助;不构成投资建议,不预测涨跌,不提供买卖、仓位或目标价建议。
完整概念页 复盘 13 节结构 公司投研页 沿产业链找到受益公司 投资课 把概念转成可跟踪模型