bigdl-core-npu 2.5.0__cp310-cp310-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 (223) hide show
  1. bigdl_core_npu-2.5.0.dist-info/METADATA +35 -0
  2. bigdl_core_npu-2.5.0.dist-info/RECORD +223 -0
  3. bigdl_core_npu-2.5.0.dist-info/WHEEL +5 -0
  4. bigdl_core_npu-2.5.0.dist-info/top_level.txt +1 -0
  5. intel_npu_acceleration_library/__init__.py +24 -0
  6. intel_npu_acceleration_library/_version.py +6 -0
  7. intel_npu_acceleration_library/backend/__init__.py +37 -0
  8. intel_npu_acceleration_library/backend/base.py +215 -0
  9. intel_npu_acceleration_library/backend/bindings.py +279 -0
  10. intel_npu_acceleration_library/backend/compression.py +24 -0
  11. intel_npu_acceleration_library/backend/convolution.py +58 -0
  12. intel_npu_acceleration_library/backend/factory.py +944 -0
  13. intel_npu_acceleration_library/backend/linear.py +60 -0
  14. intel_npu_acceleration_library/backend/matmul.py +59 -0
  15. intel_npu_acceleration_library/backend/mlp.py +58 -0
  16. intel_npu_acceleration_library/backend/ops.py +141 -0
  17. intel_npu_acceleration_library/backend/qlinear.py +71 -0
  18. intel_npu_acceleration_library/backend/qmatmul.py +66 -0
  19. intel_npu_acceleration_library/backend/runtime.py +210 -0
  20. intel_npu_acceleration_library/backend/sdpa.py +107 -0
  21. intel_npu_acceleration_library/backend/tensor.py +1050 -0
  22. intel_npu_acceleration_library/backend/utils.py +70 -0
  23. intel_npu_acceleration_library/compiler.py +194 -0
  24. intel_npu_acceleration_library/device.py +230 -0
  25. intel_npu_acceleration_library/dtypes.py +122 -0
  26. intel_npu_acceleration_library/external/openvino/__init__.py +71 -0
  27. intel_npu_acceleration_library/external/openvino/_offline_transformations/__init__.py +20 -0
  28. intel_npu_acceleration_library/external/openvino/_pyopenvino.cp310-win_amd64.pyd +0 -0
  29. intel_npu_acceleration_library/external/openvino/_pyopenvino.cp311-win_amd64.pyd +0 -0
  30. intel_npu_acceleration_library/external/openvino/_pyopenvino.cp312-win_amd64.pyd +0 -0
  31. intel_npu_acceleration_library/external/openvino/_pyopenvino.cp38-win_amd64.pyd +0 -0
  32. intel_npu_acceleration_library/external/openvino/_pyopenvino.cp39-win_amd64.pyd +0 -0
  33. intel_npu_acceleration_library/external/openvino/frontend/__init__.py +34 -0
  34. intel_npu_acceleration_library/external/openvino/frontend/frontend.py +44 -0
  35. intel_npu_acceleration_library/external/openvino/frontend/onnx/__init__.py +15 -0
  36. intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp310-win_amd64.pyd +0 -0
  37. intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp311-win_amd64.pyd +0 -0
  38. intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp312-win_amd64.pyd +0 -0
  39. intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp38-win_amd64.pyd +0 -0
  40. intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp39-win_amd64.pyd +0 -0
  41. intel_npu_acceleration_library/external/openvino/frontend/paddle/__init__.py +15 -0
  42. intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp310-win_amd64.pyd +0 -0
  43. intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp311-win_amd64.pyd +0 -0
  44. intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp312-win_amd64.pyd +0 -0
  45. intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp38-win_amd64.pyd +0 -0
  46. intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp39-win_amd64.pyd +0 -0
  47. intel_npu_acceleration_library/external/openvino/frontend/pytorch/__init__.py +19 -0
  48. intel_npu_acceleration_library/external/openvino/frontend/pytorch/fx_decoder.py +352 -0
  49. intel_npu_acceleration_library/external/openvino/frontend/pytorch/gptq.py +139 -0
  50. intel_npu_acceleration_library/external/openvino/frontend/pytorch/module_extension.py +39 -0
  51. intel_npu_acceleration_library/external/openvino/frontend/pytorch/patch_model.py +98 -0
  52. intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp310-win_amd64.pyd +0 -0
  53. intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp311-win_amd64.pyd +0 -0
  54. intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp312-win_amd64.pyd +0 -0
  55. intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp38-win_amd64.pyd +0 -0
  56. intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp39-win_amd64.pyd +0 -0
  57. intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/backend.py +119 -0
  58. intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/backend_utils.py +85 -0
  59. intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/compile.py +141 -0
  60. intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/decompositions.py +116 -0
  61. intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/execute.py +189 -0
  62. intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/op_support.py +289 -0
  63. intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/partition.py +118 -0
  64. intel_npu_acceleration_library/external/openvino/frontend/pytorch/ts_decoder.py +536 -0
  65. intel_npu_acceleration_library/external/openvino/frontend/pytorch/utils.py +256 -0
  66. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/__init__.py +16 -0
  67. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/graph_iterator.py +116 -0
  68. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/node_decoder.py +219 -0
  69. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp310-win_amd64.pyd +0 -0
  70. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp311-win_amd64.pyd +0 -0
  71. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp312-win_amd64.pyd +0 -0
  72. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp38-win_amd64.pyd +0 -0
  73. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp39-win_amd64.pyd +0 -0
  74. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/utils.py +460 -0
  75. intel_npu_acceleration_library/external/openvino/helpers/__init__.py +6 -0
  76. intel_npu_acceleration_library/external/openvino/helpers/packing.py +87 -0
  77. intel_npu_acceleration_library/external/openvino/preprocess/README.md +60 -0
  78. intel_npu_acceleration_library/external/openvino/preprocess/__init__.py +26 -0
  79. intel_npu_acceleration_library/external/openvino/preprocess/torchvision/__init__.py +15 -0
  80. intel_npu_acceleration_library/external/openvino/preprocess/torchvision/preprocess_converter.py +47 -0
  81. intel_npu_acceleration_library/external/openvino/preprocess/torchvision/requirements.txt +4 -0
  82. intel_npu_acceleration_library/external/openvino/preprocess/torchvision/torchvision_preprocessing.py +347 -0
  83. intel_npu_acceleration_library/external/openvino/properties/__init__.py +21 -0
  84. intel_npu_acceleration_library/external/openvino/properties/_properties.py +55 -0
  85. intel_npu_acceleration_library/external/openvino/properties/device/__init__.py +14 -0
  86. intel_npu_acceleration_library/external/openvino/properties/hint/__init__.py +15 -0
  87. intel_npu_acceleration_library/external/openvino/properties/intel_auto/__init__.py +12 -0
  88. intel_npu_acceleration_library/external/openvino/properties/intel_cpu/__init__.py +8 -0
  89. intel_npu_acceleration_library/external/openvino/properties/intel_gpu/__init__.py +12 -0
  90. intel_npu_acceleration_library/external/openvino/properties/intel_gpu/hint/__init__.py +11 -0
  91. intel_npu_acceleration_library/external/openvino/properties/log/__init__.py +11 -0
  92. intel_npu_acceleration_library/external/openvino/properties/streams/__init__.py +11 -0
  93. intel_npu_acceleration_library/external/openvino/runtime/__init__.py +85 -0
  94. intel_npu_acceleration_library/external/openvino/runtime/exceptions.py +17 -0
  95. intel_npu_acceleration_library/external/openvino/runtime/ie_api.py +631 -0
  96. intel_npu_acceleration_library/external/openvino/runtime/op/__init__.py +18 -0
  97. intel_npu_acceleration_library/external/openvino/runtime/op/util/__init__.py +22 -0
  98. intel_npu_acceleration_library/external/openvino/runtime/opset1/__init__.py +112 -0
  99. intel_npu_acceleration_library/external/openvino/runtime/opset1/ops.py +3067 -0
  100. intel_npu_acceleration_library/external/openvino/runtime/opset10/__init__.py +179 -0
  101. intel_npu_acceleration_library/external/openvino/runtime/opset10/ops.py +173 -0
  102. intel_npu_acceleration_library/external/openvino/runtime/opset11/__init__.py +179 -0
  103. intel_npu_acceleration_library/external/openvino/runtime/opset11/ops.py +107 -0
  104. intel_npu_acceleration_library/external/openvino/runtime/opset12/__init__.py +180 -0
  105. intel_npu_acceleration_library/external/openvino/runtime/opset12/ops.py +120 -0
  106. intel_npu_acceleration_library/external/openvino/runtime/opset13/__init__.py +188 -0
  107. intel_npu_acceleration_library/external/openvino/runtime/opset13/ops.py +399 -0
  108. intel_npu_acceleration_library/external/openvino/runtime/opset14/__init__.py +190 -0
  109. intel_npu_acceleration_library/external/openvino/runtime/opset14/ops.py +171 -0
  110. intel_npu_acceleration_library/external/openvino/runtime/opset15/__init__.py +10 -0
  111. intel_npu_acceleration_library/external/openvino/runtime/opset15/ops.py +85 -0
  112. intel_npu_acceleration_library/external/openvino/runtime/opset2/__init__.py +118 -0
  113. intel_npu_acceleration_library/external/openvino/runtime/opset2/ops.py +216 -0
  114. intel_npu_acceleration_library/external/openvino/runtime/opset3/__init__.py +134 -0
  115. intel_npu_acceleration_library/external/openvino/runtime/opset3/ops.py +638 -0
  116. intel_npu_acceleration_library/external/openvino/runtime/opset4/__init__.py +145 -0
  117. intel_npu_acceleration_library/external/openvino/runtime/opset4/ops.py +464 -0
  118. intel_npu_acceleration_library/external/openvino/runtime/opset5/__init__.py +152 -0
  119. intel_npu_acceleration_library/external/openvino/runtime/opset5/ops.py +372 -0
  120. intel_npu_acceleration_library/external/openvino/runtime/opset6/__init__.py +154 -0
  121. intel_npu_acceleration_library/external/openvino/runtime/opset6/ops.py +189 -0
  122. intel_npu_acceleration_library/external/openvino/runtime/opset7/__init__.py +158 -0
  123. intel_npu_acceleration_library/external/openvino/runtime/opset7/ops.py +169 -0
  124. intel_npu_acceleration_library/external/openvino/runtime/opset8/__init__.py +169 -0
  125. intel_npu_acceleration_library/external/openvino/runtime/opset8/ops.py +783 -0
  126. intel_npu_acceleration_library/external/openvino/runtime/opset9/__init__.py +175 -0
  127. intel_npu_acceleration_library/external/openvino/runtime/opset9/ops.py +341 -0
  128. intel_npu_acceleration_library/external/openvino/runtime/opset_utils.py +22 -0
  129. intel_npu_acceleration_library/external/openvino/runtime/passes/__init__.py +19 -0
  130. intel_npu_acceleration_library/external/openvino/runtime/passes/graph_rewrite.py +33 -0
  131. intel_npu_acceleration_library/external/openvino/runtime/passes/manager.py +26 -0
  132. intel_npu_acceleration_library/external/openvino/runtime/properties/__init__.py +38 -0
  133. intel_npu_acceleration_library/external/openvino/runtime/properties/hint/__init__.py +25 -0
  134. intel_npu_acceleration_library/external/openvino/runtime/utils/__init__.py +7 -0
  135. intel_npu_acceleration_library/external/openvino/runtime/utils/broadcasting.py +44 -0
  136. intel_npu_acceleration_library/external/openvino/runtime/utils/data_helpers/__init__.py +8 -0
  137. intel_npu_acceleration_library/external/openvino/runtime/utils/data_helpers/data_dispatcher.py +429 -0
  138. intel_npu_acceleration_library/external/openvino/runtime/utils/data_helpers/wrappers.py +148 -0
  139. intel_npu_acceleration_library/external/openvino/runtime/utils/decorators.py +70 -0
  140. intel_npu_acceleration_library/external/openvino/runtime/utils/input_validation.py +133 -0
  141. intel_npu_acceleration_library/external/openvino/runtime/utils/node_factory.py +127 -0
  142. intel_npu_acceleration_library/external/openvino/runtime/utils/reduction.py +25 -0
  143. intel_npu_acceleration_library/external/openvino/runtime/utils/types.py +175 -0
  144. intel_npu_acceleration_library/external/openvino/tools/__init__.py +4 -0
  145. intel_npu_acceleration_library/external/openvino/tools/benchmark/__init__.py +3 -0
  146. intel_npu_acceleration_library/external/openvino/tools/benchmark/benchmark.py +186 -0
  147. intel_npu_acceleration_library/external/openvino/tools/benchmark/main.py +695 -0
  148. intel_npu_acceleration_library/external/openvino/tools/benchmark/parameters.py +199 -0
  149. intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/__init__.py +3 -0
  150. intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/constants.py +26 -0
  151. intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/inputs_filling.py +482 -0
  152. intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/logging.py +8 -0
  153. intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/statistics_report.py +296 -0
  154. intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/utils.py +836 -0
  155. intel_npu_acceleration_library/external/openvino/tools/ovc/__init__.py +20 -0
  156. intel_npu_acceleration_library/external/openvino/tools/ovc/__main__.py +10 -0
  157. intel_npu_acceleration_library/external/openvino/tools/ovc/cli_parser.py +633 -0
  158. intel_npu_acceleration_library/external/openvino/tools/ovc/convert.py +102 -0
  159. intel_npu_acceleration_library/external/openvino/tools/ovc/convert_data_type.py +82 -0
  160. intel_npu_acceleration_library/external/openvino/tools/ovc/convert_impl.py +536 -0
  161. intel_npu_acceleration_library/external/openvino/tools/ovc/environment_setup_utils.py +50 -0
  162. intel_npu_acceleration_library/external/openvino/tools/ovc/error.py +49 -0
  163. intel_npu_acceleration_library/external/openvino/tools/ovc/get_ov_update_message.py +16 -0
  164. intel_npu_acceleration_library/external/openvino/tools/ovc/help.py +45 -0
  165. intel_npu_acceleration_library/external/openvino/tools/ovc/logger.py +91 -0
  166. intel_npu_acceleration_library/external/openvino/tools/ovc/main.py +35 -0
  167. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/__init__.py +2 -0
  168. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/analysis.py +46 -0
  169. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/check_config.py +57 -0
  170. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/extractor.py +447 -0
  171. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/layout_utils.py +73 -0
  172. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/moc_emit_ir.py +32 -0
  173. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/offline_transformations.py +107 -0
  174. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/paddle_frontend_utils.py +83 -0
  175. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/pipeline.py +246 -0
  176. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/preprocessing.py +220 -0
  177. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/pytorch_frontend_utils.py +205 -0
  178. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/shape_utils.py +109 -0
  179. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/type_utils.py +82 -0
  180. intel_npu_acceleration_library/external/openvino/tools/ovc/ovc.py +13 -0
  181. intel_npu_acceleration_library/external/openvino/tools/ovc/telemetry_params.py +6 -0
  182. intel_npu_acceleration_library/external/openvino/tools/ovc/telemetry_stub.py +28 -0
  183. intel_npu_acceleration_library/external/openvino/tools/ovc/telemetry_utils.py +118 -0
  184. intel_npu_acceleration_library/external/openvino/tools/ovc/utils.py +109 -0
  185. intel_npu_acceleration_library/external/openvino/tools/ovc/version.py +80 -0
  186. intel_npu_acceleration_library/external/openvino/torch/__init__.py +5 -0
  187. intel_npu_acceleration_library/external/openvino/utils.py +98 -0
  188. intel_npu_acceleration_library/functional/__init__.py +8 -0
  189. intel_npu_acceleration_library/functional/scaled_dot_product_attention.py +47 -0
  190. intel_npu_acceleration_library/lib/Release/cache.json +113732 -0
  191. intel_npu_acceleration_library/lib/Release/intel_npu_acceleration_library.dll +0 -0
  192. intel_npu_acceleration_library/lib/Release/openvino.dll +0 -0
  193. intel_npu_acceleration_library/lib/Release/openvino_auto_batch_plugin.dll +0 -0
  194. intel_npu_acceleration_library/lib/Release/openvino_auto_plugin.dll +0 -0
  195. intel_npu_acceleration_library/lib/Release/openvino_c.dll +0 -0
  196. intel_npu_acceleration_library/lib/Release/openvino_hetero_plugin.dll +0 -0
  197. intel_npu_acceleration_library/lib/Release/openvino_intel_cpu_plugin.dll +0 -0
  198. intel_npu_acceleration_library/lib/Release/openvino_intel_gpu_plugin.dll +0 -0
  199. intel_npu_acceleration_library/lib/Release/openvino_intel_npu_plugin.dll +0 -0
  200. intel_npu_acceleration_library/lib/Release/openvino_ir_frontend.dll +0 -0
  201. intel_npu_acceleration_library/lib/Release/openvino_onnx_frontend.dll +0 -0
  202. intel_npu_acceleration_library/lib/Release/openvino_paddle_frontend.dll +0 -0
  203. intel_npu_acceleration_library/lib/Release/openvino_pytorch_frontend.dll +0 -0
  204. intel_npu_acceleration_library/lib/Release/openvino_tensorflow_frontend.dll +0 -0
  205. intel_npu_acceleration_library/lib/Release/openvino_tensorflow_lite_frontend.dll +0 -0
  206. intel_npu_acceleration_library/lib/Release/tbb12.dll +0 -0
  207. intel_npu_acceleration_library/lib/Release/tbb12_debug.dll +0 -0
  208. intel_npu_acceleration_library/lib/Release/tbbbind_2_5.dll +0 -0
  209. intel_npu_acceleration_library/lib/Release/tbbbind_2_5_debug.dll +0 -0
  210. intel_npu_acceleration_library/lib/Release/tbbmalloc.dll +0 -0
  211. intel_npu_acceleration_library/lib/Release/tbbmalloc_debug.dll +0 -0
  212. intel_npu_acceleration_library/lib/Release/tbbmalloc_proxy.dll +0 -0
  213. intel_npu_acceleration_library/lib/Release/tbbmalloc_proxy_debug.dll +0 -0
  214. intel_npu_acceleration_library/modelling.py +150 -0
  215. intel_npu_acceleration_library/nn/__init__.py +20 -0
  216. intel_npu_acceleration_library/nn/autograd.py +68 -0
  217. intel_npu_acceleration_library/nn/conv.py +257 -0
  218. intel_npu_acceleration_library/nn/functional.py +1207 -0
  219. intel_npu_acceleration_library/nn/linear.py +162 -0
  220. intel_npu_acceleration_library/nn/llm.py +417 -0
  221. intel_npu_acceleration_library/nn/module.py +393 -0
  222. intel_npu_acceleration_library/optimizations.py +157 -0
  223. intel_npu_acceleration_library/quantization.py +174 -0
