bigdl-core-npu 2.6.0b20241112__cp310-cp310-win_amd64.whl → 2.6.0b20241114__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 (95) hide show
  1. {bigdl_core_npu-2.6.0b20241112.dist-info → bigdl_core_npu-2.6.0b20241114.dist-info}/METADATA +1 -1
  2. {bigdl_core_npu-2.6.0b20241112.dist-info → bigdl_core_npu-2.6.0b20241114.dist-info}/RECORD +95 -85
  3. intel_npu_acceleration_library/_version.py +1 -1
  4. intel_npu_acceleration_library/backend/bindings.py +10 -0
  5. intel_npu_acceleration_library/backend/factory.py +2 -26
  6. intel_npu_acceleration_library/backend/tensor.py +69 -0
  7. intel_npu_acceleration_library/device.py +2 -2
  8. intel_npu_acceleration_library/dtypes.py +34 -1
  9. intel_npu_acceleration_library/external/openvino/_offline_transformations/__init__.py +1 -0
  10. intel_npu_acceleration_library/external/openvino/_pyopenvino.cp310-win_amd64.pyd +0 -0
  11. intel_npu_acceleration_library/external/openvino/_pyopenvino.cp311-win_amd64.pyd +0 -0
  12. intel_npu_acceleration_library/external/openvino/_pyopenvino.cp312-win_amd64.pyd +0 -0
  13. intel_npu_acceleration_library/external/openvino/_pyopenvino.cp38-win_amd64.pyd +0 -0
  14. intel_npu_acceleration_library/external/openvino/_pyopenvino.cp39-win_amd64.pyd +0 -0
  15. intel_npu_acceleration_library/external/openvino/frontend/jax/__init__.py +15 -0
  16. intel_npu_acceleration_library/external/openvino/frontend/jax/jaxpr_decoder.py +283 -0
  17. intel_npu_acceleration_library/external/openvino/frontend/jax/py_jax_frontend.cp310-win_amd64.pyd +0 -0
  18. intel_npu_acceleration_library/external/openvino/frontend/jax/py_jax_frontend.cp311-win_amd64.pyd +0 -0
  19. intel_npu_acceleration_library/external/openvino/frontend/jax/py_jax_frontend.cp312-win_amd64.pyd +0 -0
  20. intel_npu_acceleration_library/external/openvino/frontend/jax/py_jax_frontend.cp38-win_amd64.pyd +0 -0
  21. intel_npu_acceleration_library/external/openvino/frontend/jax/py_jax_frontend.cp39-win_amd64.pyd +0 -0
  22. intel_npu_acceleration_library/external/openvino/frontend/jax/utils.py +129 -0
  23. intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp310-win_amd64.pyd +0 -0
  24. intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp311-win_amd64.pyd +0 -0
  25. intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp312-win_amd64.pyd +0 -0
  26. intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp38-win_amd64.pyd +0 -0
  27. intel_npu_acceleration_library/external/openvino/frontend/onnx/py_onnx_frontend.cp39-win_amd64.pyd +0 -0
  28. intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp310-win_amd64.pyd +0 -0
  29. intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp311-win_amd64.pyd +0 -0
  30. intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp312-win_amd64.pyd +0 -0
  31. intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp38-win_amd64.pyd +0 -0
  32. intel_npu_acceleration_library/external/openvino/frontend/paddle/py_paddle_frontend.cp39-win_amd64.pyd +0 -0
  33. intel_npu_acceleration_library/external/openvino/frontend/pytorch/fx_decoder.py +8 -0
  34. intel_npu_acceleration_library/external/openvino/frontend/pytorch/gptq.py +1 -1
  35. intel_npu_acceleration_library/external/openvino/frontend/pytorch/patch_model.py +28 -8
  36. intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp310-win_amd64.pyd +0 -0
  37. intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp311-win_amd64.pyd +0 -0
  38. intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp312-win_amd64.pyd +0 -0
  39. intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp38-win_amd64.pyd +0 -0
  40. intel_npu_acceleration_library/external/openvino/frontend/pytorch/py_pytorch_frontend.cp39-win_amd64.pyd +0 -0
  41. intel_npu_acceleration_library/external/openvino/frontend/pytorch/torchdynamo/op_support.py +1 -0
  42. intel_npu_acceleration_library/external/openvino/frontend/pytorch/ts_decoder.py +3 -0
  43. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp310-win_amd64.pyd +0 -0
  44. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp311-win_amd64.pyd +0 -0
  45. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp312-win_amd64.pyd +0 -0
  46. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp38-win_amd64.pyd +0 -0
  47. intel_npu_acceleration_library/external/openvino/frontend/tensorflow/py_tensorflow_frontend.cp39-win_amd64.pyd +0 -0
  48. intel_npu_acceleration_library/external/openvino/helpers/packing.py +4 -4
  49. intel_npu_acceleration_library/external/openvino/preprocess/__init__.py +2 -0
  50. intel_npu_acceleration_library/external/openvino/preprocess/torchvision/requirements.txt +1 -0
  51. intel_npu_acceleration_library/external/openvino/properties/__init__.py +1 -0
  52. intel_npu_acceleration_library/external/openvino/runtime/op/__init__.py +1 -0
  53. intel_npu_acceleration_library/external/openvino/runtime/opset1/ops.py +2 -1
  54. intel_npu_acceleration_library/external/openvino/runtime/opset13/ops.py +5 -6
  55. intel_npu_acceleration_library/external/openvino/runtime/opset15/__init__.py +2 -0
  56. intel_npu_acceleration_library/external/openvino/runtime/opset15/ops.py +62 -1
  57. intel_npu_acceleration_library/external/openvino/runtime/opset6/ops.py +60 -43
  58. intel_npu_acceleration_library/external/openvino/runtime/opset8/ops.py +4 -0
  59. intel_npu_acceleration_library/external/openvino/runtime/properties/__init__.py +1 -0
  60. intel_npu_acceleration_library/external/openvino/runtime/utils/decorators.py +67 -1
  61. intel_npu_acceleration_library/external/openvino/tools/benchmark/utils/inputs_filling.py +9 -9
  62. intel_npu_acceleration_library/external/openvino/tools/ovc/convert_impl.py +16 -2
  63. intel_npu_acceleration_library/external/openvino/tools/ovc/main.py +5 -0
  64. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/jax_frontend_utils.py +19 -0
  65. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/pipeline.py +68 -16
  66. intel_npu_acceleration_library/external/openvino/tools/ovc/moc_frontend/pytorch_frontend_utils.py +70 -60
  67. intel_npu_acceleration_library/external/openvino/tools/ovc/utils.py +90 -3
  68. intel_npu_acceleration_library/external/openvino/utils.py +17 -0
  69. intel_npu_acceleration_library/lib/Release/intel_npu_acceleration_library.dll +0 -0
  70. intel_npu_acceleration_library/lib/Release/openvino.dll +0 -0
  71. intel_npu_acceleration_library/lib/Release/openvino_auto_batch_plugin.dll +0 -0
  72. intel_npu_acceleration_library/lib/Release/openvino_auto_plugin.dll +0 -0
  73. intel_npu_acceleration_library/lib/Release/openvino_c.dll +0 -0
  74. intel_npu_acceleration_library/lib/Release/openvino_hetero_plugin.dll +0 -0
  75. intel_npu_acceleration_library/lib/Release/openvino_intel_cpu_plugin.dll +0 -0
  76. intel_npu_acceleration_library/lib/Release/openvino_intel_gpu_plugin.dll +0 -0
  77. intel_npu_acceleration_library/lib/Release/openvino_intel_npu_plugin.dll +0 -0
  78. intel_npu_acceleration_library/lib/Release/openvino_ir_frontend.dll +0 -0
  79. intel_npu_acceleration_library/lib/Release/openvino_jax_frontend.dll +0 -0
  80. intel_npu_acceleration_library/lib/Release/openvino_onnx_frontend.dll +0 -0
  81. intel_npu_acceleration_library/lib/Release/openvino_paddle_frontend.dll +0 -0
  82. intel_npu_acceleration_library/lib/Release/openvino_pytorch_frontend.dll +0 -0
  83. intel_npu_acceleration_library/lib/Release/openvino_tensorflow_frontend.dll +0 -0
  84. intel_npu_acceleration_library/lib/Release/openvino_tensorflow_lite_frontend.dll +0 -0
  85. intel_npu_acceleration_library/lib/Release/tbb12.dll +0 -0
  86. intel_npu_acceleration_library/lib/Release/tbb12_debug.dll +0 -0
  87. intel_npu_acceleration_library/lib/Release/tbbbind_2_5.dll +0 -0
  88. intel_npu_acceleration_library/lib/Release/tbbbind_2_5_debug.dll +0 -0
  89. intel_npu_acceleration_library/lib/Release/tbbmalloc.dll +0 -0
  90. intel_npu_acceleration_library/lib/Release/tbbmalloc_debug.dll +0 -0
  91. intel_npu_acceleration_library/lib/Release/tbbmalloc_proxy.dll +0 -0
  92. intel_npu_acceleration_library/lib/Release/tbbmalloc_proxy_debug.dll +0 -0
  93. intel_npu_acceleration_library/nn/module.py +17 -17
  94. {bigdl_core_npu-2.6.0b20241112.dist-info → bigdl_core_npu-2.6.0b20241114.dist-info}/WHEEL +0 -0
  95. {bigdl_core_npu-2.6.0b20241112.dist-info → bigdl_core_npu-2.6.0b20241114.dist-info}/top_level.txt +0 -0
