TVM relay opt_level说明
最近在研究TVM,一直对opt_level应该怎么填有疑惑
with relay.build_config(opt_level=1):
graph, lib, params = relay.build_module.build(
mod, target=target, params=params)
今天查了官方文档,在这里作一下笔记:
tvm.relay.transform
relay转换基础结构。
tvm.relay.transform.build_config(opt_level = 2,fallback_device = cpu(0),required_pass = None,disabled_pass = None )
通过设置配置变量来配置构建行为。
Paramters
opt_level(int,可选)–
优化级别。优化阶段名称和级别如下:
OPT_PASS_LEVEL = {
"SimplifyInference": 0, // 简单推理
"OpFusion": 1, // op融合
"FoldConstant": 2,
"FoldScaleAxis": 3,
"AlterOpLayout": 3,
"CanonicalizeOps": 3,
"CanonicalizeCast": 3,
"EliminateCommonSubexpr": 3,
"CombineParallelConv2D": 4,
"CombineParallelDense": 4
}
fallback_device(INT,STR,或tvm.TVMContext ,可选) -备选设备。对于异构执行期间没有指定设备的操作员,它也用作默认设备。
required_pass(str的集合,可选)–无论优化级别如何,都需要进行优化。
disabled_pass(str的集合,可选)–优化过程在优化过程中被禁用。
Returns
pass_context –优化的内容。
Return type
PassContext
可能对***OPT_PASS_LEVEL***有解释得不对的地方,欢迎大家指正。