Skip to content

Commit b4c29d5

Browse files
roman-janik-nxpStrycekSimon
authored andcommitted
NXP backend: Update aot_neutron_compile.py example pipeline
1 parent a89b858 commit b4c29d5

File tree

1 file changed

+29
-28
lines changed

1 file changed

+29
-28
lines changed

examples/nxp/aot_neutron_compile.py

Lines changed: 29 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -18,22 +18,20 @@
1818
from executorch.backends.nxp.backend.ir.edge_passes.remove_io_quant_ops_pass import (
1919
RemoveIOQuantOpsPass,
2020
)
21+
from executorch.backends.nxp.edge_passes.neutron_edge_pass_manager import (
22+
NeutronEdgePassManager,
23+
)
2124
from executorch.backends.nxp.neutron_partitioner import NeutronPartitioner
2225
from executorch.backends.nxp.nxp_backend import generate_neutron_compile_spec
2326
from executorch.backends.nxp.quantizer.neutron_quantizer import NeutronQuantizer
2427
from executorch.examples.models import MODEL_NAME_TO_MODEL
2528
from executorch.examples.models.model_factory import EagerModelFactory
26-
from executorch.exir import (
27-
EdgeCompileConfig,
28-
ExecutorchBackendConfig,
29-
to_edge_transform_and_lower,
30-
)
29+
from executorch.exir import EdgeCompileConfig, ExecutorchBackendConfig
3130
from executorch.extension.export_util import save_pte_program
32-
from torch.export import export
31+
from executorch.extension.export_util.utils import export_to_edge
3332
from torchao.quantization.pt2e.quantize_pt2e import convert_pt2e, prepare_pt2e
3433

3534
from .experimental.cifar_net.cifar_net import CifarNet, test_cifarnet_model
36-
3735
from .models.mobilenet_v2 import MobilenetV2
3836

3937
FORMAT = "[%(levelname)s %(asctime)s %(filename)s:%(lineno)s] %(message)s"
@@ -228,7 +226,7 @@ def _get_batch_size(data):
228226

229227
module = exported_program.module()
230228

231-
# 4. Quantize if required
229+
# 3. Quantize if required
232230
if args.quantize:
233231
if calibration_inputs is None:
234232
logging.warning(
@@ -254,39 +252,42 @@ def _get_batch_size(data):
254252
quantized_str = "quantized " if args.quantize else ""
255253
print(f"\nAccuracy of the {quantized_str}`{args.model_name}`: {accuracy}\n")
256254

257-
# 5. Export to edge program
258-
partitioner_list = []
259-
if args.delegate is True:
260-
partitioner_list = [
255+
# 4. Export to edge program
256+
edge_compile_config = EdgeCompileConfig()
257+
edge_program_manager = export_to_edge(
258+
module,
259+
example_inputs,
260+
edge_compile_config=edge_compile_config,
261+
)
262+
263+
logging.debug(f"Exported graph:\n{edge_program_manager.exported_program().graph}")
264+
265+
edge_program_manager = NeutronEdgePassManager()(edge_program_manager)
266+
267+
if args.remove_quant_io_ops:
268+
edge_program_manager = edge_program_manager.transform(
269+
[RemoveIOQuantOpsPass(edge_program_manager=edge_program_manager)]
270+
)
271+
272+
# 5. Delegate to Neutron
273+
if args.delegate:
274+
logging.info("Executing Neutron Partitioner and Delegate")
275+
edge_program_manager = edge_program_manager.to_backend(
261276
NeutronPartitioner(
262277
generate_neutron_compile_spec(
263278
args.target,
264279
args.neutron_converter_flavor,
265280
operators_not_to_delegate=args.operators_not_to_delegate,
266281
)
267282
)
268-
]
269-
270-
edge_program = to_edge_transform_and_lower(
271-
export(module, example_inputs, strict=True),
272-
partitioner=partitioner_list,
273-
compile_config=EdgeCompileConfig(
274-
_check_ir_validity=False,
275-
),
276-
)
277-
logging.debug(f"Exported graph:\n{edge_program.exported_program().graph}")
278-
279-
if args.remove_quant_io_ops:
280-
edge_program = edge_program.transform(
281-
[RemoveIOQuantOpsPass(edge_program_manager=edge_program)]
282283
)
283284
logging.debug(
284-
f"Exported graph (RemoveIOQuantOpsPass):\n{edge_program.exported_program().graph}"
285+
f"Lowered graph:\n{edge_program_manager.exported_program().graph}"
285286
)
286287

287288
# 6. Export to ExecuTorch program
288289
try:
289-
exec_prog = edge_program.to_executorch(
290+
exec_prog = edge_program_manager.to_executorch(
290291
config=ExecutorchBackendConfig(extract_delegate_segments=False)
291292
)
292293
except RuntimeError as e:

0 commit comments

Comments
 (0)