【infra之路】静态图和动态图

静态图 是先建好整张图再灌数据;动态图 是边运行边建图。区别在于图什么时候被构建、建完能不能改 。

本质上不管是静态图还是动态图都是由3个部分组成的Tensor、算子(Ops)、依赖关系Edge

这是我们在图捕获得到静态/动态图之后需要这个图Lowering到相应的中间层IR做相关的优化。可以看

编译优化过程

三大基本概念

概念 角色 例子
张量 Tensor 数据载体(边) 输入 x、权重 W、中间结果 h
算子 Op 计算单元(节点) MatMul、Add、ReLU
依赖关系 Edge 决定执行顺序 谁是谁的输入/输出

计算图 = 算子 + 张量 + 依赖关系。三者缺一不可。

静态图 vs 动态图

维度 静态图 动态图
建图时机 运行前一次性建好 运行时逐操作构建
图结构 固定不变 每次运行可变
定义与执行 分离 合一
控制流 专用算子(tf.cond) 直接用 Python if/while
调试 难 易
优化 全局优化强 优化受限
速度 快、可预测 灵活但开销略大
部署 图可序列化,方便 常需转换
代表 TF 1.x、tf.function PyTorch、TF 2.x Eager

形象比喻

  • 静态图:先画好电路图,再通电。图固定,数据流过。
  • 动态图:边走边铺路。走到哪建到哪,用完就丢。

控制流差异(最直观)

复制代码
静态图:两条分支都画进图里,运行时选一条
动态图:只建实际走到的那条分支

现代框架的折中

复制代码
开发阶段(动态图)          部署/加速(静态图)
   易调试、灵活      ──►      高性能、可部署

PyTorch:  Eager  ──► torch.compile / TorchScript
TF 2.x:   Eager  ──► @tf.function

趋势:默认动态图,需要时编译成静态图。

最终结论

  1. 计算图 = 算子 + 张量 + 依赖关系。

  2. 静态图赢在性能和部署 ,动态图赢在灵活和易调试。

  3. 现代框架不再二选一,而是动态为主、静态为辅,兼顾开发效率与运行性能。

    复制代码
              静态图                    动态图
          先建完整图                边运行边建图
               │                         │
               ▼                         ▼
        结构固定、可优化            结构灵活、易调试
               │                         │
               ▼                         ▼
         部署快、性能好              开发快、控制流自然
               │                         │
               └──────────┬──────────────┘
                          ▼
               现代框架:默认动态 + 按需静态
相关推荐
山顶夕景1 天前
【VLM】DeepSeek-V4.1-Flash: Pushing the Limits of KV Cache Compression
多模态·kv·vlm·infra
DeepLink_20251 个月前
Triton第五课:分组矩阵乘调优
算子·infra·技术科普
xier_ran1 个月前
【infra之路】AWQ 详解:激活感知权重保护,让 W4A16 量化精度超越 GPTQ
线性代数·算法·机器学习·量化·infra
xier_ran2 个月前
【infra之路】Shared Memory 的访问范围:严格限定于单个 SM
java·运维·网络·infra
xier_ran2 个月前
【infra之路】AI 编译器(二):后端优化
人工智能·状态模式·infra
xier_ran2 个月前
【infra之路】关键词解释GEMM、cuBLAS / cuDNN、Bank Conflict、Tile、Tiling、库 Lowering
人工智能·infra
xier_ran2 个月前
【infra之路】从 KV Cache 到逐层语义:理解 Decoder-Only LLM 的推理过程
llm·infra
前端Baymax3 个月前
Memory Search索引模型不匹配故障
ai·agent·infra
非社会人士6 个月前
RL 系统 Infra 笔记:区分不同模型
强化学习·rlhf·rl·ppo·verl·infra