bigdl-core-npu 2.6.0b20250114__cp311-cp311-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- bigdl-core-npu/__init__.py +0 -0
- bigdl-core-npu/include/common.h +96 -0
- bigdl-core-npu/include/npu_llm.h +74 -0
- bigdl-core-npu/npu_llm.dll +0 -0
- bigdl-core-npu/npu_llm.lib +0 -0
- bigdl_core_npu-2.6.0b20250114.dist-info/METADATA +44 -0
- bigdl_core_npu-2.6.0b20250114.dist-info/RECORD +234 -0
- bigdl_core_npu-2.6.0b20250114.dist-info/WHEEL +5 -0
- bigdl_core_npu-2.6.0b20250114.dist-info/top_level.txt +2 -0
- intel_npu_acceleration_library/__init__.py +24 -0
- intel_npu_acceleration_library/_version.py +6 -0
- intel_npu_acceleration_library/backend/__init__.py +37 -0
- intel_npu_acceleration_library/backend/base.py +250 -0
- intel_npu_acceleration_library/backend/bindings.py +383 -0
- intel_npu_acceleration_library/backend/compression.py +24 -0
- intel_npu_acceleration_library/backend/convolution.py +58 -0
- intel_npu_acceleration_library/backend/factory.py +1161 -0
- intel_npu_acceleration_library/backend/linear.py +60 -0
- intel_npu_acceleration_library/backend/matmul.py +59 -0
- intel_npu_acceleration_library/backend/mlp.py +58 -0
- intel_npu_acceleration_library/backend/ops.py +142 -0
- intel_npu_acceleration_library/backend/qlinear.py +75 -0
- intel_npu_acceleration_library/backend/qmatmul.py +66 -0
- intel_npu_acceleration_library/backend/runtime.py +215 -0
- intel_npu_acceleration_library/backend/sdpa.py +107 -0
- intel_npu_acceleration_library/backend/tensor.py +1120 -0
- intel_npu_acceleration_library/backend/utils.py +70 -0
- intel_npu_acceleration_library/compiler.py +194 -0
- intel_npu_acceleration_library/device.py +230 -0
- intel_npu_acceleration_library/dtypes.py +155 -0
- intel_npu_acceleration_library/external/openvino/__init__.py +72 -0
- intel_npu_acceleration_library/external/openvino/_offline_transformations/__init__.py +21 -0
- intel_npu_acceleration_library/external/openvino/_pyopenvino.cp310-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/_pyopenvino.cp311-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/_pyopenvino.cp312-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/_pyopenvino.cp38-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/_pyopenvino.cp39-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/experimental/__init__.py +14 -0
- intel_npu_acceleration_library/external/openvino/frontend/__init__.py +34 -0
- intel_npu_acceleration_library/external/openvino/frontend/frontend.py +44 -0
- intel_npu_acceleration_library/external/openvino/frontend/jax/__init__.py +15 -0
- intel_npu_acceleration_library/external/openvino/frontend/jax/jaxpr_decoder.py +293 -0
- intel_npu_acceleration_library/external/openvino/frontend/jax/passes.py +65 -0
- intel_npu_acceleration_library/external/openvino/frontend/jax/utils.py +182 -0
- intel_npu_acceleration_library/external/openvino/frontend/onnx/__init__.py +15 -0
- intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp310-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp311-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp312-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp38-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp39-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/paddle/__init__.py +15 -0
- intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp310-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp311-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp312-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp38-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp39-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/__init__.py +19 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/fx_decoder.py +370 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/gptq.py +180 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/module_extension.py +39 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/patch_model.py +118 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp310-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp311-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp312-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp38-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp39-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/backend.py +131 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/backend_utils.py +85 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/compile.py +141 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/decompositions.py +116 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/execute.py +189 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/op_support.py +290 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/partition.py +126 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/ts_decoder.py +568 -0
- intel_npu_acceleration_library/external/openvino/frontend/pytorch/utils.py +258 -0
- intel_npu_acceleration_library/external/openvino/frontend/tensorflow/__init__.py +16 -0
- intel_npu_acceleration_library/external/openvino/frontend/tensorflow/graph_iterator.py +116 -0
- intel_npu_acceleration_library/external/openvino/frontend/tensorflow/node_decoder.py +219 -0
- intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp310-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp311-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp312-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp38-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp39-win_amd64.pyd +0 -0
- intel_npu_acceleration_library/external/openvino/frontend/tensorflow/utils.py +481 -0
- intel_npu_acceleration_library/external/openvino/helpers/__init__.py +6 -0
- intel_npu_acceleration_library/external/openvino/helpers/packing.py +87 -0
- intel_npu_acceleration_library/external/openvino/preprocess/README.md +60 -0
- intel_npu_acceleration_library/external/openvino/preprocess/__init__.py +28 -0
- intel_npu_acceleration_library/external/openvino/preprocess/torchvision/__init__.py +15 -0
- intel_npu_acceleration_library/external/openvino/preprocess/torchvision/preprocess_converter.py +47 -0
- intel_npu_acceleration_library/external/openvino/preprocess/torchvision/requirements.txt +5 -0
- intel_npu_acceleration_library/external/openvino/preprocess/torchvision/torchvision_preprocessing.py +347 -0
- intel_npu_acceleration_library/external/openvino/properties/__init__.py +22 -0
- intel_npu_acceleration_library/external/openvino/properties/_properties.py +55 -0
- intel_npu_acceleration_library/external/openvino/properties/device/__init__.py +14 -0
- intel_npu_acceleration_library/external/openvino/properties/hint/__init__.py +15 -0
- intel_npu_acceleration_library/external/openvino/properties/intel_auto/__init__.py +12 -0
- intel_npu_acceleration_library/external/openvino/properties/intel_cpu/__init__.py +8 -0
- intel_npu_acceleration_library/external/openvino/properties/intel_gpu/__init__.py +12 -0
- intel_npu_acceleration_library/external/openvino/properties/intel_gpu/hint/__init__.py +11 -0
- intel_npu_acceleration_library/external/openvino/properties/log/__init__.py +11 -0
- intel_npu_acceleration_library/external/openvino/properties/streams/__init__.py +11 -0
- intel_npu_acceleration_library/external/openvino/runtime/__init__.py +85 -0
- intel_npu_acceleration_library/external/openvino/runtime/exceptions.py +17 -0
- intel_npu_acceleration_library/external/openvino/runtime/ie_api.py +631 -0
- intel_npu_acceleration_library/external/openvino/runtime/op/__init__.py +19 -0
- intel_npu_acceleration_library/external/openvino/runtime/op/util/__init__.py +22 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset1/__init__.py +112 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset1/ops.py +3068 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset10/__init__.py +179 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset10/ops.py +173 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset11/__init__.py +179 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset11/ops.py +107 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset12/__init__.py +180 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset12/ops.py +120 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset13/__init__.py +188 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset13/ops.py +398 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset14/__init__.py +190 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset14/ops.py +171 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset15/__init__.py +17 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset15/ops.py +276 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset2/__init__.py +118 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset2/ops.py +216 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset3/__init__.py +134 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset3/ops.py +638 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset4/__init__.py +145 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset4/ops.py +464 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset5/__init__.py +152 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset5/ops.py +372 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset6/__init__.py +154 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset6/ops.py +215 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset7/__init__.py +158 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset7/ops.py +169 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset8/__init__.py +169 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset8/ops.py +787 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset9/__init__.py +175 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset9/ops.py +341 -0
- intel_npu_acceleration_library/external/openvino/runtime/opset_utils.py +22 -0
- intel_npu_acceleration_library/external/openvino/runtime/passes/__init__.py +19 -0
- intel_npu_acceleration_library/external/openvino/runtime/passes/graph_rewrite.py +33 -0
- intel_npu_acceleration_library/external/openvino/runtime/passes/manager.py +26 -0
- intel_npu_acceleration_library/external/openvino/runtime/properties/__init__.py +40 -0
- intel_npu_acceleration_library/external/openvino/runtime/properties/hint/__init__.py +25 -0
- intel_npu_acceleration_library/external/openvino/runtime/utils/__init__.py +7 -0
- intel_npu_acceleration_library/external/openvino/runtime/utils/broadcasting.py +44 -0
- intel_npu_acceleration_library/external/openvino/runtime/utils/data_helpers/__init__.py +8 -0
- intel_npu_acceleration_library/external/openvino/runtime/utils/data_helpers/data_dispatcher.py +447 -0
- intel_npu_acceleration_library/external/openvino/runtime/utils/data_helpers/wrappers.py +148 -0
- intel_npu_acceleration_library/external/openvino/runtime/utils/decorators.py +156 -0
- intel_npu_acceleration_library/external/openvino/runtime/utils/input_validation.py +133 -0
- intel_npu_acceleration_library/external/openvino/runtime/utils/node_factory.py +127 -0
- intel_npu_acceleration_library/external/openvino/runtime/utils/reduction.py +25 -0
- intel_npu_acceleration_library/external/openvino/runtime/utils/types.py +175 -0
- intel_npu_acceleration_library/external/openvino/tools/__init__.py +4 -0
- intel_npu_acceleration_library/external/openvino/tools/benchmark/__init__.py +3 -0
- intel_npu_acceleration_library/external/openvino/tools/benchmark/benchmark.py +186 -0
- intel_npu_acceleration_library/external/openvino/tools/benchmark/main.py +695 -0
- intel_npu_acceleration_library/external/openvino/tools/benchmark/parameters.py +199 -0
- intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/__init__.py +3 -0
- intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/constants.py +26 -0
- intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/inputs_filling.py +482 -0
- intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/logging.py +8 -0
- intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/statistics_report.py +296 -0
- intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/utils.py +836 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/__init__.py +20 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/__main__.py +10 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/cli_parser.py +633 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/convert.py +102 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/convert_data_type.py +82 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/convert_impl.py +550 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/environment_setup_utils.py +50 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/error.py +49 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/get_ov_update_message.py +16 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/help.py +45 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/logger.py +91 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/main.py +40 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/__init__.py +2 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/analysis.py +46 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/check_config.py +57 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/extractor.py +447 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/jax_frontend_utils.py +19 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/layout_utils.py +73 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/moc_emit_ir.py +32 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/offline_transformations.py +107 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/paddle_frontend_utils.py +83 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/pipeline.py +298 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/preprocessing.py +220 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/pytorch_frontend_utils.py +214 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/shape_utils.py +109 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/type_utils.py +82 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/ovc.py +13 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/telemetry_params.py +6 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/telemetry_stub.py +28 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/telemetry_utils.py +118 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/utils.py +196 -0
- intel_npu_acceleration_library/external/openvino/tools/ovc/version.py +80 -0
- intel_npu_acceleration_library/external/openvino/torch/__init__.py +5 -0
- intel_npu_acceleration_library/external/openvino/utils.py +115 -0
- intel_npu_acceleration_library/functional/__init__.py +8 -0
- intel_npu_acceleration_library/functional/scaled_dot_product_attention.py +47 -0
- intel_npu_acceleration_library/lib/Release/cache.json +113732 -0
- intel_npu_acceleration_library/lib/Release/intel_npu_acceleration_library.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_auto_batch_plugin.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_auto_plugin.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_c.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_hetero_plugin.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_intel_cpu_plugin.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_intel_gpu_plugin.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_intel_npu_plugin.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_ir_frontend.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_onnx_frontend.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_paddle_frontend.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_pytorch_frontend.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_tensorflow_frontend.dll +0 -0
- intel_npu_acceleration_library/lib/Release/openvino_tensorflow_lite_frontend.dll +0 -0
- intel_npu_acceleration_library/lib/Release/tbb12.dll +0 -0
- intel_npu_acceleration_library/lib/Release/tbb12_debug.dll +0 -0
- intel_npu_acceleration_library/lib/Release/tbbbind_2_5.dll +0 -0
- intel_npu_acceleration_library/lib/Release/tbbbind_2_5_debug.dll +0 -0
- intel_npu_acceleration_library/lib/Release/tbbmalloc.dll +0 -0
- intel_npu_acceleration_library/lib/Release/tbbmalloc_debug.dll +0 -0
- intel_npu_acceleration_library/lib/Release/tbbmalloc_proxy.dll +0 -0
- intel_npu_acceleration_library/lib/Release/tbbmalloc_proxy_debug.dll +0 -0
- intel_npu_acceleration_library/modelling.py +150 -0
- intel_npu_acceleration_library/nn/__init__.py +20 -0
- intel_npu_acceleration_library/nn/autograd.py +68 -0
- intel_npu_acceleration_library/nn/conv.py +257 -0
- intel_npu_acceleration_library/nn/functional.py +1207 -0
- intel_npu_acceleration_library/nn/linear.py +162 -0
- intel_npu_acceleration_library/nn/llm.py +417 -0
- intel_npu_acceleration_library/nn/module.py +393 -0
- intel_npu_acceleration_library/optimizations.py +157 -0
- intel_npu_acceleration_library/quantization.py +174 -0
@@ -0,0 +1,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
|
intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/decompositions.py
ADDED
@@ -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()
|