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.
Files changed (234) hide show
  1. bigdl-core-npu/__init__.py +0 -0
  2. bigdl-core-npu/include/common.h +96 -0
  3. bigdl-core-npu/include/npu_llm.h +74 -0
  4. bigdl-core-npu/npu_llm.dll +0 -0
  5. bigdl-core-npu/npu_llm.lib +0 -0
  6. bigdl_core_npu-2.6.0b20250114.dist-info/METADATA +44 -0
  7. bigdl_core_npu-2.6.0b20250114.dist-info/RECORD +234 -0
  8. bigdl_core_npu-2.6.0b20250114.dist-info/WHEEL +5 -0
  9. bigdl_core_npu-2.6.0b20250114.dist-info/top_level.txt +2 -0
  10. intel_npu_acceleration_library/__init__.py +24 -0
  11. intel_npu_acceleration_library/_version.py +6 -0
  12. intel_npu_acceleration_library/backend/__init__.py +37 -0
  13. intel_npu_acceleration_library/backend/base.py +250 -0
  14. intel_npu_acceleration_library/backend/bindings.py +383 -0
  15. intel_npu_acceleration_library/backend/compression.py +24 -0
  16. intel_npu_acceleration_library/backend/convolution.py +58 -0
  17. intel_npu_acceleration_library/backend/factory.py +1161 -0
  18. intel_npu_acceleration_library/backend/linear.py +60 -0
  19. intel_npu_acceleration_library/backend/matmul.py +59 -0
  20. intel_npu_acceleration_library/backend/mlp.py +58 -0
  21. intel_npu_acceleration_library/backend/ops.py +142 -0
  22. intel_npu_acceleration_library/backend/qlinear.py +75 -0
  23. intel_npu_acceleration_library/backend/qmatmul.py +66 -0
  24. intel_npu_acceleration_library/backend/runtime.py +215 -0
  25. intel_npu_acceleration_library/backend/sdpa.py +107 -0
  26. intel_npu_acceleration_library/backend/tensor.py +1120 -0
  27. intel_npu_acceleration_library/backend/utils.py +70 -0
  28. intel_npu_acceleration_library/compiler.py +194 -0
  29. intel_npu_acceleration_library/device.py +230 -0
  30. intel_npu_acceleration_library/dtypes.py +155 -0
  31. intel_npu_acceleration_library/external/openvino/__init__.py +72 -0
  32. intel_npu_acceleration_library/external/openvino/_offline_transformations/__init__.py +21 -0
  33. intel_npu_acceleration_library/external/openvino/_pyopenvino.cp310-win_amd64.pyd +0 -0
  34. intel_npu_acceleration_library/external/openvino/_pyopenvino.cp311-win_amd64.pyd +0 -0
  35. intel_npu_acceleration_library/external/openvino/_pyopenvino.cp312-win_amd64.pyd +0 -0
  36. intel_npu_acceleration_library/external/openvino/_pyopenvino.cp38-win_amd64.pyd +0 -0
  37. intel_npu_acceleration_library/external/openvino/_pyopenvino.cp39-win_amd64.pyd +0 -0
  38. intel_npu_acceleration_library/external/openvino/experimental/__init__.py +14 -0
  39. intel_npu_acceleration_library/external/openvino/frontend/__init__.py +34 -0
  40. intel_npu_acceleration_library/external/openvino/frontend/frontend.py +44 -0
  41. intel_npu_acceleration_library/external/openvino/frontend/jax/__init__.py +15 -0
  42. intel_npu_acceleration_library/external/openvino/frontend/jax/jaxpr_decoder.py +293 -0
  43. intel_npu_acceleration_library/external/openvino/frontend/jax/passes.py +65 -0
  44. intel_npu_acceleration_library/external/openvino/frontend/jax/utils.py +182 -0
  45. intel_npu_acceleration_library/external/openvino/frontend/onnx/__init__.py +15 -0
  46. intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp310-win_amd64.pyd +0 -0
  47. intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp311-win_amd64.pyd +0 -0
  48. intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp312-win_amd64.pyd +0 -0
  49. intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp38-win_amd64.pyd +0 -0
  50. intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp39-win_amd64.pyd +0 -0
  51. intel_npu_acceleration_library/external/openvino/frontend/paddle/__init__.py +15 -0
  52. intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp310-win_amd64.pyd +0 -0
  53. intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp311-win_amd64.pyd +0 -0
  54. intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp312-win_amd64.pyd +0 -0
  55. intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp38-win_amd64.pyd +0 -0
  56. intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp39-win_amd64.pyd +0 -0
  57. intel_npu_acceleration_library/external/openvino/frontend/pytorch/__init__.py +19 -0
  58. intel_npu_acceleration_library/external/openvino/frontend/pytorch/fx_decoder.py +370 -0
  59. intel_npu_acceleration_library/external/openvino/frontend/pytorch/gptq.py +180 -0
  60. intel_npu_acceleration_library/external/openvino/frontend/pytorch/module_extension.py +39 -0
  61. intel_npu_acceleration_library/external/openvino/frontend/pytorch/patch_model.py +118 -0
  62. intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp310-win_amd64.pyd +0 -0
  63. intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp311-win_amd64.pyd +0 -0
  64. intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp312-win_amd64.pyd +0 -0
  65. intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp38-win_amd64.pyd +0 -0
  66. intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp39-win_amd64.pyd +0 -0
  67. intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/backend.py +131 -0
  68. intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/backend_utils.py +85 -0
  69. intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/compile.py +141 -0
  70. intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/decompositions.py +116 -0
  71. intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/execute.py +189 -0
  72. intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/op_support.py +290 -0
  73. intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/partition.py +126 -0
  74. intel_npu_acceleration_library/external/openvino/frontend/pytorch/ts_decoder.py +568 -0
  75. intel_npu_acceleration_library/external/openvino/frontend/pytorch/utils.py +258 -0
  76. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/__init__.py +16 -0
  77. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/graph_iterator.py +116 -0
  78. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/node_decoder.py +219 -0
  79. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp310-win_amd64.pyd +0 -0
  80. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp311-win_amd64.pyd +0 -0
  81. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp312-win_amd64.pyd +0 -0
  82. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp38-win_amd64.pyd +0 -0
  83. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp39-win_amd64.pyd +0 -0
  84. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/utils.py +481 -0
  85. intel_npu_acceleration_library/external/openvino/helpers/__init__.py +6 -0
  86. intel_npu_acceleration_library/external/openvino/helpers/packing.py +87 -0
  87. intel_npu_acceleration_library/external/openvino/preprocess/README.md +60 -0
  88. intel_npu_acceleration_library/external/openvino/preprocess/__init__.py +28 -0
  89. intel_npu_acceleration_library/external/openvino/preprocess/torchvision/__init__.py +15 -0
  90. intel_npu_acceleration_library/external/openvino/preprocess/torchvision/preprocess_converter.py +47 -0
  91. intel_npu_acceleration_library/external/openvino/preprocess/torchvision/requirements.txt +5 -0
  92. intel_npu_acceleration_library/external/openvino/preprocess/torchvision/torchvision_preprocessing.py +347 -0
  93. intel_npu_acceleration_library/external/openvino/properties/__init__.py +22 -0
  94. intel_npu_acceleration_library/external/openvino/properties/_properties.py +55 -0
  95. intel_npu_acceleration_library/external/openvino/properties/device/__init__.py +14 -0
  96. intel_npu_acceleration_library/external/openvino/properties/hint/__init__.py +15 -0
  97. intel_npu_acceleration_library/external/openvino/properties/intel_auto/__init__.py +12 -0
  98. intel_npu_acceleration_library/external/openvino/properties/intel_cpu/__init__.py +8 -0
  99. intel_npu_acceleration_library/external/openvino/properties/intel_gpu/__init__.py +12 -0
  100. intel_npu_acceleration_library/external/openvino/properties/intel_gpu/hint/__init__.py +11 -0
  101. intel_npu_acceleration_library/external/openvino/properties/log/__init__.py +11 -0
  102. intel_npu_acceleration_library/external/openvino/properties/streams/__init__.py +11 -0
  103. intel_npu_acceleration_library/external/openvino/runtime/__init__.py +85 -0
  104. intel_npu_acceleration_library/external/openvino/runtime/exceptions.py +17 -0
  105. intel_npu_acceleration_library/external/openvino/runtime/ie_api.py +631 -0
  106. intel_npu_acceleration_library/external/openvino/runtime/op/__init__.py +19 -0
  107. intel_npu_acceleration_library/external/openvino/runtime/op/util/__init__.py +22 -0
  108. intel_npu_acceleration_library/external/openvino/runtime/opset1/__init__.py +112 -0
  109. intel_npu_acceleration_library/external/openvino/runtime/opset1/ops.py +3068 -0
  110. intel_npu_acceleration_library/external/openvino/runtime/opset10/__init__.py +179 -0
  111. intel_npu_acceleration_library/external/openvino/runtime/opset10/ops.py +173 -0
  112. intel_npu_acceleration_library/external/openvino/runtime/opset11/__init__.py +179 -0
  113. intel_npu_acceleration_library/external/openvino/runtime/opset11/ops.py +107 -0
  114. intel_npu_acceleration_library/external/openvino/runtime/opset12/__init__.py +180 -0
  115. intel_npu_acceleration_library/external/openvino/runtime/opset12/ops.py +120 -0
  116. intel_npu_acceleration_library/external/openvino/runtime/opset13/__init__.py +188 -0
  117. intel_npu_acceleration_library/external/openvino/runtime/opset13/ops.py +398 -0
  118. intel_npu_acceleration_library/external/openvino/runtime/opset14/__init__.py +190 -0
  119. intel_npu_acceleration_library/external/openvino/runtime/opset14/ops.py +171 -0
  120. intel_npu_acceleration_library/external/openvino/runtime/opset15/__init__.py +17 -0
  121. intel_npu_acceleration_library/external/openvino/runtime/opset15/ops.py +276 -0
  122. intel_npu_acceleration_library/external/openvino/runtime/opset2/__init__.py +118 -0
  123. intel_npu_acceleration_library/external/openvino/runtime/opset2/ops.py +216 -0
  124. intel_npu_acceleration_library/external/openvino/runtime/opset3/__init__.py +134 -0
  125. intel_npu_acceleration_library/external/openvino/runtime/opset3/ops.py +638 -0
  126. intel_npu_acceleration_library/external/openvino/runtime/opset4/__init__.py +145 -0
  127. intel_npu_acceleration_library/external/openvino/runtime/opset4/ops.py +464 -0
  128. intel_npu_acceleration_library/external/openvino/runtime/opset5/__init__.py +152 -0
  129. intel_npu_acceleration_library/external/openvino/runtime/opset5/ops.py +372 -0
  130. intel_npu_acceleration_library/external/openvino/runtime/opset6/__init__.py +154 -0
  131. intel_npu_acceleration_library/external/openvino/runtime/opset6/ops.py +215 -0
  132. intel_npu_acceleration_library/external/openvino/runtime/opset7/__init__.py +158 -0
  133. intel_npu_acceleration_library/external/openvino/runtime/opset7/ops.py +169 -0
  134. intel_npu_acceleration_library/external/openvino/runtime/opset8/__init__.py +169 -0
  135. intel_npu_acceleration_library/external/openvino/runtime/opset8/ops.py +787 -0
  136. intel_npu_acceleration_library/external/openvino/runtime/opset9/__init__.py +175 -0
  137. intel_npu_acceleration_library/external/openvino/runtime/opset9/ops.py +341 -0
  138. intel_npu_acceleration_library/external/openvino/runtime/opset_utils.py +22 -0
  139. intel_npu_acceleration_library/external/openvino/runtime/passes/__init__.py +19 -0
  140. intel_npu_acceleration_library/external/openvino/runtime/passes/graph_rewrite.py +33 -0
  141. intel_npu_acceleration_library/external/openvino/runtime/passes/manager.py +26 -0
  142. intel_npu_acceleration_library/external/openvino/runtime/properties/__init__.py +40 -0
  143. intel_npu_acceleration_library/external/openvino/runtime/properties/hint/__init__.py +25 -0
  144. intel_npu_acceleration_library/external/openvino/runtime/utils/__init__.py +7 -0
  145. intel_npu_acceleration_library/external/openvino/runtime/utils/broadcasting.py +44 -0
  146. intel_npu_acceleration_library/external/openvino/runtime/utils/data_helpers/__init__.py +8 -0
  147. intel_npu_acceleration_library/external/openvino/runtime/utils/data_helpers/data_dispatcher.py +447 -0
  148. intel_npu_acceleration_library/external/openvino/runtime/utils/data_helpers/wrappers.py +148 -0
  149. intel_npu_acceleration_library/external/openvino/runtime/utils/decorators.py +156 -0
  150. intel_npu_acceleration_library/external/openvino/runtime/utils/input_validation.py +133 -0
  151. intel_npu_acceleration_library/external/openvino/runtime/utils/node_factory.py +127 -0
  152. intel_npu_acceleration_library/external/openvino/runtime/utils/reduction.py +25 -0
  153. intel_npu_acceleration_library/external/openvino/runtime/utils/types.py +175 -0
  154. intel_npu_acceleration_library/external/openvino/tools/__init__.py +4 -0
  155. intel_npu_acceleration_library/external/openvino/tools/benchmark/__init__.py +3 -0
  156. intel_npu_acceleration_library/external/openvino/tools/benchmark/benchmark.py +186 -0
  157. intel_npu_acceleration_library/external/openvino/tools/benchmark/main.py +695 -0
  158. intel_npu_acceleration_library/external/openvino/tools/benchmark/parameters.py +199 -0
  159. intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/__init__.py +3 -0
  160. intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/constants.py +26 -0
  161. intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/inputs_filling.py +482 -0
  162. intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/logging.py +8 -0
  163. intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/statistics_report.py +296 -0
  164. intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/utils.py +836 -0
  165. intel_npu_acceleration_library/external/openvino/tools/ovc/__init__.py +20 -0
  166. intel_npu_acceleration_library/external/openvino/tools/ovc/__main__.py +10 -0
  167. intel_npu_acceleration_library/external/openvino/tools/ovc/cli_parser.py +633 -0
  168. intel_npu_acceleration_library/external/openvino/tools/ovc/convert.py +102 -0
  169. intel_npu_acceleration_library/external/openvino/tools/ovc/convert_data_type.py +82 -0
  170. intel_npu_acceleration_library/external/openvino/tools/ovc/convert_impl.py +550 -0
  171. intel_npu_acceleration_library/external/openvino/tools/ovc/environment_setup_utils.py +50 -0
  172. intel_npu_acceleration_library/external/openvino/tools/ovc/error.py +49 -0
  173. intel_npu_acceleration_library/external/openvino/tools/ovc/get_ov_update_message.py +16 -0
  174. intel_npu_acceleration_library/external/openvino/tools/ovc/help.py +45 -0
  175. intel_npu_acceleration_library/external/openvino/tools/ovc/logger.py +91 -0
  176. intel_npu_acceleration_library/external/openvino/tools/ovc/main.py +40 -0
  177. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/__init__.py +2 -0
  178. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/analysis.py +46 -0
  179. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/check_config.py +57 -0
  180. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/extractor.py +447 -0
  181. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/jax_frontend_utils.py +19 -0
  182. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/layout_utils.py +73 -0
  183. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/moc_emit_ir.py +32 -0
  184. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/offline_transformations.py +107 -0
  185. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/paddle_frontend_utils.py +83 -0
  186. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/pipeline.py +298 -0
  187. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/preprocessing.py +220 -0
  188. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/pytorch_frontend_utils.py +214 -0
  189. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/shape_utils.py +109 -0
  190. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/type_utils.py +82 -0
  191. intel_npu_acceleration_library/external/openvino/tools/ovc/ovc.py +13 -0
  192. intel_npu_acceleration_library/external/openvino/tools/ovc/telemetry_params.py +6 -0
  193. intel_npu_acceleration_library/external/openvino/tools/ovc/telemetry_stub.py +28 -0
  194. intel_npu_acceleration_library/external/openvino/tools/ovc/telemetry_utils.py +118 -0
  195. intel_npu_acceleration_library/external/openvino/tools/ovc/utils.py +196 -0
  196. intel_npu_acceleration_library/external/openvino/tools/ovc/version.py +80 -0
  197. intel_npu_acceleration_library/external/openvino/torch/__init__.py +5 -0
  198. intel_npu_acceleration_library/external/openvino/utils.py +115 -0
  199. intel_npu_acceleration_library/functional/__init__.py +8 -0
  200. intel_npu_acceleration_library/functional/scaled_dot_product_attention.py +47 -0
  201. intel_npu_acceleration_library/lib/Release/cache.json +113732 -0
  202. intel_npu_acceleration_library/lib/Release/intel_npu_acceleration_library.dll +0 -0
  203. intel_npu_acceleration_library/lib/Release/openvino.dll +0 -0
  204. intel_npu_acceleration_library/lib/Release/openvino_auto_batch_plugin.dll +0 -0
  205. intel_npu_acceleration_library/lib/Release/openvino_auto_plugin.dll +0 -0
  206. intel_npu_acceleration_library/lib/Release/openvino_c.dll +0 -0
  207. intel_npu_acceleration_library/lib/Release/openvino_hetero_plugin.dll +0 -0
  208. intel_npu_acceleration_library/lib/Release/openvino_intel_cpu_plugin.dll +0 -0
  209. intel_npu_acceleration_library/lib/Release/openvino_intel_gpu_plugin.dll +0 -0
  210. intel_npu_acceleration_library/lib/Release/openvino_intel_npu_plugin.dll +0 -0
  211. intel_npu_acceleration_library/lib/Release/openvino_ir_frontend.dll +0 -0
  212. intel_npu_acceleration_library/lib/Release/openvino_onnx_frontend.dll +0 -0
  213. intel_npu_acceleration_library/lib/Release/openvino_paddle_frontend.dll +0 -0
  214. intel_npu_acceleration_library/lib/Release/openvino_pytorch_frontend.dll +0 -0
  215. intel_npu_acceleration_library/lib/Release/openvino_tensorflow_frontend.dll +0 -0
  216. intel_npu_acceleration_library/lib/Release/openvino_tensorflow_lite_frontend.dll +0 -0
  217. intel_npu_acceleration_library/lib/Release/tbb12.dll +0 -0
  218. intel_npu_acceleration_library/lib/Release/tbb12_debug.dll +0 -0
  219. intel_npu_acceleration_library/lib/Release/tbbbind_2_5.dll +0 -0
  220. intel_npu_acceleration_library/lib/Release/tbbbind_2_5_debug.dll +0 -0
  221. intel_npu_acceleration_library/lib/Release/tbbmalloc.dll +0 -0
  222. intel_npu_acceleration_library/lib/Release/tbbmalloc_debug.dll +0 -0
  223. intel_npu_acceleration_library/lib/Release/tbbmalloc_proxy.dll +0 -0
  224. intel_npu_acceleration_library/lib/Release/tbbmalloc_proxy_debug.dll +0 -0
  225. intel_npu_acceleration_library/modelling.py +150 -0
  226. intel_npu_acceleration_library/nn/__init__.py +20 -0
  227. intel_npu_acceleration_library/nn/autograd.py +68 -0
  228. intel_npu_acceleration_library/nn/conv.py +257 -0
  229. intel_npu_acceleration_library/nn/functional.py +1207 -0
  230. intel_npu_acceleration_library/nn/linear.py +162 -0
  231. intel_npu_acceleration_library/nn/llm.py +417 -0
  232. intel_npu_acceleration_library/nn/module.py +393 -0
  233. intel_npu_acceleration_library/optimizations.py +157 -0
  234. 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