@@ -8,6 +8,7 @@ import numpy as np
8
8
  # pylint: disable=no-name-in-module,import-error
9
9
  from openvino.runtime import Tensor, PartialShape
10
10
  from openvino.tools.ovc.error import Error
11
+ from openvino.tools.ovc.cli_parser import single_input_to_input_cut_info, _InputCutInfo
11
12
 
12
13
 
13
14
 
@@ -90,76 +91,85 @@ def get_value_from_list_or_dict(container, name, idx):
90
91
  return None
91
92
 
92
93
 
94
+ def flatten_inputs(inputs, names=None):
95
+ flattened = []
96
+ if isinstance(inputs, dict):
97
+ # if names are provided we need to unpack in the same order
98
+ if names:
99
+ for name in names:
100
+ if isinstance(inputs[name], (list, tuple, dict)):
101
+ flattened.extend(flatten_inputs(inputs[name]))
102
+ else:
103
+ flattened.append((name, inputs[name]))
104
+ else:
105
+ for name, input_data in inputs.items():
106
+ if isinstance(input_data, (list, tuple, dict)):
107
+ flattened.extend(flatten_inputs(input_data))
108
+ else:
109
+ flattened.append((name, input_data))
110
+ else:
111
+ for input_data in inputs:
112
+ if isinstance(input_data, (list, tuple, dict)):
113
+ flattened.extend(flatten_inputs(input_data))
114
+ else:
115
+ flattened.append(input_data)
116
+ return flattened
117
+
118
+
93
119
  def extract_input_info_from_example(args, inputs):
