一旦机器学习模型被转换为中间表示 (IR),其计算的逻辑结构就确定了。然而,初始图通常反映了用户定义的高级Python代码,优先考虑API的易用性而非执行效率。直接运行此图通常会导致次优的性能,原因在于过多的内存访问和重复计算。本章介绍图级别优化,这些是应用于计算图的架构层面转换,在代码生成开始之前进行。这些优化过程会重写图的结构,以减少计算开销和内存带宽占用,同时确保数学结果保持不变。您将学习编译器如何分析数据流来执行算子融合,这是一种将多个操作合并到一个核中的过程。例如,计算逐元素加法,然后是一个激活函数,例如$y = \text{ReLU}(x + b)$,通常需要将中间和写入主内存并再次读取。这种合并使得硬件可以在数据仍在寄存器或缓存中时对其执行激活操作。我们还将涉及以下优化技术:常量折叠: 在编译时计算具有静态输入的表达式,以便将其从运行时执行中移除。死代码消除: 识别并移除不影响最终输出的图节点。内存布局转换: 调整张量存储格式 (例如从NCHW切换到NHWC),以更好地与硬件特定的内存访问模式配合。公共子表达式消除: 检测图中重复的计算,并重构数据流,以便只计算一次结果。在本节结束时,您将掌握检查计算图的技能,并能够实现自定义优化过程以编程方式修改其结构。