[VTA] Support network which have no unique operator as start/stop name for graph pack. (#4703)
* [VTA] Support network which have no unique operator as start/stop name
for graph pack.
[Issue]
Current vta use 'start' and 'stop' name to define the pack start point
and end point, but this method not work for these network which have
no 2 unique operator as start point and stop point.
[Solution]
In this solution we give 2 addtional parameters start_name_indx and
stop_name_indx to make vta pack logic work with the said network,
for exampl for following networks which have no unique operator,
%0 = nn.add
%1 = nn.conv2d
%2 = nn.batch_norm
%3 = nn.leaky_relu
%4 = nn.add
%5 = nn.conv2d
%6 = nn.batch_norm
%7 = nn.leaky_relu
%8 = nn.add
with this solution we can use following parameter format to make
vta work on it.
relay_prog = graph_pack(
//....
start_name="nn.add",
stop_name="nn.add",
start_name_idx=0,
stop_name_idx=4)
to apply on new network, by printing the network we can get index information like following.
print(mod.astext(show_meta_data=False))
relay_prog = graph_pack(mod
...
start_name="nn.add",
stop_name="nn.add",
start_name_idx=0,
stop_name_idx=4)
* address review comments and fix index count bug
issue:
when do print(mod), the output not only the Call is also have other type
like Var, need add logic to count all except meta.
solution:
add related logic
* address review comments.
* address review comments
* add more detail comments.