@@ -0,0 +1,34 @@
1
+ # Copyright (C) 2018-2024 Intel Corporation
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
4
+ """
5
+ Package: openvino
6
+ Low level wrappers for the FrontEnd C++ API.
7
+ """
8
+
9
+ # flake8: noqa
10
+
11
+ from openvino._pyopenvino import get_version
12
+
13
+ __version__ = get_version()
14
+
15
+ # main classes
16
+ from openvino.frontend.frontend import FrontEndManager
17
+ from openvino.frontend.frontend import FrontEnd
18
+ from openvino._pyopenvino import InputModel
19
+ from openvino._pyopenvino import NodeContext
20
+ from openvino._pyopenvino import Place
21
+
22
+ # extensions
23
+ from openvino._pyopenvino import DecoderTransformationExtension
24
+ from openvino._pyopenvino import ConversionExtension
25
+ from openvino._pyopenvino import OpExtension
26
+ from openvino._pyopenvino import ProgressReporterExtension
27
+ from openvino._pyopenvino import TelemetryExtension
28
+
29
+ # exceptions
30
+ from openvino._pyopenvino import NotImplementedFailure
31
+ from openvino._pyopenvino import InitializationFailure
32
+ from openvino._pyopenvino import OpConversionFailure
33
+ from openvino._pyopenvino import OpValidationFailure
34
+ from openvino._pyopenvino import GeneralFailure
@@ -0,0 +1,44 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Copyright (C) 2018-2024 Intel Corporation
3
+ # SPDX-License-Identifier: Apache-2.0
4
+
5
+ from typing import Union
6
+
7
+ from openvino._pyopenvino import FrontEnd as FrontEndBase
8
+ from openvino._pyopenvino import FrontEndManager as FrontEndManagerBase
9
+ from openvino._pyopenvino import InputModel
10
+ from openvino.runtime import Model
11
+
12
+
13
+ class FrontEnd(FrontEndBase):
14
+ def __init__(self, fe: FrontEndBase) -> None:
15
+ super().__init__(fe)
16
+
17
+ def convert(self, model: Union[Model, InputModel]) -> Model:
18
+ converted_model = super().convert(model)
19
+ if isinstance(model, InputModel):
20
+ return Model(converted_model)
21
+ return converted_model
22
+
23
+ def convert_partially(self, model: InputModel) -> Model:
24
+ return Model(super().convert_partially(model))
25
+
26
+ def decode(self, model: InputModel) -> Model:
27
+ return Model(super().decode(model))
28
+
29
+ def normalize(self, model: Model) -> None:
30
+ super().normalize(model)
31
+
32
+
33
+ class FrontEndManager(FrontEndManagerBase):
34
+ def load_by_framework(self, framework: str) -> Union[FrontEnd, None]:
35
+ fe = super().load_by_framework(framework)
36
+ if fe is not None:
37
+ return FrontEnd(fe)
38
+ return fe
39
+
40
+ def load_by_model(self, model: str) -> Union[FrontEnd, None]:
41
+ fe = super().load_by_model(model)
42
+ if fe is not None:
43
+ return FrontEnd(fe)
44
+ return fe
@@ -0,0 +1,15 @@
1
+ # Copyright (C) 2018-2024 Intel Corporation
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
4
+ """
5
+ Package: openvino
6
+ Low level wrappers for the FrontEnd C++ API.
7
+ """
8
+
9
+ # flake8: noqa
10
+
11
+ try:
12
+ from openvino.frontend.onnx.py_onnx_frontend import ConversionExtensionONNX as ConversionExtension
13
+ from openvino.frontend.onnx.py_onnx_frontend import OpExtensionONNX as OpExtension
14
+ except ImportError as err:
15
+ raise ImportError("OpenVINO ONNX frontend is not available, please make sure the frontend is built. " "{}".format(err))
@@ -0,0 +1,15 @@
1
+ # Copyright (C) 2018-2024 Intel Corporation
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
4
+ """
5
+ Package: openvino
6
+ Low level wrappers for the FrontEnd C++ API.
7
+ """
8
+
9
+ # flake8: noqa
10
+
11
+ try:
12
+ from openvino.frontend.paddle.py_paddle_frontend import ConversionExtensionPaddle as ConversionExtension
13
+ from openvino.frontend.paddle.py_paddle_frontend import OpExtensionPaddle as OpExtension
14
+ except ImportError as err:
15
+ raise ImportError("OpenVINO Paddle frontend is not available, please make sure the frontend is built." "{}".format(err))
@@ -0,0 +1,19 @@
1
+ # Copyright (C) 2018-2024 Intel Corporation
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
4
+ """
5
+ Package: openvino
6
+ Low level wrappers for the FrontEnd C++ API.
7
+ """
8
+
9
+ # flake8: noqa
10
+
11
+ try:
12
+ from openvino.frontend.pytorch.py_pytorch_frontend import _FrontEndPytorchDecoder as Decoder
13
+ from openvino.frontend.pytorch.py_pytorch_frontend import _Type as DecoderType
14
+ from openvino.frontend.pytorch.py_pytorch_frontend import ConversionExtensionPytorch as ConversionExtension
15
+ from openvino.frontend.pytorch.py_pytorch_frontend import OpExtensionPytorch as OpExtension
16
+ from openvino.frontend.pytorch.module_extension import ModuleExtension
17
+ except ImportError as err:
18
+ raise ImportError("OpenVINO PyTorch frontend is not available, please make sure the frontend is built."
19
+ "{}".format(err))
@@ -0,0 +1,352 @@
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 openvino.frontend.pytorch.py_pytorch_frontend import _FrontEndPytorchDecoder as Decoder
8
+ from openvino.frontend.pytorch.py_pytorch_frontend import _Type as DecoderType
9
+ from openvino.runtime import op, PartialShape, Type as OVType, OVAny, Shape
10
+ from openvino.frontend.pytorch.utils import make_constant, fetch_attr, pt_to_ov_type_map, torch_tensor_to_ov_const
11
+
12
+ import torch
13
+
14
+ import logging
15
+ logger = logging.getLogger(__name__)
16
+ logger.setLevel(logging.WARNING)
17
+
18
+
19
+ class TorchFXPythonDecoder (Decoder):
20
+
21
+ def __init__(self, pt_module, fx_gm=None, nodes=None, mark_node_callback=None, input_shapes=[], input_types=[]):
22
+ Decoder.__init__(self)
23
+ self.mark_node_callback = mark_node_callback
24
+ # We store every decoder created by this decoder so that all them are not deleted until the first decoder is deleted
25
+ self.m_decoders = []
26
+ self.pt_module = pt_module
27
+ self.fx_gm = fx_gm if fx_gm is not None else pt_module
28
+ self.input_types = [OVAny(pt_to_ov_type_map[str(t)])
29
+ for t in input_types]
30
+ self.input_shapes = input_shapes
31
+
32
+ self._input_signature = []
33
+
34
+ if issubclass(type(pt_module), torch.fx.graph_module.GraphModule):
35
+
36
+ self._input_is_list = None
37
+ self._nodes = list(pt_module.graph.nodes)
38
+ self._inputs = []
39
+ self._outputs = []
40
+ found_types = []
41
+ found_shapes = []
42
+ for i in range(len(self._nodes)):
43
+ if self._nodes[i].op == 'placeholder':
44
+ self._inputs.append(i)
45
+ value = self._nodes[i]
46
+ self._input_signature.append(value.name)
47
+ if hasattr(value, "meta") and ('tensor_meta' in value.meta.keys()) and value.meta['tensor_meta']:
48
+ found_shapes.append(value.meta['tensor_meta'].shape)
49
+ found_types.append(
50
+ OVAny(pt_to_ov_type_map[str(value.meta['tensor_meta'].dtype)]))
51
+ else:
52
+ found_shapes.append(None)
53
+ found_types.append(None)
54
+ elif self._nodes[i].op == 'output':
55
+ # Instead of putting output index, refer to its target
56
+ uargs = self.unpack_containers(self._nodes[i].args)
57
+ self._outputs = [(arg[0], self._nodes.index(arg[1]))
58
+ for arg in uargs if arg[1] is not None]
59
+ for idx, shape in enumerate(found_shapes):
60
+ if shape is not None:
61
+ new_shape=[]
62
+ for dim in range(0, len(shape)):
63
+ if (type(shape[dim]).__name__ == "SymInt"):
64
+ new_shape.append(-1)
65
+ else:
66
+ new_shape.append(shape[dim])
67
+ found_shapes[idx] = torch.Size(new_shape)
68
+
69
+ if not input_shapes or len(input_shapes) == 0:
70
+ self.input_shapes = found_shapes
71
+ if not input_types or len(input_types) == 0:
72
+ self.input_types = found_types
73
+
74
+ elif issubclass(type(pt_module), torch.fx.Node):
75
+
76
+ self._nodes = nodes # passed from outer context
77
+
78
+ # FIXME: Quadratic complexity nodes*nodes considering the outer loop over all nodes
79
+ self._outputs = [("", self._nodes.index(pt_module))]
80
+
81
+ # None in inputs mean the input is inlined or None (also considered inlined)
82
+ self._inputs = [self._nodes.index(
83
+ arg) if arg in self._nodes else (arg,) for arg in pt_module.args]
84
+
85
+ # FIXME: Find a better way to pass nested tuples to OV frontend. This is a temporary solution to flatten arguments.
86
+ new_inputs = []
87
+ self.input_types = []
88
+ for i in range(len(pt_module.args)):
89
+ if isinstance(pt_module.args[i], (list, tuple)) and any([isinstance(a, torch.fx.Node) for a in pt_module.args[i]]):
90
+ for arg in pt_module.args[i]:
91
+ if arg in self._nodes:
92
+ new_inputs.append(self._nodes.index(arg))
93
+ else:
94
+ new_inputs.append((arg,))
95
+ self.input_types.append(OVAny(DecoderType.List(
96
+ TorchFXPythonDecoder.get_type_for_value(arg))))
97
+ else:
98
+ v = self._inputs[i]
99
+ new_inputs.append(v)
100
+ self.input_types.append(
101
+ TorchFXPythonDecoder.get_type_for_value(v[0] if isinstance(v, tuple) else self._nodes[v]))
102
+ self._inputs = new_inputs
103
+
104
+ def inputs(self):
105
+ # Consider 0 a special case which may mean the input is inlined, but not guaranteed
106
+ return [x if not isinstance(x, tuple) else 0 for x in self._inputs]
107
+
108
+ def is_input_inlined(self, index):
109
+ return isinstance(self._inputs[index], tuple)
110
+
111
+ @staticmethod
112
+ def unpack_containers(arg):
113
+ if isinstance(arg, (tuple, list)):
114
+ res = []
115
+ for e in arg:
116
+ res.extend(TorchFXPythonDecoder.unpack_containers(e))
117
+ return res
118
+ elif isinstance(arg, dict):
119
+ res = []
120
+ for k, e in arg.items():
121
+ unpacked = TorchFXPythonDecoder.unpack_containers(e)
122
+ if len(unpacked) == 1:
123
+ unpacked[0] = (k, unpacked[0][1])
124
+ res.extend(unpacked)
125
+ return res
126
+ else:
127
+ return [("", arg)]
128
+
129
+ @staticmethod
130
+ def arg_to_constant(arg):
131
+ if isinstance(arg, list):
132
+ if len(arg) > 0:
133
+ return make_constant(pt_to_ov_type_map[type(
134
+ arg[0]).__name__], Shape([len(arg)]), arg)
135
+ else:
136
+ # TODO: which type should we use if list is empty? Need a signaling value here
137
+ return make_constant(OVType.i32, Shape([0]), [])
138
+ elif isinstance(arg, bool):
139
+ return make_constant(OVType.boolean, Shape([]), [arg])
140
+ elif isinstance(arg, int):
141
+ return make_constant(OVType.i64, Shape([]), [arg])
142
+ elif isinstance(arg, float):
143
+ return make_constant(OVType.f32, Shape([]), [arg])
144
+ return None
145
+
146
+ def inlined_input(self, index):
147
+ assert index < len(self._inputs), "Requested input doesn't exist"
148
+ assert isinstance(
149
+ self._inputs[index], tuple), "Requested input which is not inlined"
150
+ assert self._inputs[index][0] is not None, "Requested None inlined input"
151
+ constant = None
152
+ arg = self._inputs[index][0]
153
+ constant = self.arg_to_constant(arg)
154
+
155
+ assert constant is not None, f"Constant wasn't created for inlined input {index}"
156
+ return constant.outputs()
157
+
158
+ def input(self, index): # TODO: remove
159
+ return self.inputs()[index] # TODO: find specialized method
160
+
161
+ def get_input_debug_name(self, index):
162
+ return "input"+str(index)
163
+
164
+ def get_input_signature_name(self, index: int) -> str:
165
+ if self._input_signature is not None and index < len(self._input_signature):
166
+ return self._input_signature[index]
167
+ return self.get_input_debug_name(index)
168
+
169
+ def get_input_shape(self, index):
170
+ if index < len(self.input_shapes) and self.input_shapes[index] is not None:
171
+ return PartialShape(self.input_shapes[index])
172
+ input = self._raw_input(index)
173
+ return self.get_shape_for_value(input)
174
+
175
+ def get_input_strides(self, index: int) -> list:
176
+ raw_input = self._raw_input(index)
177
+ if isinstance(raw_input, torch.fx.node.Node) and hasattr(raw_input, "meta"):
178
+ meta = raw_input.meta
179
+ if "tensor_meta" in meta and hasattr(meta["tensor_meta"], "stride"):
180
+ strides = list(meta["tensor_meta"].stride)
181
+ if strides:
182
+ return strides
183
+ return []
184
+
185
+ def get_input_type(self, index):
186
+ if index < len(self.input_types) and self.input_types[index] is not None:
187
+ return self.input_types[index]
188
+ input = self._raw_input(index)
189
+ return self.get_type_for_value(input)
190
+
191
+ def get_output_debug_name(self, index):
192
+ if self._outputs is not None and index < len(self._outputs) and self._outputs[index][0]:
193
+ return self._outputs[index][0]
194
+ name = getattr(self.pt_module, "name", "output")
195
+ return name + ":" + str(index)
196
+
197
+ def get_output_shape(self, index):
198
+ output = self._raw_output(index)
199
+ return self.get_shape_for_value(output)
200
+
201
+ def get_output_type(self, index):
202
+ output = self._raw_output(index)
203
+ return self.get_type_for_value(output)
204
+
205
+ def get_shape_for_value(self, value):
206
+ if value and hasattr(value, "meta") and ('tensor_meta' in value.meta.keys()):
207
+ if value.meta['tensor_meta']:
208
+ return PartialShape(len(value.meta['tensor_meta'].shape) * [-1])
209
+ return PartialShape.dynamic()
210
+
211
+ @staticmethod
212
+ def get_type_for_value(value):
213
+ if issubclass(type(value), torch.fx.Node):
214
+ if ('tensor_meta' in value.meta.keys()):
215
+ if value.meta['tensor_meta'] and isinstance(value.meta['tensor_meta'], torch.Tensor):
216
+ pt_type = value.meta['tensor_meta'].dtype
217
+ if str(pt_type) in pt_to_ov_type_map:
218
+ ov_type = pt_to_ov_type_map[str(pt_type)]
219
+ return OVAny(ov_type)
220
+ return OVAny(OVType.dynamic)
221
+ elif isinstance(value, int):
222
+ return OVAny(DecoderType.PyScalar(OVAny(OVType.i64)))
223
+ elif isinstance(value, float):
224
+ return OVAny(DecoderType.PyScalar(OVAny(OVType.f32)))
225
+ elif isinstance(value, bool):
226
+ return OVAny(DecoderType.PyScalar(OVAny(OVType.boolean)))
227
+ return OVAny(OVType.dynamic)
228
+
229
+ def get_attribute(self, name):
230
+ if name in self.pt_module.kwargs:
231
+ attr = self.pt_module.kwargs[name]
232
+ if isinstance(attr, torch.dtype):
233
+ return OVAny(pt_to_ov_type_map[str(attr)])
234
+ if isinstance(attr, torch.device):
235
+ return OVAny(attr.type)
236
+ if isinstance(attr, str):
237
+ return OVAny(attr)
238
+ # Numeric attrs convert to Constant
239
+ constant = self.arg_to_constant(attr)
240
+ if constant is not None:
241
+ return OVAny(constant.output(0))
242
+ # so that has_attribute return True if attribute exist
243
+ return OVAny(DecoderType.PyNone())
244
+ return OVAny(None)
245
+
246
+ def get_named_input(self, name):
247
+ """
248
+ Returns id of kwargs input. Such input can be Node or a constant value,
249
+ this function is only used for to return node index. If the input is
250
+ constant, get_attribute should be used.
251
+ """
252
+ if name in self.pt_module.kwargs:
253
+ arg = self.pt_module.kwargs[name]
254
+ if isinstance(arg, torch.fx.Node):
255
+ return self._nodes.index(arg)
256
+ raise RuntimeError("This input is not a Node")
257
+
258
+ def get_subgraph_size(self):
259
+ if issubclass(type(self.pt_module), torch.fx.Node):
260
+ return 0
261
+ return len(self.get_subgraphs()) if hasattr(self.pt_module, 'blocks') else 1
262
+
263
+ def decoder_type_name(self) -> str:
264
+ return "fx"
265
+
266
+ def visit_subgraph(self, node_visitor):
267
+ # make sure topological order is satisfied
268
+ for node in self._nodes:
269
+ if node.op == 'placeholder' or node.op == 'output':
270
+ continue # skipping non-operational nodes
271
+ if node.op == 'call_function' and str(node.target) in ["aten._assert_async.msg"]:
272
+ continue
273
+ decoder = TorchFXPythonDecoder(
274
+ node, self.fx_gm, self._nodes, mark_node_callback=self.mark_node_callback)
275
+ self.m_decoders.append(decoder)
276
+ node_visitor(decoder)
277
+
278
+ def get_subgraphs(self):
279
+ if issubclass(type(self.pt_module), torch.fx.Node):
280
+ return []
281
+ return list(self.pt_module.blocks())
282
+
283
+ def get_subgraph_decoder(self, index):
284
+ decoder = TorchFXPythonDecoder(self.get_subgraphs()[index],
285
+ self.fx_gm,
286
+ mark_node_callback=self.mark_node_callback)
287
+ self.m_decoders.append(decoder)
288
+ return decoder
289
+
290
+ def get_op_type(self):
291
+ if self.pt_module.op == 'call_function':
292
+ return str(self.pt_module.target)
293
+ elif self.pt_module.op == 'get_attr':
294
+ return 'get_attr' # FIXME should be aligned with get_attr from TS implementation
295
+ else:
296
+ return 'UNKNOWN_TYPE_' + str(self.pt_module.op)
297
+
298
+ def get_schema(self):
299
+ return 'NONE'
300
+
301
+ def outputs(self):
302
+ return [o[1] for o in self._outputs]
303
+
304
+ def _raw_outputs(self):
305
+ return [self._nodes[x[1]] for x in self._outputs]
306
+
307
+ def _raw_output(self, index):
308
+ return self._raw_outputs()[index]
309
+
310
+ def _raw_inputs(self):
311
+ return [self._nodes[x] if not isinstance(x, tuple) and x < len(self._nodes) else x[0] for x in self._inputs]
312
+
313
+ def _raw_input(self, index):
314
+ return self._raw_inputs()[index]
315
+
316
+ def num_of_outputs(self):
317
+ return len(self.outputs())
318
+
319
+ def output(self, index):
320
+ return self.outputs()[index]
321
+
322
+ def mark_node(self, node):
323
+ name = self.get_op_type()
324
+ if "FrameworkNode" not in node.get_type_name():
325
+ name += "/" + node.get_type_name()
326
+ node.set_friendly_name(self.pt_module.name + "/" + name)
327
+ if self.mark_node_callback is not None:
328
+ self.mark_node_callback(self, node)
329
+ return node
330
+
331
+ def as_constant(self):
332
+ assert self.pt_module.op == 'get_attr', "Only get_attr is supported"
333
+ # Extract Constant from FX module field
334
+ ret = fetch_attr(self.fx_gm, self.pt_module.target)
335
+ ov_const = torch_tensor_to_ov_const(ret, shared_memory=True)
336
+ return ov_const.outputs()
337
+
338
+ def as_string(self):
339
+ return None
340
+
341
+ def input_is_none(self, index):
342
+ if index >= len(self._inputs) or (isinstance(self._inputs[index], tuple) and self._inputs[index][0] is None):
343
+ return True
344
+ else:
345
+ r_input = self._raw_input(index)
346
+ return str(type(r_input)) in ['torch.NoneType', 'NoneType']
347
+
348
+ def debug(self):
349
+ self.pt_module.print()
350
+
351
+ def may_produce_alias(self, in_index: int, out_index: int) -> bool:
352
+ return False
@@ -0,0 +1,139 @@
1
+ # Copyright (C) 2018-2024 Intel Corporation
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
4
+ # flake8: noqa
5
+ # mypy: ignore-errors
6
+
7
+ import torch
8
+ from functools import partial
9
+
10
+ # Wraps a single tensor to a module to prevent it from jit.freezing
11
+ # It depends on a tensor dtype whether it will be preserved from freezing. Refer to the decoder code to learn which types will be preserved.
12
+ class KeepWeight(torch.nn.Module):
13
+
14
+ def __init__(self, weight):
15
+ super().__init__()
16
+ self.weight = torch.nn.Parameter(weight, requires_grad=False)
17
+
18
+ def forward(self):
19
+ return self.weight
20
+
21
+
22
+ # Produces a pattern that can be captured later and represented as a single u4 constant node
23
+ def decompression_pattern(weights):
24
+ mask = torch.tensor(15, dtype=torch.uint8).to(weights.device)
25
+ return torch.stack((torch.bitwise_and(weights, mask), torch.bitwise_right_shift(weights, 4)), dim=-1)
26
+
27
+
28
+ def patched_forward(self, *args, **kwargs):
29
+ if hasattr(self, '_hf_hook'):
30
+ args, kwargs = self._hf_hook.pre_forward(self, *args, **kwargs)
31
+
32
+ x = args[0]
33
+ dtype = x.dtype
34
+ outshape = x.shape[:-1] + (self.width,)
35
+ x = x.view(-1, x.shape[-1])
36
+ groups = self.qzeros.shape[0]
37
+ height = self.qweight.shape[0]
38
+
39
+ unpacked_weights = decompression_pattern(
40
+ self._openvino_u4_compression_submodule_qweights()).contiguous().view(height, -1, 8)
41
+ unpacked_weights = torch.transpose(
42
+ unpacked_weights, 1, 2).contiguous().view(-1, self.group_size, self.width)
43
+ unpacked_zp = decompression_pattern(
44
+ self._openvino_u4_compression_submodule_qzeros()).contiguous().view(groups, 1, -1)
45
+
46
+ unpacked_zp = unpacked_zp.to(dtype) + 1
47
+
48
+ unpacked_weights = (unpacked_weights.to(dtype) - unpacked_zp) * self.scales
49
+ unpacked_weights = unpacked_weights.view(-1, self.width)
50
+
51
+ out = x @ unpacked_weights
52
+
53
+ out = out.view(outshape)
54
+ if self.bias is not None:
55
+ out.add_(self.bias)
56
+
57
+ if hasattr(self, '_hf_hook'):
58
+ out = self._hf_hook.post_forward(self, out)
59
+ return out
60
+
61
+
62
+ # All the following AutoGPTQ's quant types are supposed to have the same weights packing schema
63
+ supported_quant_types = ['triton', 'exllama', 'cuda', 'exllamav2', 'cuda-old']
64
+
65
+
66
+ def patch_model(model):
67
+ for name, m in model.named_modules():
68
+ if hasattr(m, '_openvino_patch_orig_forward'):
69
+ # already patched, skipping
70
+ continue
71
+ # TODO: Check module type
72
+ is_quantized = getattr(m, 'is_quantized', None)
73
+ if is_quantized is not None:
74
+ m.is_quantized = False
75
+ m.float() # enables tracing on CPU, applied for all modules
76
+ if hasattr(m, 'QUANT_TYPE'):
77
+ if m.QUANT_TYPE not in supported_quant_types:
78
+ raise ValueError(
79
+ f'Unsupported QUANT_TYPE == {m.QUANT_TYPE} is discovered for AutoGPTQ model, only the following types are supported: {supported_quant_types}')
80
+ if m.bits != 4:
81
+ raise ValueError(
82
+ f'Unsupported bits == {m.bits} is discovered in module {name} in AutoGPTQ model, only bits == 4 is supported.')
83
+
84
+ int4_in_int32 = 8
85
+ groups = m.qzeros.shape[0]
86
+ m.width = m.qweight.shape[1]
87
+ assert m.group_size == m.qweight.shape[0] * int4_in_int32 // groups
88
+
89
+ m._openvino_patch_orig_forward = m.forward
90
+ m.forward = partial(patched_forward, m)
91
+
92
+ # Keep original field properties to be used when model is returned back to its original state
93
+ m._openvino_patch_orig_qweights_type = m.qweight.dtype
94
+ m._openvino_patch_orig_qzeros_type = m.qzeros.dtype
95
+ m._openvino_patch_orig_scale_shape = m.scales.shape
96
+
97
+ m.qweight = m.qweight.view(dtype=torch.uint8)
98
+ m.qzeros = m.qzeros.view(dtype=torch.uint8)
99
+
100
+ # TODO: Redundant tensor copy? Try to remove m.qweigh and m.qzeros after keeping modified values as submodules
101
+ m.add_module(
102
+ '_openvino_u4_compression_submodule_qweights', KeepWeight(m.qweight))
103
+ m.add_module('_openvino_u4_compression_submodule_qzeros',
104
+ KeepWeight(m.qzeros))
105
+
106
+ m.scales = m.scales.view(-1, 1, m.width)
107
+
108
+
109
+ def unpatch_model(model):
110
+ for _, m in model.named_modules():
111
+ if hasattr(m, '_openvino_patch_orig_forward'):
112
+ try:
113
+ m.forward = m._openvino_patch_orig_forward
114
+ del m._openvino_patch_orig_forward
115
+
116
+ m.qweight = m.qweight.view(
117
+ dtype=m._openvino_patch_orig_qweights_type)
118
+ del m._openvino_patch_orig_qweights_type
119
+
120
+ m.qzeros = m.qzeros.view(
121
+ dtype=m._openvino_patch_orig_qzeros_type)
122
+ del m._openvino_patch_orig_qzeros_type
123
+
124
+ m.scales = m.scales.view(m._openvino_patch_orig_scale_shape)
125
+ del m._openvino_patch_orig_scale_shape
126
+
127
+ del m._openvino_u4_compression_submodule_qweights
128
+ del m._openvino_u4_compression_submodule_qzeros
129
+ except Exception as error:
130
+ print('[ WARNING ] Exception raised during GPTQ model unpatching. Depending on the exact issue it may lead to broken original model')
131
+ print(error)
132
+
133
+
134
+ def detect_gptq_model_raw(model):
135
+ return model and getattr(model, 'config', None) and getattr(model.config, 'quantization_config', None) and model.config.quantization_config.quant_method == 'gptq'
136
+
137
+
138
+ def detect_gptq_model(model):
139
+ return detect_gptq_model_raw(model) or getattr(model, 'model', None) and detect_gptq_model_raw(model.model)