Dynamic Model in TVM
417.46 KB
24 页
0 评论
语言 | 格式 | 评分 |
---|---|---|
zh | .pdf | 3 |
摘要 | ||
文档探讨了在TVM中支持动态模型的挑战与解决方案。动态模型涉及动态形状、控制流和数据依赖输出等特性,但TVM和 graph runtime 原本无法编译和运行这些模型。为此,引入了形状函数、虚拟机新运行时和动态代码生成等技术,以支持不同形状和动态输入的模型。文档还详细阐述了动态代码生成的挑战,包括单个内核在不同形状下的性能问题,以及TVM计算与调度的耦合问题。通过ResNet50的示例展示了动态模型的实现和执行流程。 | ||
AI总结 | ||
以下是对文档内容的简明总结:
### 文档标题:《Dynamic Model in TVM》
#### 主要内容:
1. **动态模型的特点**:
- 包含控制流(如if语句、循环等)和动态形状。
- 动态输入(如批次大小、图像大小、序列长度等)和数据依赖的操作输出形状(如arange、nms等)。
- 在循环中使用控制流(如while循环内的拼接操作)。
2. **TVM(Graph Runtime)的局限性**:
- 无法编译和运行动态模型,尤其是包含控制流和动态形状的模型。
3. **在TVM中支持动态模型的方法**:
- 支持任何维度(Any-dim)在类型系统中。
- 使用形状函数在运行时计算类型。
- 引入虚拟机(Virtual Machine)作为新的运行时。
- 动态代码生成(Dynamic Codegen),分为单个操作的内核调度和子图的图调度。
4. **动态代码生成的挑战**:
- 单个内核在不同形状下的性能差。
- 同一操作需要不同的模板。
- TVM的计算和调度逻辑耦合。
5. **API示例**:
- 展示了如何定义输入形状、加载模型、编译虚拟机并运行动态模型的代码示例。
- 代码支持批次大小、图像大小等动态调整。
6. **虚拟机字节码指令集**:
- 包括移动数据、返回结果、调用函数、分配内存等指令。
- 示例指令如:Move、Ret、Invoke、AllocStorage、AllocTensor等。
#### 总结:
文档重点介绍了TVM在支持动态模型方面的局限性及其改进方向,提出了通过动态代码生成和虚拟机运行时来支持动态形状和控制流的方法,并通过API示例和虚拟机指令集展示了实现细节。 |
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P11
P12
下载文档到本地,方便使用
- 可预览页数已用完,剩余
12 页请下载阅读 -
文档评分