XIR - 3.5 简体中文

Vitis AI 用户指南 (UG1414)

Document ID
UG1414
Release Date
2023-09-28
Version
3.5 简体中文

XIR 包含运算符 (Op)、张量 (Tensor)、计算图 (Graph) 和子计算图 (Subgraph) 库,可清晰灵活地呈现计算图。XIR 具有存内格式和文件格式,可支持不同用途。存内格式 XIR 为计算图对象,文件格式为 XMODEL。计算图对象可序列化为 XMODEL,而 XMODEL 亦可反序列化为计算图对象。

在 OP 中,有一组精确定义的运算符,可涵盖常用深度学习框架,例如 TensorFlow、PyTorch 和 Caffe1,以及所有内置 DPU 运算符。这样不仅能增强表达式的功能,还能达成核的主要目标之一:消除这些框架之间的差异,并为用户和开发者提供统一的表示法。

XIR 还提供名为 PyXIR 的 Python API,使您能够在 Python 环境中完整访问 XIR。您可凭借 PyXIR 搭配现有 XIR 工具来协同开发和集成 Python 工程。有此集成,就无需再耗费大量精力来弥合不同语言之间的差异。

图 1. 基于 XIR 的流程

xir::Graph

计算图 (Graph) 是 XIR 的核心组件。它包含多个重要的 API,例如,xir::Graph::serializexir::Graph::deserializexir::Graph::topological_sort

计算图就像是容器,可保存运算符作为其顶点,并利用“生产者 - 使用者”关系作为边缘。

xir::Op

XIR 中的运算符是 XIR 中的运算符定义的实例或者是从 XIR 扩展的运算符定义的实例。所有运算符实例都只能由计算图根据预定义的内置/扩展运算符定义库来进行创建或添加。运算符定义主要包含输入实参和内部固有属性。

除了预定义的内部固有属性外,运算符实例也能通过应用 xir::Op::set_attr API 来携带更多外部非固有属性。每个运算符实例都只能包含单个输出张量,但可包含多个扇出运算符。

xir::Tensor

张量是 XIR 中的另一个重要的类。不同于其他框架的张量定义,XIR 的张量仅描述它所表示的数据块。实际的数据块则排除在张量外。

张量的关键属性为数据类型和形状。

xir::Subgraph

XIR 的子计算图是类树层级,将一组运算符分割为多个不重叠的集合。计算图的整个运算符集合可视作为根。子计算图可嵌套,但不得重叠。嵌套的内部子计算图必须为外部子计算图的子集。

1Vitis AI 2.5 版起,弃用 Caffe。如需了解更多信息,请参阅《Vitis AI 2.0 用户指南》。