94
120
  try:
95
121
  from openvino.frontend.pytorch.utils import pt_to_ov_type_map # pylint: disable=no-name-in-module,import-error
96
122
  except Exception as e:
97
123
  log.error("PyTorch frontend loading failed")
98
124
  raise e
99
- example_inputs = args.example_input
100
- data_types = args.placeholder_data_types or {}
101
- input_shapes = args.placeholder_shapes or {}
125
+ example_inputs = args.input_model._example_input if args.input_model._example_input is not None else args.example_input
126
+ if example_inputs is None:
127
+ return
102
128
  is_dict_input = isinstance(example_inputs, dict)
103
- list_inputs = list(example_inputs.values()) if is_dict_input else example_inputs
104
- input_names = None
105
129
  if not isinstance(example_inputs, (list, tuple, dict)):
106
- list_inputs = [list_inputs]
107
- if args.input_model._input_is_list:
108
- list_inputs[0] = list_inputs[0].unsqueeze(0)
109
- if args.input_model._input_signature is not None and not is_dict_input:
130
+ example_inputs = [example_inputs]
131
+ input_names = None
132
+ if args.input_model._input_signature is not None:
110
133
  input_names = args.input_model._input_signature[1:] if args.input_model._input_signature[
111
134
  0] == "self" else args.input_model._input_signature
