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,141 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Copyright (C) 2018-2024 Intel Corporation
3
+ # SPDX-License-Identifier: Apache-2.0
4
+
5
+ # flake8: noqa
6
+ # mypy: ignore-errors
7
+
8
+ import os
9
+ import torch
10
+ import torch.overrides
11
+
12
+ from hashlib import sha256
13
+ from torch.fx import GraphModule
14
+
15
+ from openvino.frontend import FrontEndManager
16
+ from openvino.frontend.pytorch.fx_decoder import TorchFXPythonDecoder
17
+ from openvino.runtime import Core, Type, PartialShape, serialize
18
+ from openvino.frontend.pytorch.torchdynamo.backend_utils import _get_cache_dir, _get_device, _get_config, _is_cache_dir_in_config
19
+
20
+ from typing import Callable, Optional
21
+
22
+ import logging
23
+ logger = logging.getLogger(__name__)
24
+ logger.setLevel(logging.WARNING)
25
+
26
+ def cached_model_name(model_hash_str, device, args, cache_root, reversed = False):
27
+ if model_hash_str is None:
28
+ return None
29
+
30
+ model_cache_dir = cache_root + "/model/"
31
+
32
+ try:
33
+ os.makedirs(model_cache_dir, exist_ok=True)
34
+ file_name = model_cache_dir + model_hash_str + "_" + device
35
+ except OSError as error:
36
+ logger.warning(f"Cache directory {cache_root} cannot be created. Model caching is disabled. Error: {error }")
37
+ return None
38
+
39
+ inputs_str = ""
40
+ for idx, input_data in enumerate(args):
41
+ if reversed:
42
+ inputs_str = "_" + str(input_data.type()) + str(input_data.size())[11:-1].replace(" ", "") + inputs_str
43
+ else:
44
+ inputs_str += "_" + str(input_data.type()) + str(input_data.size())[11:-1].replace(" ", "")
45
+ inputs_str = sha256(inputs_str.encode('utf-8')).hexdigest()
46
+ file_name += inputs_str
47
+
48
+ return file_name
49
+
50
+ def openvino_compile_cached_model(cached_model_path, options, *example_inputs):
51
+ core = Core()
52
+ om = core.read_model(cached_model_path + ".xml")
53
+
54
+ dtype_mapping = {
55
+ torch.float32: Type.f32,
56
+ torch.float64: Type.f64,
57
+ torch.float16: Type.f16,
58
+ torch.int64: Type.i64,
59
+ torch.int32: Type.i32,
60
+ torch.uint8: Type.u8,
61
+ torch.int8: Type.i8,
62
+ torch.bool: Type.boolean
63
+ }
64
+
65
+ for idx, input_data in enumerate(example_inputs):
66
+ om.inputs[idx].get_node().set_element_type(dtype_mapping[input_data.dtype])
67
+ om.inputs[idx].get_node().set_partial_shape(PartialShape(list(input_data.shape)))
68
+ om.validate_nodes_and_infer_types()
69
+
70
+ config = {}
71
+
72
+ if _is_cache_dir_in_config(options):
73
+ config = _get_config(options)
74
+ else:
75
+ config["CACHE_DIR"] = _get_cache_dir(options)
76
+
77
+ compiled_model = core.compile_model(om, _get_device(options), config)
78
+
79
+ return compiled_model
80
+
81
+ def openvino_compile(gm: GraphModule, *args, model_hash_str: str = None, options=None):
82
+ core = Core()
83
+
84
+ device = _get_device(options)
85
+ cache_root = _get_cache_dir(options)
86
+ file_name = cached_model_name(model_hash_str, device, args, cache_root)
87
+
88
+ if file_name is not None and os.path.isfile(file_name + ".xml") and os.path.isfile(file_name + ".bin"):
89
+ om = core.read_model(file_name + ".xml")
90
+ else:
91
+ fe_manager = FrontEndManager()
92
+ fe = fe_manager.load_by_framework("pytorch")
93
+
94
+ input_shapes = []
95
+ input_types = []
96
+ for idx, input_data in enumerate(args):
97
+ if isinstance(input_data, int):
98
+ input_types.append(torch.int64)
99
+ input_shapes.append(torch.Size([1]))
100
+ else:
101
+ input_types.append(input_data.type())
102
+ input_shapes.append(input_data.size())
103
+
104
+ decoder = TorchFXPythonDecoder(gm)
105
+
106
+ im = fe.load(decoder)
107
+
108
+ om = fe.convert(im)
109
+
110
+ if file_name is not None:
111
+ serialize(om, file_name + ".xml", file_name + ".bin")
112
+
113
+ dtype_mapping = {
114
+ torch.float32: Type.f32,
115
+ torch.float64: Type.f64,
116
+ torch.float16: Type.f16,
117
+ torch.int64: Type.i64,
118
+ torch.int32: Type.i32,
119
+ torch.uint8: Type.u8,
120
+ torch.int8: Type.i8,
121
+ torch.bool: Type.boolean
122
+ }
123
+
124
+ for idx, input_data in enumerate(args):
125
+ if isinstance(input_data, int):
126
+ om.inputs[idx].get_node().set_element_type(dtype_mapping[torch.int64])
127
+ om.inputs[idx].get_node().set_partial_shape(PartialShape(list(torch.Size([1]))))
128
+ else:
129
+ om.inputs[idx].get_node().set_element_type(dtype_mapping[input_data.dtype])
130
+ om.inputs[idx].get_node().set_partial_shape(PartialShape(list(decoder.input_shapes[idx])))
131
+
132
+ om.validate_nodes_and_infer_types()
133
+
134
+ config = _get_config(options)
135
+
136
+ if model_hash_str is not None:
137
+ if not _is_cache_dir_in_config(options):
138
+ config["CACHE_DIR"] = cache_root
139
+
140
+ compiled = core.compile_model(om, device, config)
141
+ return compiled
@@ -0,0 +1,116 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Copyright (C) 2018-2024 Intel Corporation
3
+ # SPDX-License-Identifier: Apache-2.0
4
+
5
+ # flake8: noqa
6
+ # mypy: ignore-errors
7
+
8
+ import torch
9
+ from torch._decomp.decompositions import aten, pw_cast_for_opmath
10
+ from torch._decomp import register_decomposition, get_decompositions
11
+
12
+
13
+ @register_decomposition(aten.convolution_backward)
14
+ @pw_cast_for_opmath
15
+ def convolution_backward(
16
+ grad_output,
17
+ inp,
18
+ weight,
19
+ bias,
20
+ stride,
21
+ padding,
22
+ dilation,
23
+ transposed,
24
+ output_padding,
25
+ groups,
26
+ output_mask,
27
+ ):
28
+ if stride == [2, 2]:
29
+ output_padding = [1, 1]
30
+
31
+ # Compute the gradient of the input tensor
32
+ grad_input = torch.nn.functional.conv_transpose2d(
33
+ grad_output, weight, stride=stride, padding=padding, dilation=dilation, groups=groups, output_padding=output_padding
34
+ )
35
+
36
+ # Compute the gradient of the weight tensor
37
+ grad_weight = torch.nn.functional.conv_transpose2d(
38
+ inp, weight.transpose(0, 1), stride=stride, padding=padding, dilation=dilation, groups=groups, output_padding=output_padding
39
+ )
40
+
41
+ # Compute the gradient of the bias tensor
42
+ if bias is not None:
43
+ grad_bias = grad_output.sum([0, 2, 3], keepdim=True)
44
+ else:
45
+ grad_bias = None
46
+
47
+ return grad_input, grad_weight, grad_bias
48
+
49
+ if len(get_decompositions([aten._scaled_dot_product_flash_attention.default])) == 0:
50
+ @register_decomposition(aten._scaled_dot_product_flash_attention.default)
51
+ def scaled_dot_product_flash_attention(
52
+ query,
53
+ key,
54
+ value,
55
+ dropout_p=0.0,
56
+ is_causal=False,
57
+ *,
58
+ return_debug_mask=False,
59
+ scale=None,
60
+ ):
61
+ batch_size, num_head, q_size, head_size = (
62
+ query.shape[0],
63
+ query.shape[1],
64
+ query.shape[2],
65
+ query.shape[3],
66
+ )
67
+
68
+ logsumexp = torch.empty([batch_size, q_size, num_head, head_size], dtype=torch.float)
69
+ cum_seq_q, cum_seq_k = torch.empty([], dtype=torch.long), torch.empty(
70
+ [], dtype=torch.long
71
+ )
72
+ max_q, max_k = 0, 0
73
+ philox_seed, philox_offset = torch.empty([], dtype=torch.long), torch.empty(
74
+ [], dtype=torch.long
75
+ )
76
+ debug_attn_mask = torch.empty(
77
+ [],
78
+ dtype=query.dtype,
79
+ device=query.device,
80
+ requires_grad=query.requires_grad,
81
+ )
82
+ output, _ = aten._scaled_dot_product_attention_math.default(
83
+ query, key, value, None, dropout_p, is_causal, None, scale=scale
84
+ )
85
+
86
+ scores = torch.matmul(query, key.transpose(-2, -1)) / (key.size(-1) ** 0.5)
87
+ logsumexp = torch.logsumexp(scores, dim=-1)
88
+
89
+ output = output.transpose(1, 2).contiguous(memory_format=torch.contiguous_format)
90
+ return (
91
+ output.transpose(1, 2),
92
+ logsumexp,
93
+ cum_seq_q,
94
+ cum_seq_k,
95
+ max_q,
96
+ max_k,
97
+ philox_seed,
98
+ philox_offset,
99
+ debug_attn_mask,
100
+ )
101
+
102
+
103
+ def get_aot_decomposition_list():
104
+ return ([torch.ops.aten._scaled_dot_product_flash_attention.default,
105
+ torch.ops.aten._softmax.default,
106
+ torch.ops.aten._softmax_backward_data.default,
107
+ torch.ops.aten.convolution_backward.default,
108
+ torch.ops.aten.gelu_backward.default,
109
+ torch.ops.aten.native_group_norm.default,
110
+ torch.ops.aten.native_group_norm_backward.default,
111
+ torch.ops.aten.native_layer_norm.default,
112
+ torch.ops.aten.native_layer_norm_backward.default,
113
+ torch.ops.aten.slice_backward.default])
114
+
115
+ def get_inf_decomposition_list():
116
+ return ([torch.ops.aten.nll_loss_forward.default])
@@ -0,0 +1,189 @@
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 copy import deepcopy
8
+ from dataclasses import dataclass
9
+ from functools import lru_cache
10
+ from types import MappingProxyType
11
+ from warnings import warn
12
+
13
+ import torch
14
+ import torch.overrides
15
+
16
+ from torch.fx import GraphModule
17
+ from torch.utils._pytree import tree_flatten, tree_map, tree_unflatten
18
+
19
+ from openvino.frontend import FrontEndManager
20
+ from openvino.frontend.pytorch.fx_decoder import TorchFXPythonDecoder
21
+ from openvino.frontend.pytorch.torchdynamo.partition import Partitioner
22
+ from openvino.frontend.pytorch.torchdynamo.compile import openvino_compile
23
+ from openvino.runtime import Core, Type, PartialShape
24
+ from openvino.frontend.pytorch.torchdynamo.backend_utils import _get_cache_dir, _get_device, _get_aot_autograd
25
+
26
+ from typing import Callable, Optional, Any
27
+
28
+ from torch.fx.experimental.proxy_tensor import make_fx, wrapper_and_args_for_make_fx
29
+
30
+ import logging
31
+ logger = logging.getLogger(__name__)
32
+ logger.setLevel(logging.WARNING)
33
+
34
+
35
+ DEFAULT_OPENVINO_PYTHON_CONFIG = MappingProxyType(
36
+ {
37
+ "use_python_fusion_cache": True,
38
+ "allow_single_op_fusion": True,
39
+ },
40
+ )
41
+
42
+ compiled_cache = {}
43
+ req_cache = {}
44
+ max_openvino_partitions = 0
45
+ partitioned_modules = {}
46
+
47
+
48
+ def execute(
49
+ gm: GraphModule,
50
+ *args,
51
+ executor: str = "openvino",
52
+ executor_parameters: Optional[dict] = None,
53
+ options: Optional[Any] = None,
54
+ ):
55
+ if executor == "openvino":
56
+ return openvino_execute_partitioned(gm, *args, executor_parameters=executor_parameters, options=options)
57
+ elif executor == "strictly_openvino":
58
+ return openvino_execute(gm, *args, executor_parameters=executor_parameters)
59
+
60
+ msg = "Received unexpected value for 'executor': {0}. Allowed values are: openvino, strictly_openvino.".format(executor)
61
+ raise ValueError(msg)
62
+
63
+
64
+ import numpy as np
65
+
66
+
67
+ def execute_cached(compiled_model, *args):
68
+ ov_inputs = [a.detach().cpu().numpy() for a in args]
69
+ ov_inputs.reverse()
70
+ res = compiled_model(ov_inputs)
71
+ result = [torch.from_numpy(res[out]) for out in compiled_model.outputs]
72
+ return result
73
+
74
+
75
+ def openvino_execute(gm: GraphModule, *args, executor_parameters=None, partition_id, options):
76
+
77
+ executor_parameters = executor_parameters or DEFAULT_OPENVINO_PYTHON_CONFIG
78
+
79
+ use_cache = executor_parameters.get(
80
+ "use_python_fusion_cache",
81
+ DEFAULT_OPENVINO_PYTHON_CONFIG["use_python_fusion_cache"],
82
+ )
83
+ global compiled_cache
84
+
85
+ model_hash_str = executor_parameters.get("model_hash_str", None)
86
+ if model_hash_str is not None:
87
+ fully_supported = False
88
+ if len(model_hash_str) > 3 and model_hash_str[-3:] == "_fs":
89
+ fully_supported = True
90
+ if not fully_supported:
91
+ model_hash_str = model_hash_str + "_p" + str(partition_id)
92
+
93
+ if use_cache and (partition_id in compiled_cache):
94
+ compiled = compiled_cache[partition_id]
95
+ req = req_cache[partition_id]
96
+ else:
97
+ compiled = openvino_compile(gm, *args, model_hash_str=model_hash_str, options=options)
98
+ compiled_cache[partition_id] = compiled
99
+ req = compiled.create_infer_request()
100
+ req_cache[partition_id] = req
101
+
102
+ flat_args, _ = tree_flatten(args)
103
+ ov_inputs = []
104
+ for arg in flat_args:
105
+ ov_inputs.append((arg if isinstance(arg, int) else arg.detach().cpu().numpy()))
106
+
107
+ res = req.infer(ov_inputs, share_inputs=True, share_outputs=True)
108
+
109
+ results1 = [torch.from_numpy(res[out]) for out in compiled.outputs]
110
+ if len(results1) == 1:
111
+ return results1[0]
112
+ return results1
113
+
114
+
115
+ class OpenVINOGraphModule(torch.nn.Module):
116
+ def __init__(self, gm, partition_id, use_python_fusion_cache, model_hash_str: str = None, options=None):
117
+ super().__init__()
118
+ self.gm = gm
119
+ self.partition_id = partition_id
120
+ self.executor_parameters = {"use_python_fusion_cache": use_python_fusion_cache,
121
+ "model_hash_str": model_hash_str}
122
+ self.perm_fallback = False
123
+ self.options = options
124
+
125
+ def __call__(self, *args):
126
+ if self.perm_fallback:
127
+ return self.gm(*args)
128
+
129
+ try:
130
+ result = openvino_execute(self.gm, *args, executor_parameters=self.executor_parameters, partition_id=self.partition_id, options=self.options)
131
+ except Exception:
132
+ logger.debug("OpenVINO execution failed. Falling back to native PyTorch execution.")
133
+ self.perm_fallback = True
134
+ return self.gm(*args)
135
+
136
+ return result
137
+
138
+
139
+ def partition_graph(gm: GraphModule, use_python_fusion_cache: bool, model_hash_str: str = None, options=None):
140
+ global max_openvino_partitions
141
+ partition_id = max_openvino_partitions
142
+ for node in gm.graph.nodes:
143
+ # TODO: use a better way to identify fused submodule
144
+ if node.op == "call_module" and "fused_" in node.name:
145
+ openvino_submodule = getattr(gm, node.name)
146
+ gm.delete_submodule(node.target)
147
+ gm.add_submodule(
148
+ node.target,
149
+ OpenVINOGraphModule(openvino_submodule, partition_id, use_python_fusion_cache,
150
+ model_hash_str=model_hash_str, options=options),
151
+ )
152
+ partition_id = partition_id + 1
153
+
154
+ max_openvino_partitions = partition_id
155
+
156
+ return gm
157
+
158
+
159
+ def openvino_execute_partitioned(gm: GraphModule, *args, executor_parameters=None, options=None):
160
+ executor_parameters = executor_parameters or DEFAULT_OPENVINO_PYTHON_CONFIG
161
+
162
+ global partitioned_modules
163
+
164
+ use_python_fusion_cache = executor_parameters.get(
165
+ "use_python_fusion_cache",
166
+ DEFAULT_OPENVINO_PYTHON_CONFIG["use_python_fusion_cache"],
167
+ )
168
+ model_hash_str = executor_parameters.get("model_hash_str", None)
169
+
170
+ signature = str(id(gm))
171
+ if (not _get_aot_autograd(options)):
172
+ for idx, input_data in enumerate(args):
173
+ if isinstance(input_data, torch.Tensor):
174
+ signature = signature + "_" + str(idx) + ":" + str(input_data.type())[6:] + ":" + str(input_data.size())[11:-1].replace(" ", "")
175
+ else:
176
+ signature = signature + "_" + str(idx) + ":" + type(input_data).__name__ + ":val(" + str(input_data) + ")"
177
+
178
+ if signature not in partitioned_modules:
179
+ partitioned_modules[signature] = partition_graph(gm, use_python_fusion_cache=use_python_fusion_cache,
180
+ model_hash_str=model_hash_str, options=options)
181
+ return partitioned_modules[signature](*args)
182
+
183
+
184
+ def clear_caches():
185
+ global partitioned_modules
186
+ global compiled_cache
187
+
188
+ compiled_cache.clear()
189
+ partitioned_modules.clear()