为 x86 CPU 自动调度神经网络
备注
单击 此处 下载完整的示例代码
针对特定设备和工作负载自动调优,对于获取最佳性能至关重要。本文介绍如何使用 auto-scheduler 为 x86 CPU 调优整个神经网络。
为自动调优神经网络,将网络划分为小的子图并独立调优。每个子图被视为一个搜索任务,任务调度器对时间进行切片并动态地为这些任务分配时间资源,并预测每个任务对端到端执行时间的影响,优先考虑最能减少执行时间的任务。
对于每个子图,使用 tvm/python/topi
中的计算声明来获取张量表达式形式的计算 DAG。然后使用 auto-scheduler 来构建这个 DAG 的搜索空间并搜索合适的调度(底层优化)。
与基于模板的 AutoTVM(依赖手动模板来定义搜索空间的) 不同,auto-scheduler 不需要任何调度模板。换言之,auto-scheduler 只使用 tvm/python/topi
中的计算声明,不使用现有的调度模板。
注意,本教程无法在 Windows 或最新版本的 macOS 上运行。如需运行,请将本教程的主体放在 if __name__ == "__main__":
代码块中。
import numpy as np
import tvm
from tvm import relay, auto_scheduler
from tvm.relay import data_dep_optimization as ddo
import tvm.relay.testing
from tvm.contrib import graph_executor