112
- if not is_dict_input:
113
- example_inputs = dict(zip(input_names, list_inputs))
114
- is_dict_input = True
115
- elif is_dict_input:
116
- input_names = list(example_inputs)
117
- if not data_types and input_names is None:
118
- data_types = []
119
- if not input_shapes and input_names is None:
120
- input_shapes = []
121
- if inputs:
122
- for input_id, input_info in enumerate(inputs):
123
- input_name = input_info.name
124
- if is_dict_input and input_name in example_inputs:
125
- example_input = example_inputs[input_name]
126
- else:
127
- example_input = list_inputs[input_id]
128
- if is_dict_input and input_name is None:
129
- input_name = input_names[input_id]
130
- dtype = getattr(example_input, "dtype", type(example_input))
131
- example_dtype = pt_to_ov_type_map.get(str(dtype))
132
- user_dtype = get_value_from_list_or_dict(data_types, input_name, input_id)
133
- if user_dtype is not None and example_dtype is not None and example_dtype != user_dtype:
134
- raise Error(
135
- f"Defined input type {user_dtype} is not equal to provided example_input type {example_dtype}")
136
-
137
- data_rank = getattr(example_input, "ndim", 0)
138
- user_input_shape = get_value_from_list_or_dict(input_shapes, input_name, input_id)
139
- if user_input_shape.rank.is_static and user_input_shape.rank.get_length() != data_rank:
140
- raise Error(
141
- f"Requested input shape {user_input_shape.rank.get_length()} rank"
142
- f" is not equal to provided example_input rank {data_rank}")
143
-
144
- input_shape = user_input_shape if user_input_shape is not None else PartialShape([-1] * data_rank)
145
- update_list_or_dict(data_types, input_name, input_id,
146
- example_dtype if example_dtype is not None else None)
147
- update_list_or_dict(input_shapes, input_name, input_id, input_shape)
148
- else:
149
- for input_id, example_input in enumerate(list_inputs):
150
- dtype = getattr(example_input, "dtype", type(example_input))
151
- ov_dtype = pt_to_ov_type_map.get(str(dtype))
152
- data_rank = getattr(example_input, "ndim", 0)
153
- input_shape = PartialShape([-1] * data_rank)
154
- input_name = input_names[input_id] if input_names else None
155
- update_list_or_dict(input_shapes, input_name, input_id, input_shape)
156
- update_list_or_dict(data_types, input_name, input_id, ov_dtype if ov_dtype is not None else None)
157
-
158
- args.placeholder_data_types = data_types
159
- args.placeholder_shapes = input_shapes
160
- if not args.input and input_names:
161
- args.input_list = input_names
162
- args.input = ",".join(input_names)
135
+ if input_names and not is_dict_input:
136
+ example_inputs = dict(zip(input_names, example_inputs))
137
+ print(input_names)
138
+ example_inputs = flatten_inputs(example_inputs, input_names)
139
+ input_arg = []
140
+ for example in example_inputs:
141
+ name = None
142
+ if isinstance(example, tuple) and len(example) == 2:
143
+ name = example[0]
144
+ example = example[1]
145
+ shape = PartialShape([-1] * example.ndim) if hasattr(example, "ndim") else PartialShape.dynamic()
146
+ dtype = getattr(example, "dtype", type(example))
147
+ dtype = pt_to_ov_type_map.get(str(dtype))
148
+ if name:
149
+ input_arg.append(single_input_to_input_cut_info((name, shape, dtype)))
150
+ else:
151
+ input_arg.append(single_input_to_input_cut_info((shape, dtype)))
152
+ if inputs is not None and len(inputs) != 0:
153
+ if len(inputs) == len(input_arg):
154
+ # we can update input argument with info from examples
155
+ new_input = []
156
+ for i in range(len(input_arg)):
157
+ input_desc = args.input[i]
158
+ name = input_desc.name
159
+ dtype = input_desc.type
160
+ shape = input_desc.shape
161
+ if name is None:
162
+ name = input_arg[i].name
163
+ if dtype is None:
164
+ dtype = input_arg[i].type
165
+ if shape is None:
166
+ shape = input_arg[i].shape
167
+ new_input.append(_InputCutInfo(name, shape, dtype, input_desc.value))
168
+ input_arg = new_input
169
+ else:
170
+ # we can't update args.input
171
+ return
172
+ args.input = input_arg
163
173
 
