Разница в параметрах графа и библиотеки после relay.build_module.build() в библиотеке TVM

В библиотеке TVM, когда _relay.build_module.build()_ используется, каков результат вывода после relay.build а также tvm.build

И в чем разница и потребность в двух выходных параметрах - графике и библиотеке - которые впоследствии используются для запуска графика или создания среды выполнения графика?

Например, в этом коде:

opt_level = 3
target = tvm.target.cuda()
with relay.build_config(opt_level=opt_level):
    graph, lib, params = relay.build_module.build(
        net, target, params=params)

Каковы выходные данные графика, lib? Можем ли мы использовать только один из них для генерации времени выполнения графа или мы всегда должны использовать оба из них, как показано ниже:

# create random input
ctx = tvm.gpu()
data = np.random.uniform(-1, 1, size=data_shape).astype("float32")
# create module
module = graph_runtime.create(graph, lib, ctx)
# set input and parameters
module.set_input("data", data)
module.set_input(**params)
# run
module.run()
# get output
out = module.get_output(0, tvm.nd.empty(out_shape)).asnumpy()

0 ответов

Чтобы сгенерировать среду выполнения графа, вам всегда нужны и граф, и библиотека.

  • graph: график выполнения в формате json
  • lib: библиотека скомпилированных функций модуля TVM специально для этого графа на целевом оборудовании.

Другими словами, граф сообщает компилятору, как расположены слои; lib определяет функцию, которую реализует каждый уровень.

Источник: https://docs.tvm.ai/tutorials/relay_quick_start.html

Другие вопросы по тегам