Skip to content

Commit 90a2657

Browse files
authored
Move XNNPACKQuantizer from PyTorch to ExecuTorch
Differential Revision: D68191752 Pull Request resolved: #7804
1 parent 2ef8a0f commit 90a2657

36 files changed

+3911
-73
lines changed

backends/cadence/aot/TARGETS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ python_library(
6565
"//executorch/backends/cadence/aot/quantizer:fusion_pass",
6666
"//executorch/backends/cadence/runtime:runtime",
6767
"//executorch/backends/cadence/aot/quantizer:quantizer",
68+
"//executorch/backends/xnnpack/quantizer:xnnpack_quantizer",
6869
"//executorch/backends/transforms:decompose_sdpa",
6970
"//executorch/backends/transforms:remove_clone_ops",
7071
"//executorch/exir:lib",

backends/cadence/aot/export_example.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,13 @@
2323
from executorch.backends.cadence.aot.quantizer.quantizer import CadenceDefaultQuantizer
2424
from executorch.backends.cadence.runtime import runtime
2525
from executorch.backends.cadence.runtime.executor import BundledProgramManager
26-
from executorch.exir import ExecutorchProgramManager
27-
from torch import nn
28-
from torch.ao.quantization.observer import HistogramObserver, MinMaxObserver
29-
from torch.ao.quantization.quantizer.xnnpack_quantizer_utils import (
26+
from executorch.backends.xnnpack.quantizer.xnnpack_quantizer_utils import (
3027
QuantizationConfig,
3128
QuantizationSpec,
3229
)
30+
from executorch.exir import ExecutorchProgramManager
31+
from torch import nn
32+
from torch.ao.quantization.observer import HistogramObserver, MinMaxObserver
3333

3434
from .utils import save_bpte_program, save_pte_program
3535

backends/cadence/aot/quantizer/TARGETS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ python_library(
3434
":patterns",
3535
":utils",
3636
"//caffe2:torch",
37+
"//executorch/backends/xnnpack/quantizer:xnnpack_quantizer_utils",
3738
],
3839
)
3940

backends/cadence/aot/quantizer/quantizer.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,18 +26,18 @@
2626
is_annotated,
2727
no_outside_users,
2828
)
29+
from executorch.backends.xnnpack.quantizer.xnnpack_quantizer_utils import (
30+
OperatorConfig,
31+
QuantizationAnnotation,
32+
QuantizationConfig,
33+
QuantizationSpec,
34+
)
2935

3036
from torch import fx
3137

3238
from torch.ao.quantization.observer import HistogramObserver, MinMaxObserver
3339
from torch.ao.quantization.quantizer import DerivedQuantizationSpec, Quantizer
3440
from torch.ao.quantization.quantizer.composable_quantizer import ComposableQuantizer
35-
from torch.ao.quantization.quantizer.xnnpack_quantizer_utils import (
36-
OperatorConfig,
37-
QuantizationAnnotation,
38-
QuantizationConfig,
39-
QuantizationSpec,
40-
)
4141

4242

4343
act_qspec = QuantizationSpec(

backends/example/TARGETS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ python_library(
1111
deps = [
1212
"//caffe2:torch",
1313
"//executorch/backends/example/example_operators:example_operators_lib",
14+
"//executorch/backends/xnnpack/quantizer:xnnpack_quantizer",
1415
],
1516
)
1617

backends/example/example_quantizer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@
99

1010
import torch
1111
from executorch.backends.example.example_operators.ops import module_to_annotator
12+
from executorch.backends.xnnpack.quantizer.xnnpack_quantizer_utils import OperatorConfig
1213
from torch import fx
1314
from torch.ao.quantization.observer import HistogramObserver, MinMaxObserver
1415
from torch.ao.quantization.pt2e.graph_utils import find_sequential_partitions
1516
from torch.ao.quantization.quantizer import QuantizationSpec, Quantizer
16-
from torch.ao.quantization.quantizer.xnnpack_quantizer_utils import OperatorConfig
1717

1818

1919
def get_uint8_tensor_spec(observer_or_fake_quant_ctr):

backends/transforms/targets.bzl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,7 @@ def define_common_targets():
195195
deps = [
196196
"fbsource//third-party/pypi/expecttest:expecttest", # @manual
197197
":duplicate_dynamic_quant_chain",
198+
"//executorch/backends/xnnpack/quantizer:xnnpack_quantizer",
198199
"//caffe2:torch",
199200
"//executorch/exir:lib",
200201
],

backends/transforms/test/test_duplicate_dynamic_quant_chain.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@
1111
from executorch.backends.transforms.duplicate_dynamic_quant_chain import (
1212
DuplicateDynamicQuantChainPass,
1313
)
14-
from torch.ao.quantization.quantize_pt2e import convert_pt2e, prepare_pt2e
15-
from torch.ao.quantization.quantizer.xnnpack_quantizer import (
14+
from executorch.backends.xnnpack.quantizer.xnnpack_quantizer import (
1615
get_symmetric_quantization_config,
1716
XNNPACKQuantizer,
1817
)
18+
from torch.ao.quantization.quantize_pt2e import convert_pt2e, prepare_pt2e
1919

2020
# TODO: Move away from using torch's internal testing utils
2121
from torch.testing._internal.common_quantization import (

backends/vulkan/quantizer/TARGETS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,6 @@ python_library(
99
],
1010
deps = [
1111
"//caffe2:torch",
12+
"//executorch/backends/xnnpack/quantizer:xnnpack_quantizer_utils",
1213
],
1314
)

backends/vulkan/quantizer/vulkan_quantizer.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,15 @@
1212
from typing import Any, Callable, Dict, Optional
1313

1414
import torch
15-
from torch.ao.quantization.observer import MinMaxObserver, PerChannelMinMaxObserver
16-
from torch.ao.quantization.qconfig import _ObserverOrFakeQuantizeConstructor
17-
from torch.ao.quantization.quantizer import QuantizationSpec, Quantizer
18-
from torch.ao.quantization.quantizer.xnnpack_quantizer_utils import (
15+
from executorch.backends.xnnpack.quantizer.xnnpack_quantizer_utils import (
1916
_convert_scalars_to_attrs,
2017
OP_TO_ANNOTATOR,
2118
propagate_annotation,
2219
QuantizationConfig,
2320
)
21+
from torch.ao.quantization.observer import MinMaxObserver, PerChannelMinMaxObserver
22+
from torch.ao.quantization.qconfig import _ObserverOrFakeQuantizeConstructor
23+
from torch.ao.quantization.quantizer import QuantizationSpec, Quantizer
2424
from torch.fx import Node
2525

2626

backends/xnnpack/quantizer/TARGETS

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
load("@fbcode_macros//build_defs:python_library.bzl", "python_library")
2+
3+
python_library(
4+
name = "xnnpack_quantizer",
5+
srcs = ["xnnpack_quantizer.py"],
6+
deps = [
7+
":xnnpack_quantizer_utils",
8+
"//caffe2:torch",
9+
"//executorch/exir:lib",
10+
],
11+
)
12+
13+
python_library(
14+
name = "xnnpack_quantizer_utils",
15+
srcs = ["xnnpack_quantizer_utils.py"],
16+
deps = [
17+
"//caffe2:torch",
18+
"//executorch/exir:lib",
19+
],
20+
)

0 commit comments

Comments
 (0)