21
21
22
22
import pkg_resources
23
23
import torch
24
+ from executorch .devtools .backend_debug import get_delegation_info
24
25
25
26
from executorch .devtools .etrecord import generate_etrecord
26
27
from executorch .exir .passes .init_mutable_pass import InitializedMutableBufferPass
43
44
get_vulkan_quantizer ,
44
45
)
45
46
from executorch .util .activation_memory_profiler import generate_memory_trace
47
+ from tabulate import tabulate
46
48
47
49
from ..model_factory import EagerModelFactory
48
50
from .source_transformation .apply_spin_quant_r1_r2 import (
@@ -800,6 +802,12 @@ def _export_llama(args) -> LLMEdgeManager: # noqa: C901
800
802
for partitioner in partitioners :
801
803
logging .info (f"--> { partitioner .__class__ .__name__ } " )
802
804
805
+ def print_delegation_info (graph_module : torch .fx .GraphModule ):
806
+ delegation_info = get_delegation_info (graph_module )
807
+ print (delegation_info .get_summary ())
808
+ df = delegation_info .get_operator_delegation_dataframe ()
809
+ print (tabulate (df , headers = "keys" , tablefmt = "fancy_grid" ))
810
+
803
811
additional_passes = []
804
812
if args .model in TORCHTUNE_DEFINED_MODELS :
805
813
additional_passes = [InitializedMutableBufferPass (["kv_cache_pos" ])]
@@ -811,6 +819,8 @@ def _export_llama(args) -> LLMEdgeManager: # noqa: C901
811
819
# Copy the edge manager which will be serialized into etrecord. This is memory-wise expensive.
812
820
edge_manager_copy = copy .deepcopy (builder_exported_to_edge .edge_manager )
813
821
builder = builder_exported_to_edge .to_backend (partitioners )
822
+ if args .verbose :
823
+ print_delegation_info (builder .edge_manager .exported_program ().graph_module )
814
824
if args .num_sharding > 0 and args .qnn :
815
825
from executorch .backends .qualcomm .utils .utils import canonicalize_program
816
826
@@ -831,6 +841,8 @@ def _export_llama(args) -> LLMEdgeManager: # noqa: C901
831
841
logging .info ("Generated etrecord.bin" )
832
842
else :
833
843
builder = builder_exported_to_edge .to_backend (partitioners )
844
+ if args .verbose :
845
+ print_delegation_info (builder .edge_manager .exported_program ().graph_module )
834
846
if args .num_sharding > 0 and args .qnn :
835
847
from executorch .backends .qualcomm .utils .utils import canonicalize_program
836
848
0 commit comments