TVM InferType

Table of Contents

1. TVM InferType

TVM 进行优化和 schedule 时, 各个 op 的 output_shape 是至关重要的. InferType 是根据各个 Relay OP 注册的 TypeRelation 来推测它们的 output_type 和 output_shape.

另外, 在 Relay 优化过程中, 每个 pass 都可以修改/添加/删除 op, 所以每个 pass 之后都需要重新 InferType

1.1. Example

import tvm
from tvm import relay
import numpy as np


def get_demo_mod():
    a = relay.var("a", shape=(2, 3, 10), dtype="float32")
    b = relay.var("b", shape=(1, 10), dtype="float32")
    c = relay.add(a, b)
    func = relay.Function([a, b], c)
    mod = tvm.IRModule.from_expr(func)
    return mod


mod = get_demo_mod()

print("------before InferType------")
try:
    print(mod["main"].body.checked_type)
except Exception:
    print("can't get checked_type")

print("------after InferType------")
mod = relay.transform.InferType()(mod)
print(mod["main"].body.checked_type)

-–—before InferType-–— can't get checked_type -–—after InferType-–— Tensor[(2, 3, 10), float32]

Author: [email protected]
Date: 2021-10-18 Mon 00:00
Last updated: 2022-01-24 Mon 19:34

知识共享许可协议