【tvm官网教程】AutoTVM:基于模板的自动调优

本文档介绍了TVM中的AutoTVM模块,用于自动调优以优化性能。内容涵盖调优空间定义API、ConfigSpace、SplitEntity、任务创建、测量选项、调优器以及针对GPU、CPU的高性能CNN调优策略。通过定义搜索空间、应用调优器并在目标硬件上测量,AutoTVM能自动寻找最佳的计算调度。
摘要由CSDN通过智能技术生成

目的

理解华为的autotvm,先理解原生的。

1. autotvm模块

TVM中的自动调优模块,auto-tuning包括:

  • 调优空间定义API
  • 高效自动调优器
  • 调优结果和数据集支持
  • 分布式度量以扩大调优范围

1.1 API get_config()

tvm.autotvm.task.task.get_config()
获得当前的autotvm配置对象,返回值类型ConfigSpace或者ConfigEntity。

1.2 class ConfigSpace

class tvm.autotvm.task.space.ConfigSpace

1.2.1 define_split()

define_split(name, axis, policy=‘factors’, **kwargs)
定义一个可调节旋钮,用于将指定轴split。
policy–调优器策略:

  • factors 调优器将尝试所有可分解因子
  • power2 调优器将尝试2的幂次方的因子
  • verbose 调优器将尝试上述两个策略的并集
  • candidate 调试器根据指定的候选集进行尝试

policy额外的参数还有:

  • max_factor
  • filter
  • num_outputs: split之后轴的最大个数
  • no_tail:bool值,是否仅将可除数作为因子

1.2.2 class SplitEntity

classtvm.autotvm.task.space.SplitEntity(size)
成员函数只有一个apply。
apply(sch, op, axis)
sch-调度, op-stage, axis-将被切分的轴。

1.2.3 define_knob()

define_knob(name, candidate)
用候选集定义一个可调节旋钮。

1.3 task

tvm.autotvm.task
任务是模板函数的可调组成。

调优器执行可调任务,并优化任务中所有模板功能的联合配置空间。

1.3.1 create

Task = tvm.autotvm.task.task.create(task_name, args, target, target_host=None)
创建一个调优任务,并初始化搜索空间。

## 前面定义搜索空间,这里创建搜索任务
N, H, W, CO, CI, KH, KW, strides, padding = 1, 7, 7, 512, 512, 3, 3, (1, 1), (1, 1)
task = autotvm.task.create("tutorial/conv2d_no_batching", args=(N, H, W, CO, CI, KH, KW
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值