1

TVM ライブラリで を使用すると、と_relay.build_module.build()_の両方の出力結果はどうなりますか?relay.buildtvm.build

また、出力としての 2 つのパラメーター (グラフとライブラリー) の違いと必要性は何ですか?これらは後でグラフを実行したり、グラフのランタイムを作成したりするために使用されます。

たとえば、このコードでは:

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は何ですか? そのうちの1 つだけを使用してグラフ ランタイムを生成できますか、それとも以下のように常に両方を使用する必要がありますか。

# 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()
4

1 に答える 1

0

グラフ ランタイムを生成するには、常にグラフlibの両方が必要です。

  • graph : json 形式の実行グラフ
  • lib : ターゲット ハードウェア上のこのグラフ専用にコンパイルされた関数の TVM モジュール ライブラリ。

言い換えれば、グラフはレイヤーがどのように配置されているかをコンパイラーに伝えます。libは、各レイヤーが実装する機能を指定します。

ソース: https://docs.tvm.ai/tutorials/relay_quick_start.html#sphx-glr-tutorials-relay-quick-start-py

于 2020-04-09T07:11:34.417 に答える