onnxslim 0.1.68__py3-none-any.whl → 0.1.70__py3-none-any.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.
onnxslim/__init__.py CHANGED
@@ -2,9 +2,7 @@ import os
2
2
  import warnings
3
3
 
4
4
  from onnxslim.cli import slim
5
- from onnxslim.core.optimization import OptimizationSettings
6
5
  from onnxslim.core.pattern.registry import (
7
- DEFAULT_FUSION_PATTERNS,
8
6
  register_fusion_pattern,
9
7
  )
10
8
  from onnxslim.version import __version__
onnxslim/argparser.py CHANGED
@@ -2,10 +2,28 @@ import argparse
2
2
  import dataclasses
3
3
  from argparse import ArgumentDefaultsHelpFormatter, ArgumentParser
4
4
  from dataclasses import dataclass, field
5
- from typing import List, Optional, Type, Union, get_args, get_origin
6
-
7
- import onnxslim
8
-
5
+ from typing import List, Optional, Type, Union, get_args, get_origin, TypedDict, Dict, Literal
6
+
7
+ from .core.optimization import OptimizationSettings
8
+ from .core.pattern.registry import DEFAULT_FUSION_PATTERNS
9
+ from .version import __version__
10
+
11
+
12
+ class OnnxSlimKwargs(TypedDict, total=False):
13
+ model_check: bool
14
+ input_shapes: Dict[str, List[int]]
15
+ inputs: List[str]
16
+ outputs: List[str]
17
+ no_shape_infer: bool
18
+ skip_optimizations: List[str]
19
+ dtype: Literal["float16", "float32", "uint8", "int8"]
20
+ skip_fusion_patterns: List[str]
21
+ size_threshold: int
22
+ inspect: bool
23
+ dump_to_disk: bool
24
+ save_as_external_data: bool
25
+ model_check_inputs: Optional[List[str]]
26
+ verbose: bool
9
27
 
10
28
  def _get_inner_type(arg_type):
11
29
  if get_origin(arg_type) is Union:
@@ -42,14 +60,14 @@ class OptimizationArguments:
42
60
  default=None,
43
61
  metadata={
44
62
  "help": "whether to skip some optimizations",
45
- "choices": list(onnxslim.OptimizationSettings.keys()),
63
+ "choices": list(OptimizationSettings.keys()),
46
64
  },
47
65
  )
48
66
  skip_fusion_patterns: Optional[List[str]] = field(
49
67
  default=None,
50
68
  metadata={
51
69
  "help": "whether to skip the fusion of some patterns",
52
- "choices": list(onnxslim.DEFAULT_FUSION_PATTERNS.keys()),
70
+ "choices": list(DEFAULT_FUSION_PATTERNS.keys()),
53
71
  },
54
72
  )