164
174
 
165
175
  # pylint: disable=no-member
@@ -1,11 +1,13 @@
1
1
  # Copyright (C) 2018-2024 Intel Corporation
2
2
  # SPDX-License-Identifier: Apache-2.0
3
3
 
4
- import os
5
- from typing import Iterable, Union
6
-
4
+ import importlib.util
5
+ import logging as log
7
6
  import numpy as np
7
+ import os
8
+ import sys
8
9
  from openvino.tools.ovc.error import Error
10
+ from typing import Iterable, Union
9
11
 
10
12
  try:
11
13
  import openvino_telemetry as tm
@@ -13,6 +15,11 @@ try:
13
15
  except ImportError:
14
16
  import openvino.tools.ovc.telemetry_stub as tm
15
17
 
18
+ if sys.version_info < (3, 8):
19
+ import importlib_metadata
20
+ else:
21
+ import importlib.metadata as importlib_metadata
22
+
16
23
  dynamic_dimension = np.ma.masked
17
24
 
18
25
 
@@ -107,3 +114,83 @@ def get_ir_version():
107
114
  :return: the IR version
108
115
  """
109
116
  return 11
117
+
118
+
119
+ def import_openvino_tokenizers():
120
+ # extract openvino version
121
+ if importlib.util.find_spec("openvino") is None:
122
+ return False
123
+ try:
124
+ from openvino import get_version
125
+ openvino_version = get_version()
126
+ openvino_available = True
127
+ except ImportError:
128
+ openvino_available = False
129
+ if not openvino_available:
130
+ return False
131
+
132
+ if importlib.util.find_spec("openvino_tokenizers") is None:
133
+ return False
134
+
135
+ try:
136
+ pip_metadata_version = importlib_metadata.version("openvino")
137
+ except importlib_metadata.PackageNotFoundError:
138
+ pip_metadata_version = False
139
+ try:
140
+ pip_metadata_version = importlib_metadata.version("openvino-nightly")
141
+ is_nightly = True
142
+ except importlib_metadata.PackageNotFoundError:
143
+ is_nightly = False
144
+
145
+ try:
146
+ import openvino_tokenizers # pylint: disable=no-name-in-module,import-error
147
+
148
+ openvino_tokenizers._get_factory()
149
+ except RuntimeError:
150
+ tokenizers_version = openvino_tokenizers.__version__
151
+
152
+ if tokenizers_version == "0.0.0.0":
153
+ try:
154
+ tokenizers_version = importlib_metadata.version("openvino_tokenizers") or tokenizers_version
155
+ except importlib_metadata.PackageNotFoundError:
156
+ pass
157
+ message = (
158
+ "OpenVINO and OpenVINO Tokenizers versions are not binary compatible.\n"
159
+ f"OpenVINO version: {openvino_version}\n"
160
+ f"OpenVINO Tokenizers version: {tokenizers_version}\n"
161
+ "First 3 numbers should be the same. Update OpenVINO Tokenizers to compatible version. "
162
+ )
163
+ if not pip_metadata_version:
164
+ message += (
165
+ "For archive installation of OpenVINO try to build OpenVINO Tokenizers from source: "
166
+ "https://github.com/openvinotoolkit/openvino_tokenizers/tree/master?tab=readme-ov-file"
167
+ "#build-and-install-from-source"
168
+ )
169
+ if sys.platform == "linux":
170
+ message += (
171
+ "\nThe PyPI version of OpenVINO Tokenizers is built on CentOS and may not be compatible with other "
172
+ "Linux distributions; rebuild OpenVINO Tokenizers from source."
173
+ )
174
+ else:
175
+ message += (
176
+ "It is recommended to use the same day builds for pre-release version. "
177
+ "To install both OpenVINO and OpenVINO Tokenizers release version perform:\n"
178
+ )
179
+ if is_nightly:
180
+ message += "pip uninstall -y openvino-nightly && "
181
+ message += "pip install --force-reinstall openvino openvino-tokenizers\n"
182
+ if is_nightly:
183
+ message += (
184
+ "openvino-nightly package will be deprecated in the future - use pre-release drops instead. "
185
+ )
186
+ message += "To update both OpenVINO and OpenVINO Tokenizers to the latest pre-release version perform:\n"
187
+ if is_nightly:
188
+ message += "pip uninstall -y openvino-nightly && "
189
+ message += (
190
+ "pip install --pre -U openvino openvino-tokenizers "
191
+ "--extra-index-url https://storage.openvinotoolkit.org/simple/wheels/nightly"
192
+ )
193
+ log.warning(message)
194
+ return False
195
+
196
+ return True
@@ -6,6 +6,7 @@ import os
6
6
  import sys
7
7
  from functools import wraps
8
8
  from typing import Callable, Any
9
+ from pathlib import Path
9
10
 
10
11
 
11
12
  def _add_openvino_libs_to_search_path() -> None:
@@ -38,6 +39,22 @@ def _add_openvino_libs_to_search_path() -> None:
38
39
  os.add_dll_directory(os.path.abspath(lib_path))
39
40
 
40
41
 
42
+ def get_cmake_path() -> str:
43
+ """Searches for the directory containing CMake files within the package install directory.
44
+
45
+ :return: The path to the directory containing CMake files, if found. Otherwise, returns empty string.
46
+ :rtype: str
47
+ """
48
+ package_path = Path(__file__).parent
49
+ cmake_file = "OpenVINOConfig.cmake"
50
+
51
+ for dirpath, _, filenames in os.walk(package_path):
52
+ if cmake_file in filenames:
53
+ return dirpath
54
+
55
+ return ""
56
+
57
+
41
58
  def deprecated(name: Any = None, version: str = "", message: str = "", stacklevel: int = 2) -> Callable[..., Any]:
42
59
  """Prints deprecation warning "{function_name} is deprecated and will be removed in version {version}. {message}" and runs the function.
