diff --git a/backends/qualcomm/README.md b/backends/qualcomm/README.md index be7cd427d6..d426aff16b 100644 --- a/backends/qualcomm/README.md +++ b/backends/qualcomm/README.md @@ -46,7 +46,7 @@ backends/qualcomm | └── python # Python interface for using QNN libraries. ├── builders # Codes for lowering each operators (AoT Part). ├── partition # QNN Partitioner (AoT Part). -├── passes # Various passes helping lower models to QNN backend (AoT Part). +├── _passes # Various private passes helping lower models to QNN backend (AoT Part). ├── python # Places to put pybind artifacts for accessing QNN APIs, structures, etc (AoT Part). ├── quantizer # QNN Quantizer ├── runtime # Here is QNN runtime responsbile for compiling a model on x64. diff --git a/backends/qualcomm/_passes/TARGETS b/backends/qualcomm/_passes/TARGETS new file mode 100644 index 0000000000..a824ca9f6e --- /dev/null +++ b/backends/qualcomm/_passes/TARGETS @@ -0,0 +1,18 @@ +load("@fbsource//xplat/executorch/build:runtime_wrapper.bzl", "runtime") + +oncall("executorch") + +runtime.python_library( + name = "passes", + srcs = glob([ + "*.py", + ]), + visibility = [ + "@EXECUTORCH_CLIENTS", + ], + deps = [ + "//executorch/backends/transforms:addmm_mm_to_linear", + "//executorch/exir/backend:backend_details", + "//executorch/exir/backend:compile_spec_schema", + ], +) diff --git a/backends/qualcomm/passes/annotate_and_quant_scalar.py b/backends/qualcomm/_passes/annotate_and_quant_scalar.py similarity index 100% rename from backends/qualcomm/passes/annotate_and_quant_scalar.py rename to backends/qualcomm/_passes/annotate_and_quant_scalar.py diff --git a/backends/qualcomm/passes/annotate_decomposed.py b/backends/qualcomm/_passes/annotate_decomposed.py similarity index 100% rename from backends/qualcomm/passes/annotate_decomposed.py rename to backends/qualcomm/_passes/annotate_decomposed.py diff --git a/backends/qualcomm/passes/annotate_quant_attrs.py b/backends/qualcomm/_passes/annotate_quant_attrs.py similarity index 100% rename from backends/qualcomm/passes/annotate_quant_attrs.py rename to backends/qualcomm/_passes/annotate_quant_attrs.py diff --git a/backends/qualcomm/passes/build_quant_io.py b/backends/qualcomm/_passes/build_quant_io.py similarity index 100% rename from backends/qualcomm/passes/build_quant_io.py rename to backends/qualcomm/_passes/build_quant_io.py diff --git a/backends/qualcomm/passes/convert_binary_op_with_scalar.py b/backends/qualcomm/_passes/convert_binary_op_with_scalar.py similarity index 100% rename from backends/qualcomm/passes/convert_binary_op_with_scalar.py rename to backends/qualcomm/_passes/convert_binary_op_with_scalar.py diff --git a/backends/qualcomm/passes/convert_bmm_to_matmul.py b/backends/qualcomm/_passes/convert_bmm_to_matmul.py similarity index 100% rename from backends/qualcomm/passes/convert_bmm_to_matmul.py rename to backends/qualcomm/_passes/convert_bmm_to_matmul.py diff --git a/backends/qualcomm/passes/convert_interpolate_with_upsample2d.py b/backends/qualcomm/_passes/convert_interpolate_with_upsample2d.py similarity index 100% rename from backends/qualcomm/passes/convert_interpolate_with_upsample2d.py rename to backends/qualcomm/_passes/convert_interpolate_with_upsample2d.py diff --git a/backends/qualcomm/passes/convert_prelu.py b/backends/qualcomm/_passes/convert_prelu.py similarity index 100% rename from backends/qualcomm/passes/convert_prelu.py rename to backends/qualcomm/_passes/convert_prelu.py diff --git a/backends/qualcomm/passes/convert_to_linear.py b/backends/qualcomm/_passes/convert_to_linear.py similarity index 100% rename from backends/qualcomm/passes/convert_to_linear.py rename to backends/qualcomm/_passes/convert_to_linear.py diff --git a/backends/qualcomm/passes/decompose_silu.py b/backends/qualcomm/_passes/decompose_silu.py similarity index 100% rename from backends/qualcomm/passes/decompose_silu.py rename to backends/qualcomm/_passes/decompose_silu.py diff --git a/backends/qualcomm/passes/fold_qdq.py b/backends/qualcomm/_passes/fold_qdq.py similarity index 100% rename from backends/qualcomm/passes/fold_qdq.py rename to backends/qualcomm/_passes/fold_qdq.py diff --git a/backends/qualcomm/passes/fuse_consecutive_transpose.py b/backends/qualcomm/_passes/fuse_consecutive_transpose.py similarity index 100% rename from backends/qualcomm/passes/fuse_consecutive_transpose.py rename to backends/qualcomm/_passes/fuse_consecutive_transpose.py diff --git a/backends/qualcomm/passes/i64_to_i32.py b/backends/qualcomm/_passes/i64_to_i32.py similarity index 100% rename from backends/qualcomm/passes/i64_to_i32.py rename to backends/qualcomm/_passes/i64_to_i32.py diff --git a/backends/qualcomm/passes/insert_io_qdq.py b/backends/qualcomm/_passes/insert_io_qdq.py similarity index 100% rename from backends/qualcomm/passes/insert_io_qdq.py rename to backends/qualcomm/_passes/insert_io_qdq.py diff --git a/backends/qualcomm/passes/insert_requantize.py b/backends/qualcomm/_passes/insert_requantize.py similarity index 100% rename from backends/qualcomm/passes/insert_requantize.py rename to backends/qualcomm/_passes/insert_requantize.py diff --git a/backends/qualcomm/passes/layout_transform.py b/backends/qualcomm/_passes/layout_transform.py similarity index 100% rename from backends/qualcomm/passes/layout_transform.py rename to backends/qualcomm/_passes/layout_transform.py diff --git a/backends/qualcomm/passes/recompose_pixel_unshuffle.py b/backends/qualcomm/_passes/recompose_pixel_unshuffle.py similarity index 100% rename from backends/qualcomm/passes/recompose_pixel_unshuffle.py rename to backends/qualcomm/_passes/recompose_pixel_unshuffle.py diff --git a/backends/qualcomm/passes/recompose_rms_norm.py b/backends/qualcomm/_passes/recompose_rms_norm.py similarity index 100% rename from backends/qualcomm/passes/recompose_rms_norm.py rename to backends/qualcomm/_passes/recompose_rms_norm.py diff --git a/backends/qualcomm/passes/reduce_dynamic_range.py b/backends/qualcomm/_passes/reduce_dynamic_range.py similarity index 100% rename from backends/qualcomm/passes/reduce_dynamic_range.py rename to backends/qualcomm/_passes/reduce_dynamic_range.py diff --git a/backends/qualcomm/passes/remove_redundancy.py b/backends/qualcomm/_passes/remove_redundancy.py similarity index 100% rename from backends/qualcomm/passes/remove_redundancy.py rename to backends/qualcomm/_passes/remove_redundancy.py diff --git a/backends/qualcomm/passes/replace_index_put_input.py b/backends/qualcomm/_passes/replace_index_put_input.py similarity index 100% rename from backends/qualcomm/passes/replace_index_put_input.py rename to backends/qualcomm/_passes/replace_index_put_input.py diff --git a/backends/qualcomm/passes/replace_inf_buffer.py b/backends/qualcomm/_passes/replace_inf_buffer.py similarity index 100% rename from backends/qualcomm/passes/replace_inf_buffer.py rename to backends/qualcomm/_passes/replace_inf_buffer.py diff --git a/backends/qualcomm/passes/utils.py b/backends/qualcomm/_passes/utils.py similarity index 100% rename from backends/qualcomm/passes/utils.py rename to backends/qualcomm/_passes/utils.py diff --git a/backends/qualcomm/qnn_preprocess.py b/backends/qualcomm/qnn_preprocess.py index 6360b35280..417934acbd 100644 --- a/backends/qualcomm/qnn_preprocess.py +++ b/backends/qualcomm/qnn_preprocess.py @@ -11,15 +11,15 @@ import executorch.backends.qualcomm.python.PyQnnManagerAdaptor as PyQnnManager import torch # noqa: F401 -from executorch.backends.qualcomm.builders.node_visitor import get_node_visitors -from executorch.backends.qualcomm.builders.qnn_constants import OpContextLoader -from executorch.backends.qualcomm.passes.convert_to_linear import ConvertToLinear -from executorch.backends.qualcomm.passes.fuse_consecutive_transpose import ( +from executorch.backends.qualcomm._passes.convert_to_linear import ConvertToLinear +from executorch.backends.qualcomm._passes.fuse_consecutive_transpose import ( FuseConsecutiveTranspose, ) -from executorch.backends.qualcomm.passes.insert_io_qdq import InsertIOQDQ -from executorch.backends.qualcomm.passes.insert_requantize import InsertRequantize -from executorch.backends.qualcomm.passes.layout_transform import LayoutTransform +from executorch.backends.qualcomm._passes.insert_io_qdq import InsertIOQDQ +from executorch.backends.qualcomm._passes.insert_requantize import InsertRequantize +from executorch.backends.qualcomm._passes.layout_transform import LayoutTransform +from executorch.backends.qualcomm.builders.node_visitor import get_node_visitors +from executorch.backends.qualcomm.builders.qnn_constants import OpContextLoader from executorch.backends.qualcomm.utils.utils import generate_qnn_executorch_option from executorch.exir.backend.backend_details import ( BackendDetails, diff --git a/backends/qualcomm/quantizer/quantizer.py b/backends/qualcomm/quantizer/quantizer.py index e27edf939c..b479d79ab8 100644 --- a/backends/qualcomm/quantizer/quantizer.py +++ b/backends/qualcomm/quantizer/quantizer.py @@ -7,12 +7,12 @@ from typing import Callable, Dict, Optional, Sequence, Set import torch -from executorch.backends.qualcomm.passes.decompose_silu import DecomposeSilu -from executorch.backends.qualcomm.passes.recompose_pixel_unshuffle import ( +from executorch.backends.qualcomm._passes.decompose_silu import DecomposeSilu +from executorch.backends.qualcomm._passes.recompose_pixel_unshuffle import ( RecomposePixelUnshuffle, ) -from executorch.backends.qualcomm.passes.reduce_dynamic_range import ReduceDynamicRange -from executorch.backends.qualcomm.passes.replace_inf_buffer import ReplaceInfBuffer +from executorch.backends.qualcomm._passes.reduce_dynamic_range import ReduceDynamicRange +from executorch.backends.qualcomm._passes.replace_inf_buffer import ReplaceInfBuffer from executorch.backends.transforms.decompose_sdpa import ( DecomposeScaledDotProductAttention, ) diff --git a/backends/qualcomm/utils/constants.py b/backends/qualcomm/utils/constants.py index 9875c9f5af..4787e89ca6 100644 --- a/backends/qualcomm/utils/constants.py +++ b/backends/qualcomm/utils/constants.py @@ -6,7 +6,7 @@ # Qualcomm specific key -# constants in backends/qualcomm/passes & backends/qualcomm/builders +# constants in backends/qualcomm/_passes & backends/qualcomm/builders QCOM_AXIS = "axis" QCOM_AXIS_ORDER = "axis_order" QCOM_BITWIDTH = "bitwidth" diff --git a/backends/qualcomm/utils/utils.py b/backends/qualcomm/utils/utils.py index e1be24d0d6..4509843aba 100644 --- a/backends/qualcomm/utils/utils.py +++ b/backends/qualcomm/utils/utils.py @@ -14,37 +14,42 @@ import executorch.exir as exir import torch - -from executorch.backends.qualcomm.builders.node_visitor import ( - QNN_QUANT_TYPE_MAP, - QNN_TENSOR_TYPE_MAP, -) -from executorch.backends.qualcomm.builders.qnn_constants import OpContextLoader -from executorch.backends.qualcomm.passes.annotate_and_quant_scalar import ( +from executorch.backends.qualcomm._passes.annotate_and_quant_scalar import ( AnnotateAndQuantScalar, ) -from executorch.backends.qualcomm.passes.annotate_decomposed import AnnotateDecomposed -from executorch.backends.qualcomm.passes.annotate_quant_attrs import AnnotateQuantAttrs -from executorch.backends.qualcomm.passes.convert_binary_op_with_scalar import ( +from executorch.backends.qualcomm._passes.annotate_decomposed import AnnotateDecomposed +from executorch.backends.qualcomm._passes.annotate_quant_attrs import AnnotateQuantAttrs +from executorch.backends.qualcomm._passes.convert_binary_op_with_scalar import ( ConvertBinaryOpsWithScalar, ) -from executorch.backends.qualcomm.passes.convert_bmm_to_matmul import ConvertBmmToMatmul -from executorch.backends.qualcomm.passes.convert_interpolate_with_upsample2d import ( +from executorch.backends.qualcomm._passes.convert_bmm_to_matmul import ( + ConvertBmmToMatmul, +) +from executorch.backends.qualcomm._passes.convert_interpolate_with_upsample2d import ( ConvertInterpolateWithUpsample2D, ) -from executorch.backends.qualcomm.passes.convert_prelu import ConvertPReLU -from executorch.backends.qualcomm.passes.convert_to_linear import ConvertToLinear -from executorch.backends.qualcomm.passes.fold_qdq import FoldQDQ -from executorch.backends.qualcomm.passes.i64_to_i32 import I64toI32 -from executorch.backends.qualcomm.passes.layout_transform import LayoutTransform -from executorch.backends.qualcomm.passes.recompose_pixel_unshuffle import ( +from executorch.backends.qualcomm._passes.convert_prelu import ConvertPReLU +from executorch.backends.qualcomm._passes.convert_to_linear import ConvertToLinear +from executorch.backends.qualcomm._passes.fold_qdq import FoldQDQ +from executorch.backends.qualcomm._passes.i64_to_i32 import I64toI32 +from executorch.backends.qualcomm._passes.layout_transform import LayoutTransform +from executorch.backends.qualcomm._passes.recompose_pixel_unshuffle import ( RecomposePixelUnshuffle, ) -from executorch.backends.qualcomm.passes.recompose_rms_norm import RecomposeRmsNorm -from executorch.backends.qualcomm.passes.remove_redundancy import RemoveRedundancy -from executorch.backends.qualcomm.passes.replace_index_put_input import ( +from executorch.backends.qualcomm._passes.recompose_rms_norm import RecomposeRmsNorm +from executorch.backends.qualcomm._passes.remove_redundancy import RemoveRedundancy +from executorch.backends.qualcomm._passes.replace_index_put_input import ( ReplaceIndexPutInput, ) + +from executorch.backends.qualcomm.builders.node_visitor import ( + QNN_QUANT_TYPE_MAP, + QNN_TENSOR_TYPE_MAP, +) +from executorch.backends.qualcomm.builders.qnn_constants import OpContextLoader +from executorch.backends.qualcomm.passes.expand_broadcast_tensor_shape import ( + ExpandBroadcastTensorShape, +) from executorch.backends.qualcomm.serialization.qnn_compile_spec_schema import ( _soc_info_table, QcomChipset, diff --git a/examples/qualcomm/oss_scripts/llama2/llama.py b/examples/qualcomm/oss_scripts/llama2/llama.py index 9712b1c08f..cd7ec24d3a 100644 --- a/examples/qualcomm/oss_scripts/llama2/llama.py +++ b/examples/qualcomm/oss_scripts/llama2/llama.py @@ -12,9 +12,9 @@ from multiprocessing.connection import Client import torch +from executorch.backends.qualcomm._passes.build_quant_io import BuildQuantIo from executorch.backends.qualcomm.partition.qnn_partitioner import QnnPartitioner -from executorch.backends.qualcomm.passes.build_quant_io import BuildQuantIo from executorch.backends.qualcomm.quantizer.quantizer import QuantDtype from executorch.backends.qualcomm.serialization.qnn_compile_spec_schema import (