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 (
@@ -777,6 +779,12 @@ def _export_llama(args) -> LLMEdgeManager: # noqa: C901
777
779
for partitioner in partitioners :
778
780
logging .info (f"--> { partitioner .__class__ .__name__ } " )
779
781
782
+ def print_delegation_info (graph_module : torch .fx .GraphModule ):
783
+ delegation_info = get_delegation_info (graph_module )
784
+ print (delegation_info .get_summary ())
785
+ df = delegation_info .get_operator_delegation_dataframe ()
786
+ print (tabulate (df , headers = "keys" , tablefmt = "fancy_grid" ))
787
+
780
788
additional_passes = []
781
789
if args .model in TORCHTUNE_DEFINED_MODELS :
782
790
additional_passes = [InitializedMutableBufferPass (["kv_cache_pos" ])]
@@ -788,6 +796,8 @@ def _export_llama(args) -> LLMEdgeManager: # noqa: C901
788
796
# Copy the edge manager which will be serialized into etrecord. This is memory-wise expensive.
789
797
edge_manager_copy = copy .deepcopy (builder_exported_to_edge .edge_manager )
790
798
builder = builder_exported_to_edge .to_backend (partitioners )
799
+ if args .verbose :
800
+ print_delegation_info (builder .edge_manager .exported_program ().graph_module )
791
801
if args .num_sharding > 0 and args .qnn :
792
802
from executorch .backends .qualcomm .utils .utils import canonicalize_program
793
803
@@ -808,6 +818,8 @@ def _export_llama(args) -> LLMEdgeManager: # noqa: C901
808
818
logging .info ("Generated etrecord.bin" )
809
819
else :
810
820
builder = builder_exported_to_edge .to_backend (partitioners )
821
+ if args .verbose :
822
+ print_delegation_info (builder .edge_manager .exported_program ().graph_module )
811
823
if args .num_sharding > 0 and args .qnn :
812
824
from executorch .backends .qualcomm .utils .utils import canonicalize_program
813
825
0 commit comments