23
23
import torch
24
24
25
25
from executorch .devtools .etrecord import generate_etrecord
26
+ from executorch .devtools .backend_debug import get_delegation_info
27
+ from tabulate import tabulate
26
28
from executorch .exir .passes .init_mutable_pass import InitializedMutableBufferPass
27
29
28
30
from executorch .extension .llm .export .builder import DType , LLMEdgeManager
@@ -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