bigdl-core-npu 2.6.0b20250114__cp311-cp311-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- bigdl-core-npu/__init__.py +0 -0
- bigdl-core-npu/include/common.h +96 -0
- bigdl-core-npu/include/npu_llm.h +74 -0
- bigdl-core-npu/npu_llm.dll +0 -0
- bigdl-core-npu/npu_llm.lib +0 -0
- bigdl_core_npu-2.6.0b20250114.dist-info/METADATA +44 -0
- bigdl_core_npu-2.6.0b20250114.dist-info/RECORD +234 -0
- bigdl_core_npu-2.6.0b20250114.dist-info/WHEEL +5 -0
- bigdl_core_npu-2.6.0b20250114.dist-info/top_level.txt +2 -0
- intel_npu_acceleration_library/__init__.py +24 -0
- intel_npu_acceleration_library/_version.py +6 -0
- intel_npu_acceleration_library/backend/__init__.py +37 -0
- intel_npu_acceleration_library/backend/base.py +250 -0
- intel_npu_acceleration_library/backend/bindings.py +383 -0
- intel_npu_acceleration_library/backend/compression.py +24 -0
- intel_npu_acceleration_library/backend/convolution.py +58 -0
- intel_npu_acceleration_library/backend/factory.py +1161 -0
- intel_npu_acceleration_library/backend/linear.py +60 -0
- intel_npu_acceleration_library/backend/matmul.py +59 -0
- intel_npu_acceleration_library/backend/mlp.py +58 -0
- intel_npu_acceleration_library/backend/ops.py +142 -0
- intel_npu_acceleration_library/backend/qlinear.py +75 -0
- intel_npu_acceleration_library/backend/qmatmul.py +66 -0
- intel_npu_acceleration_library/backend/runtime.py +215 -0
- intel_npu_acceleration_library/backend/sdpa.py +107 -0
- intel_npu_acceleration_library/backend/tensor.py +1120 -0
- intel_npu_acceleration_library/backend/utils.py +70 -0
- intel_npu_acceleration_library/compiler.py +194 -0
- intel_npu_acceleration_library/device.py +230 -0
- intel_npu_acceleration_library/dtypes.py +155 -0
- intel_npu_acceleration_library/external/openvino/__init__.py +72 -0
- intel_npu_acceleration_library/external/openvino/_offline_transformations/__init__.py +21 -0
- intel_npu_acceleration_library/external/openvino/_pyopenvino.cp310-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/_pyopenvino.cp311-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/_pyopenvino.cp312-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/_pyopenvino.cp38-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/_pyopenvino.cp39-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/experimental/__init__.py +14 -0
- intel_npu_acceleration_library/external/openvino/frontend/__init__.py +34 -0
- intel_npu_acceleration_library/external/openvino/frontend/frontend.py +44 -0
- intel_npu_acceleration_library/external/openvino/frontend/jax/__init__.py +15 -0
- intel_npu_acceleration_library/external/openvino/frontend/jax/jaxpr_decoder.py +293 -0
- intel_npu_acceleration_library/external/openvino/frontend/jax/passes.py +65 -0
- intel_npu_acceleration_library/external/openvino/frontend/jax/utils.py +182 -0
- intel_npu_acceleration_library/external/openvino/frontend/onnx/__init__.py +15 -0
- intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp310-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp311-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp312-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp38-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp39-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/paddle/__init__.py +15 -0
- intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp310-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp311-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp312-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp38-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp39-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/__init__.py +19 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/fx_decoder.py +370 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/gptq.py +180 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/module_extension.py +39 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/patch_model.py +118 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp310-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp311-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp312-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp38-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp39-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/backend.py +131 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/backend_utils.py +85 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/compile.py +141 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/decompositions.py +116 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/execute.py +189 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/op_support.py +290 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/partition.py +126 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/ts_decoder.py +568 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/utils.py +258 -0
- intel_npu_acceleration_library/external/openvino/frontend/tensorflow/__init__.py +16 -0
- intel_npu_acceleration_library/external/openvino/frontend/tensorflow/graph_iterator.py +116 -0
- intel_npu_acceleration_library/external/openvino/frontend/tensorflow/node_decoder.py +219 -0
- intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp310-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp311-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp312-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp38-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp39-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/tensorflow/utils.py +481 -0
- intel_npu_acceleration_library/external/openvino/helpers/__init__.py +6 -0
- intel_npu_acceleration_library/external/openvino/helpers/packing.py +87 -0
- intel_npu_acceleration_library/external/openvino/preprocess/README.md +60 -0
- intel_npu_acceleration_library/external/openvino/preprocess/__init__.py +28 -0
- intel_npu_acceleration_library/external/openvino/preprocess/torchvision/__init__.py +15 -0
- intel_npu_acceleration_library/external/openvino/preprocess/torchvision/preprocess_converter.py +47 -0
- intel_npu_acceleration_library/external/openvino/preprocess/torchvision/requirements.txt +5 -0
- intel_npu_acceleration_library/external/openvino/preprocess/torchvision/torchvision_preprocessing.py +347 -0
- intel_npu_acceleration_library/external/openvino/properties/__init__.py +22 -0
- intel_npu_acceleration_library/external/openvino/properties/_properties.py +55 -0
- intel_npu_acceleration_library/external/openvino/properties/device/__init__.py +14 -0
- intel_npu_acceleration_library/external/openvino/properties/hint/__init__.py +15 -0
- intel_npu_acceleration_library/external/openvino/properties/intel_auto/__init__.py +12 -0
- intel_npu_acceleration_library/external/openvino/properties/intel_cpu/__init__.py +8 -0
- intel_npu_acceleration_library/external/openvino/properties/intel_gpu/__init__.py +12 -0
- intel_npu_acceleration_library/external/openvino/properties/intel_gpu/hint/__init__.py +11 -0
- intel_npu_acceleration_library/external/openvino/properties/log/__init__.py +11 -0
- intel_npu_acceleration_library/external/openvino/properties/streams/__init__.py +11 -0
- intel_npu_acceleration_library/external/openvino/runtime/__init__.py +85 -0
- intel_npu_acceleration_library/external/openvino/runtime/exceptions.py +17 -0
- intel_npu_acceleration_library/external/openvino/runtime/ie_api.py +631 -0
- intel_npu_acceleration_library/external/openvino/runtime/op/__init__.py +19 -0
- intel_npu_acceleration_library/external/openvino/runtime/op/util/__init__.py +22 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset1/__init__.py +112 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset1/ops.py +3068 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset10/__init__.py +179 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset10/ops.py +173 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset11/__init__.py +179 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset11/ops.py +107 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset12/__init__.py +180 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset12/ops.py +120 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset13/__init__.py +188 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset13/ops.py +398 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset14/__init__.py +190 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset14/ops.py +171 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset15/__init__.py +17 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset15/ops.py +276 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset2/__init__.py +118 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset2/ops.py +216 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset3/__init__.py +134 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset3/ops.py +638 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset4/__init__.py +145 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset4/ops.py +464 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset5/__init__.py +152 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset5/ops.py +372 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset6/__init__.py +154 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset6/ops.py +215 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset7/__init__.py +158 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset7/ops.py +169 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset8/__init__.py +169 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset8/ops.py +787 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset9/__init__.py +175 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset9/ops.py +341 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset_utils.py +22 -0
- intel_npu_acceleration_library/external/openvino/runtime/passes/__init__.py +19 -0
- intel_npu_acceleration_library/external/openvino/runtime/passes/graph_rewrite.py +33 -0
- intel_npu_acceleration_library/external/openvino/runtime/passes/manager.py +26 -0
- intel_npu_acceleration_library/external/openvino/runtime/properties/__init__.py +40 -0
- intel_npu_acceleration_library/external/openvino/runtime/properties/hint/__init__.py +25 -0
- intel_npu_acceleration_library/external/openvino/runtime/utils/__init__.py +7 -0
- intel_npu_acceleration_library/external/openvino/runtime/utils/broadcasting.py +44 -0
- intel_npu_acceleration_library/external/openvino/runtime/utils/data_helpers/__init__.py +8 -0
- intel_npu_acceleration_library/external/openvino/runtime/utils/data_helpers/data_dispatcher.py +447 -0
- intel_npu_acceleration_library/external/openvino/runtime/utils/data_helpers/wrappers.py +148 -0
- intel_npu_acceleration_library/external/openvino/runtime/utils/decorators.py +156 -0
- intel_npu_acceleration_library/external/openvino/runtime/utils/input_validation.py +133 -0
- intel_npu_acceleration_library/external/openvino/runtime/utils/node_factory.py +127 -0
- intel_npu_acceleration_library/external/openvino/runtime/utils/reduction.py +25 -0
- intel_npu_acceleration_library/external/openvino/runtime/utils/types.py +175 -0
- intel_npu_acceleration_library/external/openvino/tools/__init__.py +4 -0
- intel_npu_acceleration_library/external/openvino/tools/benchmark/__init__.py +3 -0
- intel_npu_acceleration_library/external/openvino/tools/benchmark/benchmark.py +186 -0
- intel_npu_acceleration_library/external/openvino/tools/benchmark/main.py +695 -0
- intel_npu_acceleration_library/external/openvino/tools/benchmark/parameters.py +199 -0
- intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/__init__.py +3 -0
- intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/constants.py +26 -0
- intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/inputs_filling.py +482 -0
- intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/logging.py +8 -0
- intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/statistics_report.py +296 -0
- intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/utils.py +836 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/__init__.py +20 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/__main__.py +10 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/cli_parser.py +633 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/convert.py +102 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/convert_data_type.py +82 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/convert_impl.py +550 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/environment_setup_utils.py +50 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/error.py +49 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/get_ov_update_message.py +16 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/help.py +45 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/logger.py +91 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/main.py +40 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/__init__.py +2 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/analysis.py +46 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/check_config.py +57 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/extractor.py +447 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/jax_frontend_utils.py +19 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/layout_utils.py +73 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/moc_emit_ir.py +32 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/offline_transformations.py +107 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/paddle_frontend_utils.py +83 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/pipeline.py +298 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/preprocessing.py +220 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/pytorch_frontend_utils.py +214 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/shape_utils.py +109 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/type_utils.py +82 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/ovc.py +13 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/telemetry_params.py +6 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/telemetry_stub.py +28 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/telemetry_utils.py +118 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/utils.py +196 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/version.py +80 -0
- intel_npu_acceleration_library/external/openvino/torch/__init__.py +5 -0
- intel_npu_acceleration_library/external/openvino/utils.py +115 -0
- intel_npu_acceleration_library/functional/__init__.py +8 -0
- intel_npu_acceleration_library/functional/scaled_dot_product_attention.py +47 -0
- intel_npu_acceleration_library/lib/Release/cache.json +113732 -0
- intel_npu_acceleration_library/lib/Release/intel_npu_acceleration_library.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_auto_batch_plugin.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_auto_plugin.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_c.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_hetero_plugin.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_intel_cpu_plugin.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_intel_gpu_plugin.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_intel_npu_plugin.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_ir_frontend.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_onnx_frontend.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_paddle_frontend.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_pytorch_frontend.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_tensorflow_frontend.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_tensorflow_lite_frontend.dll +0 -0
- intel_npu_acceleration_library/lib/Release/tbb12.dll +0 -0
- intel_npu_acceleration_library/lib/Release/tbb12_debug.dll +0 -0
- intel_npu_acceleration_library/lib/Release/tbbbind_2_5.dll +0 -0
- intel_npu_acceleration_library/lib/Release/tbbbind_2_5_debug.dll +0 -0
- intel_npu_acceleration_library/lib/Release/tbbmalloc.dll +0 -0
- intel_npu_acceleration_library/lib/Release/tbbmalloc_debug.dll +0 -0
- intel_npu_acceleration_library/lib/Release/tbbmalloc_proxy.dll +0 -0
- intel_npu_acceleration_library/lib/Release/tbbmalloc_proxy_debug.dll +0 -0
- intel_npu_acceleration_library/modelling.py +150 -0
- intel_npu_acceleration_library/nn/__init__.py +20 -0
- intel_npu_acceleration_library/nn/autograd.py +68 -0
- intel_npu_acceleration_library/nn/conv.py +257 -0
- intel_npu_acceleration_library/nn/functional.py +1207 -0
- intel_npu_acceleration_library/nn/linear.py +162 -0
- intel_npu_acceleration_library/nn/llm.py +417 -0
- intel_npu_acceleration_library/nn/module.py +393 -0
- intel_npu_acceleration_library/optimizations.py +157 -0
- intel_npu_acceleration_library/quantization.py +174 -0
@@ -0,0 +1,290 @@
|
|
1
|
+
# Copyright (C) 2018-2024 Intel Corporation
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
3
|
+
|
4
|
+
# flake8: noqa
|
5
|
+
# mypy: ignore-errors
|
6
|
+
|
7
|
+
from typing import Dict
|
8
|
+
|
9
|
+
import torch
|
10
|
+
from torch.nn import Module
|
11
|
+
from torch._ops import OpOverload
|
12
|
+
|
13
|
+
from torch.fx.node import Node, _get_qualified_name
|
14
|
+
from torch.fx.passes.operator_support import OperatorSupport
|
15
|
+
from torch.fx.passes.tools_common import CALLABLE_NODE_OPS
|
16
|
+
from openvino.frontend.pytorch.torchdynamo.backend_utils import _get_disabled_ops
|
17
|
+
|
18
|
+
import typing as t
|
19
|
+
import logging
|
20
|
+
|
21
|
+
logger = logging.getLogger(__name__)
|
22
|
+
logger.setLevel(logging.WARNING)
|
23
|
+
|
24
|
+
class OperatorSupport(OperatorSupport):
|
25
|
+
"""
|
26
|
+
Operator support for OpenVINO backend.
|
27
|
+
"""
|
28
|
+
|
29
|
+
def __init__(self, options):
|
30
|
+
support_dict = {
|
31
|
+
"_operator.add": None,
|
32
|
+
"_operator.floordiv": None,
|
33
|
+
"_operator.getitem": None,
|
34
|
+
"_operator.mul": None,
|
35
|
+
"_operator.sub": None,
|
36
|
+
"torch.ops.aten.sym_size.int": None,
|
37
|
+
"torch.ops.aten._adaptive_avg_pool1d.default": None,
|
38
|
+
"torch.ops.aten._adaptive_avg_pool2d.default": None,
|
39
|
+
"torch.ops.aten._adaptive_avg_pool3d.default": None,
|
40
|
+
"torch.ops.aten._convolution.default": None,
|
41
|
+
"torch.ops.aten._embedding_bag.default": None,
|
42
|
+
"torch.ops.aten._fake_quantize_per_tensor_affine_cachemask_tensor_qparams.default": None,
|
43
|
+
"torch.ops.aten._local_scalar_dense.default": None,
|
44
|
+
"torch.ops.aten._log_softmax.default": None,
|
45
|
+
"torch.ops.aten._native_batch_norm_legit.default": None,
|
46
|
+
"torch.ops.aten._native_batch_norm_legit.no_stats": None,
|
47
|
+
"torch.ops.aten._native_batch_norm_legit_functional.default": None,
|
48
|
+
"torch.ops.aten._native_batch_norm_legit_no_training.default": None,
|
49
|
+
"torch.ops.aten._scaled_dot_product_flash_attention.default": None,
|
50
|
+
"torch.ops.aten._scaled_dot_product_flash_attention_for_cpu.default": None,
|
51
|
+
"torch.ops.aten._softmax.default": None,
|
52
|
+
"torch.ops.aten._to_copy.default": None,
|
53
|
+
"torch.ops.aten._unsafe_view.default": None,
|
54
|
+
"torch.ops.aten.abs.default": None,
|
55
|
+
"torch.ops.aten.acos.default": None,
|
56
|
+
"torch.ops.aten.acosh.default": None,
|
57
|
+
"torch.ops.aten.adaptive_max_pool1d.default": None,
|
58
|
+
"torch.ops.aten.adaptive_max_pool2d.default": None,
|
59
|
+
"torch.ops.aten.adaptive_max_pool3d.default": None,
|
60
|
+
"torch.ops.aten.add.Scalar": None,
|
61
|
+
"torch.ops.aten.add.Tensor": None,
|
62
|
+
"torch.ops.aten.add_.Tensor": None,
|
63
|
+
"torch.ops.aten.addcmul.default": None,
|
64
|
+
"torch.ops.aten.addmm.default": None,
|
65
|
+
"torch.ops.aten.alias.default": None,
|
66
|
+
"torch.ops.aten.all.default": None,
|
67
|
+
"torch.ops.aten.amax.default": None,
|
68
|
+
"torch.ops.aten.amin.default": None,
|
69
|
+
"torch.ops.aten.any.default": None,
|
70
|
+
"torch.ops.aten.any.dim": None,
|
71
|
+
"torch.ops.aten.arange.default": None,
|
72
|
+
"torch.ops.aten.arange.start": None,
|
73
|
+
"torch.ops.aten.arange.start_step": None,
|
74
|
+
"torch.ops.aten.argmax.default": None,
|
75
|
+
"torch.ops.aten.argmin.default": None,
|
76
|
+
"torch.ops.aten.as_strided.default": None,
|
77
|
+
"torch.ops.aten.as_strided_.default": None,
|
78
|
+
"torch.ops.aten.asin.default": None,
|
79
|
+
"torch.ops.aten.asinh.default": None,
|
80
|
+
"torch.ops.aten.asinh.default": None,
|
81
|
+
"torch.ops.aten.atanh.default": None,
|
82
|
+
"torch.ops.aten.avg_pool2d.default": None,
|
83
|
+
"torch.ops.aten.avg_pool3d.default": None,
|
84
|
+
"torch.ops.aten.baddbmm.default": None,
|
85
|
+
"torch.ops.aten.bitwise_and.Scalar": None,
|
86
|
+
"torch.ops.aten.bitwise_and.Tensor": None,
|
87
|
+
"torch.ops.aten.bitwise_not.default": None,
|
88
|
+
"torch.ops.aten.bitwise_or.Tensor": None,
|
89
|
+
"torch.ops.aten.bitwise_xor.Tensor": None,
|
90
|
+
"torch.ops.aten.bmm.default": None,
|
91
|
+
"torch.ops.aten.cat.default": None,
|
92
|
+
"torch.ops.aten.ceil.default": None,
|
93
|
+
"torch.ops.aten.clamp.default": None,
|
94
|
+
"torch.ops.aten.clamp_max.default": None,
|
95
|
+
"torch.ops.aten.clamp_max.Tensor": None,
|
96
|
+
"torch.ops.aten.clamp_min.default": None,
|
97
|
+
"torch.ops.aten.clamp_min.Tensor": None,
|
98
|
+
"torch.ops.aten.clone.default": None,
|
99
|
+
"torch.ops.aten.constant_pad_nd.default": None,
|
100
|
+
"torch.ops.aten.convolution.default": None,
|
101
|
+
"torch.ops.aten.copy.default": None,
|
102
|
+
"torch.ops.aten.copy_.default": None,
|
103
|
+
"torch.ops.aten.cos.default": None,
|
104
|
+
"torch.ops.aten.cosh.default": None,
|
105
|
+
"torch.ops.aten.cumsum.default": None,
|
106
|
+
"torch.ops.aten.detach.default": None,
|
107
|
+
"torch.ops.aten.detach_.default": None,
|
108
|
+
"torch.ops.aten.div.Scalar": None,
|
109
|
+
"torch.ops.aten.div.Tensor": None,
|
110
|
+
"torch.ops.aten.div.Tensor_mode": None,
|
111
|
+
"torch.ops.aten.div_.Tensor": None,
|
112
|
+
"torch.ops.aten.elu.default": None,
|
113
|
+
"torch.ops.aten.elu_.default": None,
|
114
|
+
"torch.ops.aten.embedding.default": None,
|
115
|
+
"torch.ops.aten.empty.memory_format": None,
|
116
|
+
"torch.ops.aten.eq.Scalar": None,
|
117
|
+
"torch.ops.aten.eq.Tensor": None,
|
118
|
+
"torch.ops.aten.erf.default": None,
|
119
|
+
"torch.ops.aten.exp.default": None,
|
120
|
+
"torch.ops.aten.expand.default": None,
|
121
|
+
"torch.ops.aten.fake_quantize_per_channel_affine_cachemask.default": None,
|
122
|
+
"torch.ops.aten.fill.Scalar": None,
|
123
|
+
"torch.ops.aten.fill_.Scalar": None,
|
124
|
+
"torch.ops.aten.fill.Tensor": None,
|
125
|
+
"torch.ops.aten.fill_.Tensor": None,
|
126
|
+
"torch.ops.aten.flip.default": None,
|
127
|
+
"torch.ops.aten.floor.default": None,
|
128
|
+
"torch.ops.aten.floor.default": None,
|
129
|
+
"torch.ops.aten.fmod.Scalar": None,
|
130
|
+
"torch.ops.aten.fmod.Tensor": None,
|
131
|
+
"torch.ops.aten.full.default": None,
|
132
|
+
"torch.ops.aten.full.names": None,
|
133
|
+
"torch.ops.aten.full_like.default": None,
|
134
|
+
"torch.ops.aten.gather.default": None,
|
135
|
+
"torch.ops.aten.ge.Scalar": None,
|
136
|
+
"torch.ops.aten.ge.Tensor": None,
|
137
|
+
"torch.ops.aten.gelu.default": None,
|
138
|
+
"torch.ops.aten.glu.default": None,
|
139
|
+
"torch.ops.aten.grid_sampler_2d.default": None,
|
140
|
+
"torch.ops.aten.gt.Scalar": None,
|
141
|
+
"torch.ops.aten.gt.Tensor": None,
|
142
|
+
"torch.ops.aten.hardsigmoid.default": None,
|
143
|
+
"torch.ops.aten.hardswish.default": None,
|
144
|
+
"torch.ops.aten.hardswish_.default": None,
|
145
|
+
"torch.ops.aten.hardtanh.default": None,
|
146
|
+
"torch.ops.aten.hardtanh_.default": None,
|
147
|
+
"torch.ops.aten.index.Tensor": None,
|
148
|
+
"torch.ops.aten.index_select.default": None,
|
149
|
+
"torch.ops.aten.isfinite.default": None,
|
150
|
+
"torch.ops.aten.isinf.default": None,
|
151
|
+
"torch.ops.aten.isnan.default": None,
|
152
|
+
"torch.ops.aten.le.Scalar": None,
|
153
|
+
"torch.ops.aten.le.Tensor": None,
|
154
|
+
"torch.ops.aten.leaky_relu.default": None,
|
155
|
+
"torch.ops.aten.leaky_relu_.default": None,
|
156
|
+
"torch.ops.aten.lift_fresh_copy.default": None,
|
157
|
+
"torch.ops.aten.linalg_vector_norm.default": None,
|
158
|
+
"torch.ops.aten.log.default": None,
|
159
|
+
"torch.ops.aten.log_sigmoid_forward.default": None,
|
160
|
+
"torch.ops.aten.log10.default": None,
|
161
|
+
"torch.ops.aten.log1p.default": None,
|
162
|
+
"torch.ops.aten.log2.default": None,
|
163
|
+
"torch.ops.aten.logical_not.default": None,
|
164
|
+
"torch.ops.aten.logsumexp.default": None,
|
165
|
+
"torch.ops.aten.lt.Scalar": None,
|
166
|
+
"torch.ops.aten.lt.Tensor": None,
|
167
|
+
"torch.ops.aten.masked_fill.Scalar": None,
|
168
|
+
"torch.ops.aten.masked_fill.Tensor": None,
|
169
|
+
"torch.ops.aten.masked_fill_.Scalar": None,
|
170
|
+
"torch.ops.aten.masked_fill_.Tensor": None,
|
171
|
+
"torch.ops.aten.max.default": None,
|
172
|
+
"torch.ops.aten.max.dim": None,
|
173
|
+
"torch.ops.aten.max_pool2d_with_indices.default": None,
|
174
|
+
"torch.ops.aten.max_pool3d_with_indices.default": None,
|
175
|
+
"torch.ops.aten.maximum.default": None,
|
176
|
+
"torch.ops.aten.mean.default": None,
|
177
|
+
"torch.ops.aten.mean.dim": None,
|
178
|
+
"torch.ops.aten.min.default": None,
|
179
|
+
"torch.ops.aten.min.dim": None,
|
180
|
+
"torch.ops.aten.minimum.default": None,
|
181
|
+
"torch.ops.aten.mm.default": None,
|
182
|
+
"torch.ops.aten.mul.Scalar": None,
|
183
|
+
"torch.ops.aten.mul.Tensor": None,
|
184
|
+
"torch.ops.aten.mul_.Tensor": None,
|
185
|
+
"torch.ops.aten.native_batch_norm.default": None,
|
186
|
+
"torch.ops.aten.native_dropout.default": None,
|
187
|
+
"torch.ops.aten.native_group_norm.default": None,
|
188
|
+
"torch.ops.aten.native_layer_norm.default": None,
|
189
|
+
"torch.ops.aten.ne.Scalar": None,
|
190
|
+
"torch.ops.aten.ne.Tensor": None,
|
191
|
+
"torch.ops.aten.neg.default": None,
|
192
|
+
"torch.ops.aten.new_full.default": None,
|
193
|
+
"torch.ops.aten.new_ones.default": None,
|
194
|
+
"torch.ops.aten.ones_like.default": None,
|
195
|
+
"torch.ops.aten.new_zeros.default": None,
|
196
|
+
"torch.ops.aten.ones.default": None,
|
197
|
+
"torch.ops.aten.permute.default": None,
|
198
|
+
"torch.ops.aten.pow.Scalar": None,
|
199
|
+
"torch.ops.aten.pow.Tensor_Scalar": None,
|
200
|
+
"torch.ops.aten.pow.Tensor_Tensor": None,
|
201
|
+
"torch.ops.aten.rand.default": None,
|
202
|
+
"torch.ops.aten.reflection_pad2d.default": None,
|
203
|
+
"torch.ops.aten.reciprocal.default": None,
|
204
|
+
"torch.ops.aten.relu.default": None,
|
205
|
+
"torch.ops.aten.relu_.default": None,
|
206
|
+
"torch.ops.aten.repeat.default": None,
|
207
|
+
"torch.ops.aten.roll.default": None,
|
208
|
+
"torch.ops.aten.rsqrt.default": None,
|
209
|
+
"torch.ops.aten.rsub.Scalar": None,
|
210
|
+
"torch.ops.aten.rsub.Tensor": None,
|
211
|
+
"torch.ops.aten.scalar_tensor.default": None,
|
212
|
+
"torch.ops.aten.scatter.src": None,
|
213
|
+
"torch.ops.aten.scatter.value": None,
|
214
|
+
"torch.ops.aten.select.int": None,
|
215
|
+
"torch.ops.aten.select_scatter.default": None,
|
216
|
+
"torch.ops.aten.sigmoid.default": None,
|
217
|
+
"torch.ops.aten.sigmoid_.default": None,
|
218
|
+
"torch.ops.aten.sign.default": None,
|
219
|
+
"torch.ops.aten.silu.default": None,
|
220
|
+
"torch.ops.aten.silu_.default": None,
|
221
|
+
"torch.ops.aten.sin.default": None,
|
222
|
+
"torch.ops.aten.sinh.default": None,
|
223
|
+
"torch.ops.aten.slice.Tensor": None,
|
224
|
+
"torch.ops.aten.slice_scatter.default": None,
|
225
|
+
"torch.ops.aten.sort.default": None,
|
226
|
+
"torch.ops.aten.split.Tensor": None,
|
227
|
+
"torch.ops.aten.split_with_sizes.default": None,
|
228
|
+
"torch.ops.aten.sqrt.default": None,
|
229
|
+
"torch.ops.aten.squeeze.dim": None,
|
230
|
+
"torch.ops.aten.squeeze.dims": None,
|
231
|
+
"torch.ops.aten.stack.default": None,
|
232
|
+
"torch.ops.aten.std.correction": None,
|
233
|
+
"torch.ops.aten.sub.default": None,
|
234
|
+
"torch.ops.aten.sub.Tensor": None,
|
235
|
+
"torch.ops.aten.sum.default": None,
|
236
|
+
"torch.ops.aten.sum.dim_IntList": None,
|
237
|
+
"torch.ops.aten.t.default": None,
|
238
|
+
"torch.ops.aten.tan.default": None,
|
239
|
+
"torch.ops.aten.tanh.default": None,
|
240
|
+
"torch.ops.aten.topk.default": None,
|
241
|
+
"torch.ops.aten.transpose.int": None,
|
242
|
+
"torch.ops.aten.tril.default": None,
|
243
|
+
"torch.ops.aten.tril_.default": None,
|
244
|
+
"torch.ops.aten.triu.default": None,
|
245
|
+
"torch.ops.aten.unbind.int": None,
|
246
|
+
"torch.ops.aten.unfold.default": None,
|
247
|
+
"torch.ops.aten.unsqueeze.default": None,
|
248
|
+
"torch.ops.aten.upsample_nearest2d.default": None,
|
249
|
+
"torch.ops.aten.var.correction": None,
|
250
|
+
"torch.ops.aten.var_mean.correction": None,
|
251
|
+
"torch.ops.aten.view.default": None,
|
252
|
+
"torch.ops.aten.where.self": None,
|
253
|
+
"torch.ops.aten.zeros.default": None,
|
254
|
+
"torch.ops.aten.zeros_like.default": None,
|
255
|
+
"torch.ops.torchvision.deform_conv2d.default": None,
|
256
|
+
"torch.ops.torchvision.roi_align.default": None,
|
257
|
+
"torch.ops.quantized_decomposed.quantize_per_tensor.default": None,
|
258
|
+
"torch.ops.quantized_decomposed.quantize_per_channel.default": None,
|
259
|
+
"torch.ops.quantized_decomposed.dequantize_per_tensor.default": None,
|
260
|
+
"torch.ops.quantized_decomposed.dequantize_per_channel.default": None
|
261
|
+
|
262
|
+
}
|
263
|
+
|
264
|
+
self.enabled_op_names = []
|
265
|
+
|
266
|
+
for op in _get_disabled_ops(options):
|
267
|
+
del support_dict[op]
|
268
|
+
|
269
|
+
super().__init__(support_dict)
|
270
|
+
|
271
|
+
def enable_by_name(self, node: Node):
|
272
|
+
self.enabled_op_names.append(node.name)
|
273
|
+
|
274
|
+
def is_node_supported(self, submodules: t.Mapping[str, Module], node: Node) -> bool:
|
275
|
+
# OpenVINO FX subgraph should be purely functional
|
276
|
+
if node.op not in CALLABLE_NODE_OPS:
|
277
|
+
return False
|
278
|
+
|
279
|
+
# ops in supported_dict doesn't have overload name
|
280
|
+
# use overloadpacket's qualified_name for OpOverload
|
281
|
+
if isinstance(node.target, OpOverload):
|
282
|
+
target = _get_qualified_name(node.target.overloadpacket)
|
283
|
+
|
284
|
+
if target in self._support_dict:
|
285
|
+
return True
|
286
|
+
|
287
|
+
if node.name in self.enabled_op_names:
|
288
|
+
return True
|
289
|
+
|
290
|
+
return super().is_node_supported(submodules, node)
|
@@ -0,0 +1,126 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# Copyright (C) 2018-2024 Intel Corporation
|
3
|
+
# SPDX-License-Identifier: Apache-2.0
|
4
|
+
|
5
|
+
# mypy: ignore-errors
|
6
|
+
|
7
|
+
from typing import Dict
|
8
|
+
|
9
|
+
import torch
|
10
|
+
from torch.nn import Module
|
11
|
+
from torch.fx import GraphModule, Node
|
12
|
+
from torch.fx.passes.infra.partitioner import CapabilityBasedPartitioner, Partition
|
13
|
+
|
14
|
+
from torch.fx.experimental.proxy_tensor import DecompositionInterpreter
|
15
|
+
from torch._decomp import decomposition_table
|
16
|
+
from torch.fx.experimental.proxy_tensor import make_fx
|
17
|
+
from torch.utils._pytree import tree_flatten, tree_map, tree_unflatten
|
18
|
+
from openvino.frontend.pytorch.torchdynamo.op_support import OperatorSupport
|
19
|
+
from openvino.frontend.pytorch.torchdynamo.backend_utils import _is_testing
|
20
|
+
|
21
|
+
import typing as t
|
22
|
+
import logging
|
23
|
+
|
24
|
+
logger = logging.getLogger(__name__)
|
25
|
+
logger.setLevel(logging.WARNING)
|
26
|
+
|
27
|
+
|
28
|
+
class PatternNode:
|
29
|
+
op_types = {}
|
30
|
+
|
31
|
+
def __init__(self):
|
32
|
+
self.op_types = {}
|
33
|
+
|
34
|
+
|
35
|
+
class Partitioner:
|
36
|
+
def __init__(self, options):
|
37
|
+
self.supported_ops = OperatorSupport(options)
|
38
|
+
|
39
|
+
def fx_serialize(self, graph_module: GraphModule, *args, **kwargs):
|
40
|
+
fx_gm = make_fx(graph_module)(*args)
|
41
|
+
return fx_gm
|
42
|
+
|
43
|
+
def add_get_attr_inputs(self, partitions: t.List[Partition]):
|
44
|
+
# TODO: Find a more efficient way to include input
|
45
|
+
# "get_attr" nodes to the partitions.
|
46
|
+
getattr_to_merge: Dict[Node, Node] = {}
|
47
|
+
for partition in partitions:
|
48
|
+
for pnode in partition.nodes:
|
49
|
+
for pnode_input in pnode.all_input_nodes:
|
50
|
+
if pnode_input.op in ["get_attr"] and pnode_input.op not in getattr_to_merge:
|
51
|
+
getattr_to_merge[pnode_input] = partition
|
52
|
+
for getattr_node, getattr_part in getattr_to_merge.items():
|
53
|
+
getattr_part.add_node(getattr_node)
|
54
|
+
|
55
|
+
def check_fully_supported(self, graph_module: GraphModule) -> bool:
|
56
|
+
num_fused = 0
|
57
|
+
for node in graph_module.graph.nodes:
|
58
|
+
if node.op == "call_module" and "fused_" in node.name:
|
59
|
+
num_fused += 1
|
60
|
+
elif node.op != "placeholder" and node.op != "output":
|
61
|
+
return False
|
62
|
+
if num_fused == 1:
|
63
|
+
return True
|
64
|
+
return False
|
65
|
+
|
66
|
+
def check_pattern(self, node: torch.fx.Node, pattern: PatternNode, enabled_ops: list) -> bool:
|
67
|
+
if node.op == "call_function":
|
68
|
+
if ("call_function" + ":" + str(node.target)) in pattern.op_types:
|
69
|
+
pt_input_nodes = node.all_input_nodes
|
70
|
+
pattern_input_ops = pattern.op_types["call_function" + ":" + str(node.target)]
|
71
|
+
if pattern_input_ops is None:
|
72
|
+
enabled_ops.append(node)
|
73
|
+
return True
|
74
|
+
if len(pt_input_nodes) != len(pattern_input_ops):
|
75
|
+
return False
|
76
|
+
for i in range(len(pt_input_nodes)):
|
77
|
+
if not self.check_pattern(pt_input_nodes[i], pattern_input_ops[i], enabled_ops):
|
78
|
+
return False
|
79
|
+
enabled_ops.append(node)
|
80
|
+
return True
|
81
|
+
elif node.op == "get_attr":
|
82
|
+
if "get_attr" in pattern.op_types:
|
83
|
+
return True
|
84
|
+
else:
|
85
|
+
return False
|
86
|
+
return False
|
87
|
+
|
88
|
+
def capture_gptq_patterns(self, graph_module: GraphModule):
|
89
|
+
const_0_node = PatternNode
|
90
|
+
const_0_node.op_types["get_attr"] = None
|
91
|
+
unsqueeze_0_node = PatternNode
|
92
|
+
unsqueeze_0_node.op_types["call_function:aten.unsqueeze.default"] = [const_0_node,]
|
93
|
+
expand_node = PatternNode
|
94
|
+
expand_node.op_types["call_function:aten.expand.default"] = [unsqueeze_0_node,]
|
95
|
+
const_1_node = PatternNode
|
96
|
+
const_1_node.op_types["get_attr"] = None
|
97
|
+
unsqueeze_1_node = PatternNode
|
98
|
+
unsqueeze_1_node.op_types["call_function:aten.unsqueeze.default"] = [const_1_node,]
|
99
|
+
bitwise_right_shift_node = PatternNode
|
100
|
+
bitwise_right_shift_node.op_types["call_function:aten.bitwise_right_shift.Tensor"] = [expand_node, unsqueeze_1_node]
|
101
|
+
to_copy_node = PatternNode
|
102
|
+
to_copy_node.op_types["call_function:aten._to_copy.default"] = [bitwise_right_shift_node,]
|
103
|
+
add_or_to_copy_node = PatternNode
|
104
|
+
add_or_to_copy_node.op_types["call_function:aten._to_copy.default"] = [bitwise_right_shift_node,]
|
105
|
+
add_or_to_copy_node.op_types["call_function:aten.add.Tensor"] = [to_copy_node,]
|
106
|
+
bitwise_and_node = PatternNode
|
107
|
+
bitwise_and_node.op_types["call_function:aten.bitwise_and.Scalar"] = [add_or_to_copy_node,]
|
108
|
+
|
109
|
+
for node in graph_module.graph.nodes:
|
110
|
+
if str(node.op) == "call_function" and str(node.target) == "aten.bitwise_and.Scalar":
|
111
|
+
enabled_ops = []
|
112
|
+
pattern_match = self.check_pattern(node, bitwise_and_node, enabled_ops)
|
113
|
+
if pattern_match:
|
114
|
+
for pattern_op in enabled_ops:
|
115
|
+
self.supported_ops.enable_by_name(pattern_op)
|
116
|
+
|
117
|
+
def make_partitions(self, graph_module: GraphModule, options) -> GraphModule:
|
118
|
+
allow_single_node_partition = _is_testing(options)
|
119
|
+
self.capture_gptq_patterns(graph_module)
|
120
|
+
partitioner = CapabilityBasedPartitioner(
|
121
|
+
graph_module, self.supported_ops, allows_single_node_partition=allow_single_node_partition)
|
122
|
+
partitions = partitioner.propose_partitions()
|
123
|
+
self.add_get_attr_inputs(partitions)
|
124
|
+
fused_graph_module = partitioner.fuse_partitions(partitions)
|
125
|
+
|
126
|
+
return fused_graph_module
|