55
73
  size_threshold: int = field(
@@ -173,7 +191,7 @@ class OnnxSlimArgumentParser(ArgumentParser):
173
191
  # Add positional arguments separately for ModelArguments
174
192
  self.parser.add_argument("input_model", help="input onnx model")
175
193
  self.parser.add_argument("output_model", nargs="?", default=None, help="output onnx model")
176
- self.parser.add_argument("-v", "--version", action="version", version=onnxslim.__version__)
194
+ self.parser.add_argument("-v", "--version", action="version", version=__version__)
177
195
 
178
196
  def parse_args_into_dataclasses(self):
179
197
  # Pre-parse arguments to check for `--inspect`
onnxslim/cli/_main.py CHANGED
@@ -2,8 +2,10 @@ from __future__ import annotations
2
2
 
3
3
  import onnx
4
4
 
5
+ from onnxslim.argparser import OnnxSlimKwargs
5
6
 
6
- def slim(model: str | onnx.ModelProto | list[str | onnx.ModelProto], *args, **kwargs):
7
+
8
+ def slim(model: str | onnx.ModelProto | list[str | onnx.ModelProto], *args, **kwargs: OnnxSlimKwargs):
7
9
  import os
8
10
  import time
9
11
  from pathlib import Path
@@ -1944,7 +1944,25 @@ class SymbolicShapeInference:
1944
1944
 
1945
1945
  def _infer_Shape(self, node): # noqa: N802
1946
1946
  """Infers and sets the symbolic shape for the output node in the computation graph."""
1947
- self.sympy_data_[node.output[0]] = self._get_sympy_shape(node, 0)
1947
+ start = get_attribute(node, "start", 0)
1948
+ end = get_attribute(node, "end", None)
1949
+
1950
+ full_sympy_shape = self._get_sympy_shape(node, 0)
1951
+ num_dims = len(full_sympy_shape)
1952
+
1953
+ if start < 0:
1954
+ start = num_dims + start
1955
+ if end is None:
1956
+ end = num_dims
1957
+ elif end < 0:
1958
+ end = num_dims + end
1959
+
1960
+ assert 0 <= start <= end <= num_dims, (
1961
+ f"reshape start/end invalid: start={start}, end={end}, total_dims={num_dims}"
1962
+ )
1963
+
1964
+ target_sympy_shape = full_sympy_shape[start:end]
1965
+ self.sympy_data_[node.output[0]] = target_sympy_shape
1948
1966
 
1949
1967
  def _infer_Size(self, node): # noqa: N802
1950
1968
  """Infers and sets the size of the output node by computing the product of its shape in the computation
@@ -2826,7 +2844,6 @@ class SymbolicShapeInference:
2826
2844
  def _infer_impl(self, start_sympy_data=None):
2827
2845
  """Infer implementation details and update symbolic data and input symbols."""
2828
2846
  self.sympy_data_ = start_sympy_data or {}
2829
- self.out_mp_.graph.ClearField("value_info")
2830
2847
  self._apply_suggested_merge(graph_input_only=True)
2831
2848
  self.input_symbols_ = set()
2832
2849
  for i in self.out_mp_.graph.input:
onnxslim/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = "0.1.68"
1
+ __version__ = "0.1.70"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: onnxslim
3
- Version: 0.1.68
3
+ Version: 0.1.70
4
4
  Summary: OnnxSlim: A Toolkit to Help Optimize Onnx Model
5
5
  Home-page: https://github.com/inisis/OnnxSlim
6
6
  Author: inisis
@@ -1,10 +1,10 @@
1
- onnxslim/__init__.py,sha256=-zmz0A4bd_t8VgNXZVMizIpKJswIlC99hr8juWYm2kc,660
1
+ onnxslim/__init__.py,sha256=ECHGdxzg4b-4SZaPhxM_KulBi-xDbVcVUbpJc8i6a60,571
2
2
  onnxslim/__main__.py,sha256=FgDcl6xX8kV_52rB-jPVsmGqidlVhkpe_YhXK75-nFU,75
3
- onnxslim/argparser.py,sha256=aLVOV7c_HmsvuuAeb1FMRyqXTPRtjwm-bGt4O-7AxMg,8350
3
+ onnxslim/argparser.py,sha256=pFv3nEZH2BiHO9ejS4Iq5ZuZ3GrpdyRQJypAyR0xF7w,8942
4
4
  onnxslim/utils.py,sha256=uNh3Mr4DberXtKL6p649QrrLR7gYbldYuIm6QLo14Zg,28043
5
- onnxslim/version.py,sha256=jLW9YDKJDUjNiMYmJhfPaIubYAn7SaPKsTXhnrOdbhg,23
5
+ onnxslim/version.py,sha256=cccQoQHdRDqS_EuWR2yvG91WHNMC63UUtWzJGOrGCaY,23
6
6
  onnxslim/cli/__init__.py,sha256=kxK27cDgWotBOWRs86rbRQf_dtmniKr1GZJeasxfESE,42
7
- onnxslim/cli/_main.py,sha256=CPitq8khtOLCrJxvmam61ONppACfjQUzRshZtyabZak,5487
7
+ onnxslim/cli/_main.py,sha256=jEKv9q7y_y9g0GsrfXcnk_wyMVej6jhe9QNPChE7yTs,5550
8
8
  onnxslim/core/__init__.py,sha256=d6zfD4rcR51yJIFg1LpGQt2tK4g1WLmA87_7Gna89OU,8469
9
9
  onnxslim/core/optimization/__init__.py,sha256=cAzv2YoZMS2krWoylrqDd9HU0aAhSCAM29dZclKqOQo,4777
10
10
  onnxslim/core/optimization/dead_node_elimination.py,sha256=xAO37JvW7Yb3mT5cXY6K6cWMAvbmFL0pczpcRQfd5Ek,7557
@@ -29,7 +29,7 @@ onnxslim/core/pattern/fusion/reduce.py,sha256=dMC7CPlFglrJxugsJWjcc-jQCIa_GIbW1y
29
29
  onnxslim/misc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
30
  onnxslim/misc/tabulate.py,sha256=pytOhVcWPW6B464BvG0rycbz8QA0MAeCSqQ7EO93tqs,99648
31
31
  onnxslim/third_party/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
- onnxslim/third_party/symbolic_shape_infer.py,sha256=wG5wcB9TiUnOG_FX2w1XGy_oqKh2TMforFwtJrx_IV0,153088
32
+ onnxslim/third_party/symbolic_shape_infer.py,sha256=iBrhPAgR--GNm6jSbR0gmmhVnzDICVULIdiqRlL7EIg,153592
33
33
  onnxslim/third_party/_sympy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
34
  onnxslim/third_party/_sympy/functions.py,sha256=FrrTHPkDhwh_EccLGugbcodeOjfGeM17T5_oVPUjOlA,8877
35
35
  onnxslim/third_party/_sympy/numbers.py,sha256=w1dJJcQkKRzLDCJMn70YTwPtrEWPFrhCJpAsZhukJOk,11383
@@ -55,10 +55,10 @@ onnxslim/third_party/onnx_graphsurgeon/logger/logger.py,sha256=L12rrwn33RHH-2WLv
55
55
  onnxslim/third_party/onnx_graphsurgeon/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
56
56
  onnxslim/third_party/onnx_graphsurgeon/util/exception.py,sha256=KrsHbKEQ4237UbjlODsUzvkXoAY72LZi23ApBeFANWg,786
57
57
  onnxslim/third_party/onnx_graphsurgeon/util/misc.py,sha256=kyxInD2SCRLU4wHMeiDEYEHB3871fGks6kQTuF9uATY,8960
58
- onnxslim-0.1.68.dist-info/licenses/LICENSE,sha256=oHZXw-yrBwdNVGu4JtlZhMgmQHKIZ7BJJlJdhu1HKvI,1062
59
- onnxslim-0.1.68.dist-info/METADATA,sha256=UiRpjeAqYUvRgvaNeSu6Na2IgmG1BNJmttF1s3uh_EU,7621
60
- onnxslim-0.1.68.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
61
- onnxslim-0.1.68.dist-info/entry_points.txt,sha256=O2QgceCVeGeRhnxRSDRcGiFd0ZNfElwrTiRo1W2V7KA,47
62
- onnxslim-0.1.68.dist-info/top_level.txt,sha256=EWFTb99i0kc6cC9akqNKp88ipzg17_VZzYN7z1kQNlA,9
63
- onnxslim-0.1.68.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
64
- onnxslim-0.1.68.dist-info/RECORD,,
58
+ onnxslim-0.1.70.dist-info/licenses/LICENSE,sha256=oHZXw-yrBwdNVGu4JtlZhMgmQHKIZ7BJJlJdhu1HKvI,1062
59
+ onnxslim-0.1.70.dist-info/METADATA,sha256=_Cv8cxA_t_EUzLq4rPTqnzhvvMs68Rs6exGDw1gxNVI,7621
60
+ onnxslim-0.1.70.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
61
+ onnxslim-0.1.70.dist-info/entry_points.txt,sha256=O2QgceCVeGeRhnxRSDRcGiFd0ZNfElwrTiRo1W2V7KA,47
62
+ onnxslim-0.1.70.dist-info/top_level.txt,sha256=EWFTb99i0kc6cC9akqNKp88ipzg17_VZzYN7z1kQNlA,9
63
+ onnxslim-0.1.70.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
64
+ onnxslim-0.1.70.dist-info/RECORD,,