43
60
 
@@ -67,23 +67,23 @@ def compute_input_signature(
67
67
  return "_".join(signature)
68
68
 
69
69
 
70
- def patch_parameters(module: torch.nn.Module, model: NNFactory, recurse: bool = False):
71
- """Patch the parameters of a PyTorch module with constants.
72
-
73
- Args:
74
- module (torch.nn.Module): The PyTorch module.
75
- model (NNFactory): The NNFactory instance.
76
- recurse (bool, optional): Recurse over all submodules. Defaults to False.
77
- """
78
- elements = list(module.named_parameters(recurse=recurse))
79
- for name, param in elements:
80
- del module._parameters[name]
81
- setattr(module, name, model.constant(param.data.detach().numpy()))
82
-
83
- buffers = list(module.named_buffers(recurse=recurse))
84
- for name, param in buffers:
85
- del module._buffers[name]
86
- setattr(module, name, model.constant(param.data.detach().numpy()))
70
+ # def patch_parameters(module: torch.nn.Module, model: NNFactory, recurse: bool = False):
71
+ # """Patch the parameters of a PyTorch module with constants.
72
+
73
+ # Args:
74
+ # module (torch.nn.Module): The PyTorch module.
75
+ # model (NNFactory): The NNFactory instance.
76
+ # recurse (bool, optional): Recurse over all submodules. Defaults to False.
77
+ # """
78
+ # elements = list(module.named_parameters(recurse=recurse))
79
+ # for name, param in elements:
80
+ # del module._parameters[name]
81
+ # setattr(module, name, model.constant(param.data.detach().numpy()))
82
+
83
+ # buffers = list(module.named_buffers(recurse=recurse))
84
+ # for name, param in buffers:
85
+ # del module._buffers[name]
86
+ # setattr(module, name, model.constant(param.data.detach().numpy()))
87
87
 
88
88
 
89
89
  def patch_modules(module: torch.nn.Module, model: NNFactory):