在使用深度学习框架时,您使用高级Python抽象来定义模型。然而,为了为GPU或加速器生成高效的机器代码,编译器需要一个更具结构性和明确的程序视图。这种内部格式称为中间表示 (IR)。IR充当框架前端和硬件后端之间的通用语言,使编译器能够分析代码结构,而不必依赖源语言的特殊性。在本章中,我们将考察机器学习模型如何转换为计算图。与标准软件编译器中使用的通用IR不同,ML编译器IR是特定于领域的。它们将张量操作视为一等公民。您将看到模型如何表示为有向无环图 (DAG),其中节点表示运算符,例如卷积或矩阵乘法,边表示数据流。我们将介绍以下核心内容:数据流图: 操作之间的依赖关系如何决定执行顺序并实现并行。张量元数据: 编译器如何管理形状信息和数据类型 (dtypes)。例如,验证形状为 $(M, K)$ 和 $(K, N)$ 的张量之间的矩阵乘法会产生形状为 $(M, N)$ 的输出。形状编译: 静态形状(维度在编译时已知)和动态形状(维度根据运行时输入而定)之间的区别。最后,我们将练习检查TVM或MLIR等工具生成的IR。能够读取这种表示形式是调试图转换和理解某些优化成功或失败原因的必备技能。到本节结束时,您将对编译器在开始优化过程之前如何看待您的神经网络有一个清晰的思维模型。