2323from executorch .backends .nxp .quantizer .neutron_quantizer import NeutronQuantizer
2424from executorch .examples .models import MODEL_NAME_TO_MODEL
2525from executorch .examples .models .model_factory import EagerModelFactory
26- from executorch .exir import EdgeCompileConfig , ExecutorchBackendConfig
26+ from executorch .exir import (
27+ EdgeCompileConfig ,
28+ ExecutorchBackendConfig ,
29+ to_edge_transform_and_lower ,
30+ )
2731from executorch .extension .export_util import save_pte_program
28- from executorch . extension . export_util . utils import export_to_edge
32+ from torch . export import export
2933from torchao .quantization .pt2e .quantize_pt2e import convert_pt2e , prepare_pt2e
3034
3135from .experimental .cifar_net .cifar_net import CifarNet , test_cifarnet_model
@@ -141,14 +145,6 @@ def _get_batch_size(data):
141145 required = True ,
142146 help = f"Provide model name. Valid ones: { set (models .keys ())} " ,
143147 )
144- parser .add_argument (
145- "-d" ,
146- "--delegate" ,
147- action = "store_true" ,
148- required = False ,
149- default = False ,
150- help = "Flag for producing eIQ NeutronBackend delegated model" ,
151- )
152148 parser .add_argument (
153149 "--target" ,
154150 required = False ,
@@ -249,37 +245,28 @@ def _get_batch_size(data):
249245 quantized_str = "quantized " if args .quantize else ""
250246 print (f"\n Accuracy of the { quantized_str } `{ args .model_name } `: { accuracy } \n " )
251247
252- # 4. Export to edge program
253- edge_compile_config = EdgeCompileConfig ()
254- edge_program_manager = export_to_edge (
255- module ,
256- example_inputs ,
257- edge_compile_config = edge_compile_config ,
248+ # 4. Transform and lower
249+
250+ compile_spec = generate_neutron_compile_spec (
251+ args . target ,
252+ operators_not_to_delegate = args . operators_not_to_delegate ,
253+ neutron_converter_flavor = args . neutron_converter_flavor ,
258254 )
255+ partitioner = NeutronPartitioner (compile_spec )
259256
260- logging .debug (f"Exported graph:\n { edge_program_manager .exported_program ().graph } " )
257+ edge_program_manager = to_edge_transform_and_lower (
258+ export (module , example_inputs , strict = True ),
259+ partitioner = [partitioner ],
260+ compile_config = EdgeCompileConfig (),
261+ )
261262
262263 edge_program_manager = NeutronEdgePassManager (
263264 remove_io_quant_ops = args .remove_quant_io_ops
264265 )(edge_program_manager )
265266
266- # 5. Delegate to Neutron
267- if args .delegate :
268- logging .info ("Executing Neutron Partitioner and Delegate" )
269-
270- compile_spec = generate_neutron_compile_spec (
271- args .target ,
272- operators_not_to_delegate = args .operators_not_to_delegate ,
273- neutron_converter_flavor = args .neutron_converter_flavor ,
274- )
275- partitioner = NeutronPartitioner (compile_spec )
276-
277- edge_program_manager = edge_program_manager .to_backend (partitioner )
278- logging .debug (
279- f"Lowered graph:\n { edge_program_manager .exported_program ().graph } "
280- )
267+ logging .debug (f"Lowered graph:\n { edge_program_manager .exported_program ().graph } " )
281268
282- # 6 . Export to ExecuTorch program
269+ # 5 . Export to ExecuTorch program
283270 try :
284271 exec_prog = edge_program_manager .to_executorch (
285272 config = ExecutorchBackendConfig (extract_delegate_segments = False )
@@ -301,8 +288,6 @@ def executorch_program_to_str(ep, verbose=False):
301288
302289 logging .debug (f"Executorch program:\n { executorch_program_to_str (exec_prog )} " )
303290
304- # 7. Serialize to *.pte
305- model_name = f"{ args .model_name } " + (
306- "_nxp_delegate" if args .delegate is True else ""
307- )
291+ # 6. Serialize to *.pte
292+ model_name = f"{ args .model_name } "
308293 save_pte_program (exec_prog , model_name )
0 commit comments