tico 0.1.0.dev250619__py3-none-any.whl → 0.1.0.dev250623__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.
tico/__init__.py CHANGED
@@ -21,7 +21,7 @@ from tico.config import CompileConfigV1, get_default_config
21
21
  from tico.utils.convert import convert, convert_from_exported_program, convert_from_pt2
22
22
 
23
23
  # THIS LINE IS AUTOMATICALLY GENERATED BY setup.py
24
- __version__ = "0.1.0.dev250619"
24
+ __version__ = "0.1.0.dev250623"
25
25
 
26
26
  MINIMUM_SUPPORTED_VERSION = "2.5.0"
27
27
  SECURE_TORCH_VERSION = "2.6.0"
@@ -16,11 +16,14 @@ from typing import TYPE_CHECKING
16
16
 
17
17
  if TYPE_CHECKING:
18
18
  import torch.fx
19
+ import copy
20
+
19
21
  import torch
20
22
  from torch.export import ExportedProgram
21
23
 
22
24
  from tico.serialize.quant_param import QPARAM_KEY, QuantParam, to_qparam_dtype
23
25
  from tico.utils import logging
26
+ from tico.utils.graph import create_node
24
27
  from tico.utils.passes import PassBase, PassResult
25
28
  from tico.utils.trace_decorators import trace_graph_diff_on_pass
26
29
  from tico.utils.utils import get_quant_dtype
@@ -78,6 +81,15 @@ class FoldQuantOps(PassBase):
78
81
  if q_args.dtype != dq_args.dtype:
79
82
  continue
80
83
 
84
+ # Case 1. op is not quantized
85
+ # - Quantize op
86
+ # Case 2. op is quantized
87
+ # 2.1. op_dtype == qdq_dtype
88
+ # - Just skip (NOTE Need requantization?)
89
+ # 2.2. op_dtype != qdq_dtype
90
+ # - Insert Quantize operator
91
+
92
+ # Case 1
81
93
  if QPARAM_KEY not in op.meta:
82
94
  qparam = QuantParam()
83
95
  qparam.scale = [q_args.scale]
@@ -85,9 +97,24 @@ class FoldQuantOps(PassBase):
85
97
  qparam.dtype = get_quant_dtype(q_args.quant_min, q_args.quant_max)
86
98
  op.meta[QPARAM_KEY] = qparam
87
99
 
88
- dq.replace_all_uses_with(op, propagate_meta=False)
89
-
90
- logger.debug(f"{q.name} and {dq.name} are folded to {op.name}.")
100
+ dq.replace_all_uses_with(op, propagate_meta=False)
101
+
102
+ logger.debug(f"{q.name} and {dq.name} are folded to {op.name}.")
103
+ else:
104
+ op_qparam: QuantParam = op.meta[QPARAM_KEY]
105
+ qdq_dtype = get_quant_dtype(q_args.quant_min, q_args.quant_max)
106
+ # Case 2.2
107
+ if op_qparam.dtype != qdq_dtype:
108
+ # If op is already quantized with a dtype different from qdq, leave quantize
109
+ qparam = QuantParam()
110
+ qparam.scale = [q_args.scale]
111
+ qparam.zero_point = [q_args.zero_p]
112
+ qparam.dtype = qdq_dtype
113
+ q.meta[QPARAM_KEY] = qparam
114
+ assert len(q.users) == 1, "Fix me unless"
115
+
116
+ dq.replace_all_uses_with(q, propagate_meta=False)
117
+ logger.debug(f"{dq.name} is folded ({q.name} is left).")
91
118
 
92
119
  graph.eliminate_dead_code()
93
120
  graph.lint()
@@ -117,6 +117,7 @@ class CastMixedTypeArgs(PassBase):
117
117
  lhs_val, rhs_val, type_promotion_kind=ops_to_promote[node.target]
118
118
  )[1]
119
119
  arg_to_promote = None
120
+ ori_type = None
120
121
  if lhs_val.dtype == type_to_promote:
121
122
  ori_type = rhs_val.dtype
122
123
  arg_to_promote = rhs
@@ -110,6 +110,8 @@ class ConvertConv1dToConv2d(PassBase):
110
110
  conv2d_op = torch.ops.aten.conv2d.default
111
111
  elif isinstance(padding, str):
112
112
  conv2d_op = torch.ops.aten.conv2d.padding
113
+ else:
114
+ raise RuntimeError("Invalid input")
113
115
 
114
116
  conv2d = create_node(
115
117
  graph,
@@ -86,6 +86,8 @@ class FuseRedundantReshapeToMean(PassBase):
86
86
  updated_args = node.args + (keep_dims,)
87
87
  elif len(mean_args) == 3:
88
88
  updated_args = node.args
89
+ else:
90
+ raise RuntimeError("Invalid input")
89
91
  node.args = updated_args
90
92
  node.meta["val"] = fused_val
91
93
  user_node.replace_all_uses_with(node, propagate_meta=False)
@@ -163,6 +163,7 @@ class LegalizePreDefinedLayoutOperators(PassBase):
163
163
  node.update_arg(node.args.index(weight), weight_permute)
164
164
 
165
165
  with graph.inserting_before(node):
166
+ legalized_op = None
166
167
  if groups == 1:
167
168
  if isinstance(padding, list):
168
169
  legalized_op = torch.ops.circle_custom.conv2d
@@ -175,6 +176,7 @@ class LegalizePreDefinedLayoutOperators(PassBase):
175
176
  legalized_op = torch.ops.circle_custom.depthwise_conv2d.padding
176
177
  else:
177
178
  assert groups == 1 or groups == input_shape[1] # Cannot reach here
179
+ assert legalized_op is not None
178
180
 
179
181
  circle_op = create_node(
180
182
  graph, legalized_op, args=node.args, kwargs=node.kwargs, origin=node
@@ -242,12 +242,16 @@ class RemoveRedundantReshapePattern3(PassBase):
242
242
  softmax = reshape_1_args.input
243
243
 
244
244
  # softmax
245
+ softmax_args = None
245
246
  if not is_target_node(softmax, ops.aten.softmax):
246
247
  continue
247
248
  if softmax.target == torch.ops.aten._softmax.default:
248
249
  softmax_args = SoftmaxArgs(*softmax.args, **softmax.kwargs) # type: ignore[arg-type, assignment]
249
250
  elif softmax.target == torch.ops.aten._safe_softmax.default:
250
251
  softmax_args = SafeSoftmaxArgs(*softmax.args, **softmax.kwargs) # type: ignore[arg-type, assignment]
252
+ else:
253
+ raise RuntimeError("Invalid input")
254
+ assert softmax_args is not None
251
255
  add, softmax_dim = (
252
256
  softmax_args.input,
253
257
  softmax_args.dim,
tico/pt2_to_circle.py CHANGED
@@ -14,6 +14,7 @@
14
14
 
15
15
  import argparse
16
16
  import os
17
+ from typing import Optional
17
18
 
18
19
  import torch
19
20
  import yaml
@@ -27,8 +28,10 @@ def convert(
27
28
  input: str,
28
29
  output: str,
29
30
  verbose: bool = False,
30
- config: CompileConfigBase = get_default_config(),
31
+ config: Optional[CompileConfigBase] = None,
31
32
  ):
33
+ if config is None:
34
+ config = get_default_config()
32
35
  # TODO Check input and output
33
36
 
34
37
  if verbose:
@@ -73,6 +76,7 @@ def main():
73
76
 
74
77
  args = parser.parse_args()
75
78
 
79
+ config = None
76
80
  if args.config:
77
81
  with open(args.config) as f:
78
82
  config_dict = yaml.safe_load(f)
@@ -102,6 +102,7 @@ class AnyVisitor(NodeVisitor):
102
102
  input_shape = list(extract_shape(input))
103
103
  output_shape = list(extract_shape(node))
104
104
 
105
+ dim_i32 = None
105
106
  if dim is None:
106
107
  dims = tuple(i for i in range(0, len(input_shape)))
107
108
  dim_i32 = tuple(
@@ -111,8 +112,12 @@ class AnyVisitor(NodeVisitor):
111
112
  dim_i32 = circle_legalize_dtype_to(dim, dtype=torch.int32)
112
113
  if isinstance(dim, tuple):
113
114
  dim_i32 = tuple(circle_legalize_dtype_to(d, dtype=torch.int32) for d in dim)
115
+ assert dim_i32 is not None
114
116
 
115
- inputs = [input, dim_i32]
117
+ inputs = [
118
+ input,
119
+ dim_i32,
120
+ ] # type: ignore[list-item]
116
121
  outputs = [node]
117
122
 
118
123
  dtype_torch = extract_torch_dtype(input)
@@ -60,6 +60,7 @@ class AvgPool2DVisitor(NodeVisitor):
60
60
  input_shape = list(extract_shape(args.input))
61
61
  kernel_size = args.kernel_size
62
62
  stride = args.stride
63
+ assert stride
63
64
  padding = args.padding
64
65
  # TODO Update this function when supporting ceil_mode = True
65
66
  assert args.ceil_mode is False
@@ -72,6 +72,7 @@ class MaxPool2DWithIndicesVisitor(NodeVisitor):
72
72
  input = args.input
73
73
  kernel_size = args.kernel_size
74
74
  stride = args.stride
75
+ assert stride
75
76
  padding = args.padding
76
77
 
77
78
  maxpool_input: torch.fx.Node | circle.Tensor.TensorT = input
@@ -385,7 +385,7 @@ def CircleMaxPool2D():
385
385
  def maxpool2d(
386
386
  input_: torch.Tensor,
387
387
  kernel_size: List[int],
388
- stride: List[int],
388
+ stride: Optional[List[int]] = None,
389
389
  padding: Optional[List[int]] = None,
390
390
  dilation: Optional[List[int]] = None,
391
391
  ceil_mode: Optional[bool] = None,
@@ -397,6 +397,7 @@ def CircleMaxPool2D():
397
397
  So, let's set them by None in input specs, and then, set it by default values.
398
398
  https://github.com/pytorch/pytorch/blob/6b05aafc/torch/_library/infer_schema.py#L131-L144
399
399
  """
400
+ stride = kernel_size if not stride else stride
400
401
  padding = [0, 0] if padding is None else padding
401
402
  dilation = [1, 1] if dilation is None else dilation
402
403
  ceil_mode = False if ceil_mode is None else ceil_mode
@@ -416,7 +417,7 @@ def CircleMaxPool2D():
416
417
  def _(
417
418
  input_: torch.Tensor,
418
419
  kernel_size: List[int],
419
- stride: List[int],
420
+ stride: Optional[List[int]] = None,
420
421
  padding: Optional[List[int]] = None,
421
422
  dilation: Optional[List[int]] = None,
422
423
  ceil_mode: Optional[bool] = None,
@@ -428,6 +429,7 @@ def CircleMaxPool2D():
428
429
  So, let's set them by None in input specs, and then, set it by default values.
429
430
  https://github.com/pytorch/pytorch/blob/6b05aafc/torch/_library/infer_schema.py#L131-L144
430
431
  """
432
+ stride = kernel_size if not stride else stride
431
433
  padding = [0, 0] if padding is None else padding
432
434
  dilation = [1, 1] if dilation is None else dilation
433
435
  ceil_mode = False if ceil_mode is None else ceil_mode
@@ -449,12 +451,13 @@ def CircleAvgPool2D():
449
451
  def avgpool2d(
450
452
  input_: torch.Tensor,
451
453
  kernel_size: List[int],
452
- stride: List[int],
454
+ stride: Optional[List[int]] = None,
453
455
  padding: Optional[List[int]] = None,
454
456
  ceil_mode: Optional[bool] = None,
455
457
  count_include_pad: Optional[bool] = None,
456
458
  divisor_override: Optional[int] = None,
457
459
  ) -> torch.Tensor:
460
+ stride = kernel_size if not stride else stride
458
461
  padding = [0, 0] if padding is None else padding
459
462
  ceil_mode = False if ceil_mode is None else ceil_mode
460
463
  count_include_pad = True if count_include_pad is None else count_include_pad
@@ -482,12 +485,13 @@ def CircleAvgPool2D():
482
485
  def _(
483
486
  input_: torch.Tensor,
484
487
  kernel_size: List[int],
485
- stride: List[int],
488
+ stride: Optional[List[int]] = None,
486
489
  padding: Optional[List[int]] = None,
487
490
  ceil_mode: Optional[bool] = None,
488
491
  count_include_pad: Optional[bool] = None,
489
492
  divisor_override: Optional[int] = None,
490
493
  ):
494
+ stride = kernel_size if not stride else stride
491
495
  padding = [0, 0] if padding is None else padding
492
496
  ceil_mode = False if ceil_mode is None else ceil_mode
493
497
  count_include_pad = True if count_include_pad is None else count_include_pad
@@ -123,7 +123,7 @@ class AvgPool2dArgs:
123
123
 
124
124
  input: torch.fx.Node
125
125
  kernel_size: List[int]
126
- stride: List[int] = field(default_factory=list)
126
+ stride: Optional[List[int]] = None
127
127
  padding: List[int] = field(default_factory=lambda: [0, 0])
128
128
  ceil_mode: bool = field(default=False)
129
129
  count_include_pad: bool = field(default=True)
@@ -131,6 +131,7 @@ class AvgPool2dArgs:
131
131
 
132
132
  def __post_init__(self):
133
133
  assert len(self.kernel_size) == 2, len(self.kernel_size)
134
+ self.stride = self.kernel_size if not self.stride else self.stride
134
135
  assert len(self.stride) == 2, len(self.stride)
135
136
  if self.padding is not None:
136
137
  assert len(self.padding) == 2, len(self.padding)
@@ -609,13 +610,14 @@ class MaxPool2dWithIndicesArgs:
609
610
 
610
611
  input: torch.fx.Node
611
612
  kernel_size: List[int]
612
- stride: List[int] = field(default_factory=list)
613
+ stride: Optional[List[int]] = None
613
614
  padding: List[int] = field(default_factory=lambda: [0, 0])
614
615
  dilation: List[int] = field(default_factory=lambda: [1, 1])
615
616
  ceil_mode: bool = field(default=False)
616
617
 
617
618
  def __post_init__(self):
618
619
  assert len(self.kernel_size) == 2, len(self.kernel_size)
620
+ self.stride = self.kernel_size if not self.stride else self.stride
619
621
  assert len(self.stride) == 2, len(self.stride)
620
622
  if self.padding is not None:
621
623
  assert len(self.padding) == 2, len(self.padding)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tico
3
- Version: 0.1.0.dev250619
3
+ Version: 0.1.0.dev250623
4
4
  Summary: Convert exported Torch module to circle
5
5
  Home-page: UNKNOWN
6
6
  License: UNKNOWN
@@ -1,5 +1,5 @@
1
- tico/__init__.py,sha256=tvZ8ebod0VB1gCI6Pf4kkiUWrmA31DGVE_9E2MAjYXo,1743
2
- tico/pt2_to_circle.py,sha256=PPmFNw20jw2Z2VyM3ln9pX__jTzBOAZiv0gT5a-p-Y8,2666
1
+ tico/__init__.py,sha256=nwI5rrfUKNWpensANra_9s0rBRWY4gFZmXqyKL0suYI,1743
2
+ tico/pt2_to_circle.py,sha256=gu3MD4Iqc0zMZcCZ2IT8oGbyj21CTSbT3Rgd9s2B_9A,2767
3
3
  tico/config/__init__.py,sha256=xZzCXjZ84qE-CsBi-dfaL05bqpQ3stKKfTXhnrJRyVs,142
4
4
  tico/config/base.py,sha256=anwOiJFkUxUi7Cef573JgQcjk6S-FSi6O_TLjYASW-g,1244
5
5
  tico/config/factory.py,sha256=il0zqB6Lm5NX2LnG-TUhmiP9vVeZ_3TucJMorVZIodY,1324
@@ -50,7 +50,7 @@ tico/experimental/quantization/evaluation/executor/backend_executor.py,sha256=3k
50
50
  tico/experimental/quantization/evaluation/executor/circle_executor.py,sha256=eCCJ9wTwR0vUJ0oN7jxtQxZ9598GRw6P6KUxiuGsIIM,2685
51
51
  tico/experimental/quantization/evaluation/executor/triv24_executor.py,sha256=sUoXl6oOO2arAKaNjOBg7HiQja145_Jv6qgY7XtR7A8,5159
52
52
  tico/experimental/quantization/passes/__init__.py,sha256=IO6FP_xYbGy0dW0HL26GXD3ouxARaxCK7bz9dn4blPQ,26
53
- tico/experimental/quantization/passes/fold_quant_ops.py,sha256=OYUndHaSL3GiL8koIG9_pqavW-hghrs0kkpvounsh1g,3312
53
+ tico/experimental/quantization/passes/fold_quant_ops.py,sha256=cC5xuvqWqueKzLXUJi0pCk85vryImkhgnx-ee7G-tPI,4463
54
54
  tico/experimental/quantization/passes/insert_quantize_on_dtype_mismatch.py,sha256=AbNcI7rfIwHsQna_rFuwqFdOzFAU2lIB3sMK-vns8Dc,13072
55
55
  tico/experimental/quantization/passes/propagate_qparam_backward.py,sha256=TGtyW0Z2qOTgVIasBdGRgbwH31YYd6ek7OvLTmCV614,3118
56
56
  tico/experimental/quantization/passes/propagate_qparam_forward.py,sha256=RhUHGCR2RpBO5KYkQ7Z8U5u7HEwDq2wdKHLKAJCi-5c,5138
@@ -61,9 +61,9 @@ tico/interpreter/infer.py,sha256=vJ3b69ce9HrxNT0gFwbEhHpAyvVyuiunTgAeiqn5t64,435
61
61
  tico/interpreter/interpreter.py,sha256=tGbluCbrehTCqBu8mtGDNzby_ieJ2ry8_RH_eC0CQxk,3828
62
62
  tico/passes/__init__.py,sha256=IO6FP_xYbGy0dW0HL26GXD3ouxARaxCK7bz9dn4blPQ,26
63
63
  tico/passes/cast_aten_where_arg_type.py,sha256=ybtGj1L7_2zGyfb_G-_y1N1mRgKHVq6fBZc-9-fH9sA,7229
64
- tico/passes/cast_mixed_type_args.py,sha256=s1lAwYvJdYdkE11fK2n1faybPyA5CJtZkOkU46rhXXA,7590
64
+ tico/passes/cast_mixed_type_args.py,sha256=ArJpIPnQP1LPNaWIwee13Nbj749_awFKDO-pAYvdYvI,7618
65
65
  tico/passes/const_prop_pass.py,sha256=QOeR2u3fo9ZhWXRhfAUW1dTtuWgqgoqdDJoQ516UDbQ,11532
66
- tico/passes/convert_conv1d_to_conv2d.py,sha256=2AAs8q9BYuvMr0F1Mrua1rpGvwxOVIE10c798P5sFf8,5231
66
+ tico/passes/convert_conv1d_to_conv2d.py,sha256=7YljWJQBX5vBUMgGgRv8TvbJ9UpEL9hf4ZU3dNUhEZ8,5301
67
67
  tico/passes/convert_layout_op_to_reshape.py,sha256=sCAFjkmVtiKjvDQSAgnjNBHl3_hWXJZElGDXQiTH-7s,2963
68
68
  tico/passes/convert_repeat_to_expand_copy.py,sha256=JbtFTmWyfJS2SSd_higP1IEhQeh7wHdN5dmTbbiFVCs,3237
69
69
  tico/passes/convert_to_relu6.py,sha256=1BJpUwUb6Zli_1y3eyJQo7dg9B1xvZ7sYjMbvEQsFJM,6442
@@ -77,9 +77,9 @@ tico/passes/decompose_slice_scatter.py,sha256=xqMHKhW2595YoAeubKZ4jRhYW4TQ09EXPg
77
77
  tico/passes/extract_dtype_kwargs.py,sha256=ObpsaFlrTPYQw2hJ7UsC5CocyAtBkT_bMtzkMUqAyKc,4333
78
78
  tico/passes/fill_meta_val.py,sha256=Xbam6Aq90ZfWItZw1dgLIwH_q8RCiU5JodKNqkj-ink,1797
79
79
  tico/passes/fuse_leading_unsqueeze_reshape.py,sha256=88jwTP35yRyXOk9xdO6YW2OEfdKAws3KFRT16WQz0RI,4291
80
- tico/passes/fuse_redundant_reshape_to_mean.py,sha256=2SEZ0TfXsmUkuqUdNtS_mQzLd49su5TsQViCLMGL4f4,3691
80
+ tico/passes/fuse_redundant_reshape_to_mean.py,sha256=GhJS1ZKB6Ns4AhwcW3uUQ6q-0N-AzlD32B2EwusUJHg,3761
81
81
  tico/passes/legalize_causal_mask_value.py,sha256=xKdFwwMaSFCSQpSk8xISOAqFpZ1jIhgbBIqf7KTSGuk,4017
82
- tico/passes/legalize_predefined_layout_operators.py,sha256=oUwog9TGHT86MMy-T_ymTh5pQN0srSefiAA6CNiWVgA,15826
82
+ tico/passes/legalize_predefined_layout_operators.py,sha256=6jd_FmXX5rbBxqp3H5MQoCnL3vY3qoAdXaXkVdfXEjI,15902
83
83
  tico/passes/lower_pow2_to_mul.py,sha256=nfJXa9ZTZMiLg6ownSyvkM4KF2z9tZW34Q3CCWI_vmQ,2402
84
84
  tico/passes/lower_to_resize_nearest_neighbor.py,sha256=N6F56Of8Aiv-KIiYLHnh33WX72W60ZVQSBEYWHdYqNQ,9005
85
85
  tico/passes/lower_to_slice.py,sha256=0qAX3WzZdyMFDW4DiO9b5JFXd4rL1-0doBT6lJvaw_I,7260
@@ -89,7 +89,7 @@ tico/passes/remove_nop.py,sha256=Hf91p_EJAOC6DyWNthash0_UWtEcNc_M7znamQfYQ5Y,268
89
89
  tico/passes/remove_redundant_assert_nodes.py,sha256=IONd3xBy6I8tH6_Y1eN3_eCHH7WTC8soBgjXzOju9cQ,1612
90
90
  tico/passes/remove_redundant_expand.py,sha256=5SIqN7eIIcqF68tlrB31n1482jSBSBOgKb1wddLX6lw,2197
91
91
  tico/passes/remove_redundant_permute.py,sha256=98UsaZzFZdQzEEAR1pIzRisAf6hgfXLa88aayjalt3E,4292
92
- tico/passes/remove_redundant_reshape.py,sha256=inp5fMNXM675Rj29wmHn5xoPmOqbiDkgMmmsqguCeMk,16308
92
+ tico/passes/remove_redundant_reshape.py,sha256=ScLYTShXMXJBTzOByAEhX-qJe5pmu92pLsXv5mh7u5c,16454
93
93
  tico/passes/remove_redundant_slice.py,sha256=Iv7TbB39fktNb4eq0VdyZnwxL_VsKLJ90diMmaf3kZk,2087
94
94
  tico/passes/remove_redundant_to_copy.py,sha256=tKy4XKkO2l33fMxVPQ_iFkUeFvP15kbPvzPPhT_g0c8,3292
95
95
  tico/passes/restore_linear.py,sha256=xGJdNb-1CrkOKS9BnLbcblkZc6P2vVjKIi-7lRcs7Bk,4111
@@ -106,10 +106,10 @@ tico/serialize/operators/node_visitor.py,sha256=UYyCwXqSCeRyimThMShstHnt7vKM9tsu
106
106
  tico/serialize/operators/op_abs.py,sha256=Y-vy7rcqPT-qD3QS5R8zbApWWTPpjY6xuMMVnbIhYmQ,1827
107
107
  tico/serialize/operators/op_add.py,sha256=otm062DMHVAThWmOtSTZdPyP3P5-2cv5VL_UWBJeLms,2346
108
108
  tico/serialize/operators/op_alias_copy.py,sha256=Xu9OiILbGf8oddh8yTqovvLfgVs8XYV7Cg4n6CesWcg,2175
109
- tico/serialize/operators/op_any.py,sha256=QqAYby1WPd4l97vX-tBjAsOb_pVb1wPjj7SbWQNToCQ,5117
109
+ tico/serialize/operators/op_any.py,sha256=9oxP-8vS5R4oKX6KaePygzC4-jh8MVgbiS8Z5AWYOAw,5237
110
110
  tico/serialize/operators/op_arange_start_step.py,sha256=0T5lWwh3TfsFStmVv0v5qG03KENRDBmMix08RXQ4D-U,2132
111
111
  tico/serialize/operators/op_argmax.py,sha256=ARyGHlmWVmzwCct93V5x1-VyKqhxMOvV8GuM8yQWXdo,2290
112
- tico/serialize/operators/op_avg_pool2d.py,sha256=eVd5ngFSImAklvJFfBAaEUvAc-I60e43xCdLjd5zwYA,7522
112
+ tico/serialize/operators/op_avg_pool2d.py,sha256=vc7WCakGXtGFPV1ix5EJmboH23tQ-cSI36ePY3PHKI4,7544
113
113
  tico/serialize/operators/op_bmm.py,sha256=AELjHC9ISFPIzEEl5Kr1s4GSNLZElwZmVZJWkEyCEoA,2189
114
114
  tico/serialize/operators/op_cat.py,sha256=XDYOh0XAyrM0TlxVm6Sa0OFFGrKk7aSDcGXC-hYX4gs,2204
115
115
  tico/serialize/operators/op_clamp.py,sha256=ZRAsXLGsZqJEh4wXxESEpRJkRtUuJWTDgAem6lr9_5I,4298
@@ -143,7 +143,7 @@ tico/serialize/operators/op_logical_and.py,sha256=WhQ8knuq32BO-WhAqkOgpcUStPkjoP
143
143
  tico/serialize/operators/op_logical_not.py,sha256=ugrVcRqR3IvUUaiRVW5cArCYJbzmkcXp88QM846jCww,2129
144
144
  tico/serialize/operators/op_lt.py,sha256=_vA7dWpV9wVBxB7JL9pLQT9BsV91NGQBq_0auAtHK5Y,2080
145
145
  tico/serialize/operators/op_max_dim.py,sha256=nS_TZl5uq4uv1LwgBD9Wddyac4atKqBiIWKIyeXse2s,2519
146
- tico/serialize/operators/op_max_pool2d_with_indices.py,sha256=Gd16ebLyo1x_gSXCvq-cBJEQ9jLTRLTd2zBXO7p3DvY,5724
146
+ tico/serialize/operators/op_max_pool2d_with_indices.py,sha256=Vab8KV4w0i70P5XPdqItXEv_hLFjscVngypOltRvBV8,5746
147
147
  tico/serialize/operators/op_maximum.py,sha256=JjBr6gWEnuakLuk1_feotTHfIIm3s5YqWmqhUMpSPI0,1873
148
148
  tico/serialize/operators/op_mean.py,sha256=rVQZOxCJkHFY4kQBAS1HVK0HkcqxgkSy6zvEDLX_WYQ,2267
149
149
  tico/serialize/operators/op_minimum.py,sha256=fASjQVcTPCin02umQwFPdq2ss-Ve7S5A33J3QmmQ_wQ,1873
@@ -189,18 +189,18 @@ tico/utils/logging.py,sha256=IlbBWscsaHidI0dNqro1HEXAbIcbkR3BD5ukLy2m95k,1286
189
189
  tico/utils/model.py,sha256=Uqc92AnJXQ2pbvctS2z2F3Ku3yNrwXZ9O33hZVis7is,1250
190
190
  tico/utils/padding.py,sha256=GGO27VbaOvtaMYLDrSaKv7uxjeet566aMJD0PyYeMvQ,1484
191
191
  tico/utils/passes.py,sha256=kGmDe__5cPaO6i5EDAoXSVe6yXEoX9hAny4ROb3ZEmQ,2409
192
- tico/utils/register_custom_op.py,sha256=iRQvdqlBqrJxq_pNkvJyDIJD_SYtCUl88wwbbuvSwlk,22952
192
+ tico/utils/register_custom_op.py,sha256=qheG1WqtkUaG1SnHrrKQ7-fE4IZRETApCsfMkjDKcfs,23240
193
193
  tico/utils/serialize.py,sha256=AQXMBOLu-Kg2Rn-qbqsAtHndjZAZIavlKA0QFgJREHM,1420
194
194
  tico/utils/trace_decorators.py,sha256=ddLIiKQfSaQrxgF1kNpwjFTQnXENzeSfcr1kuAW4jGI,3221
195
195
  tico/utils/utils.py,sha256=fnbZ2RLH6-J-wqb32O4qsR1ce4BJU0wYNrk84QXa6_E,13158
196
- tico/utils/validate_args_kwargs.py,sha256=vp1GaGhOWqQBD4axMPaULy0tWxoIDTwEqEYoR5S7ph0,25244
196
+ tico/utils/validate_args_kwargs.py,sha256=ifzO4ikubDPU2iXRBPF8KeyubW23cjxBThOslLAcTrg,25368
197
197
  tico/utils/mx/__init__.py,sha256=IO6FP_xYbGy0dW0HL26GXD3ouxARaxCK7bz9dn4blPQ,26
198
198
  tico/utils/mx/elemwise_ops.py,sha256=V6glyAHsVR1joqpsgnNytatCD_ew92xNWZ19UFDoMTA,10281
199
199
  tico/utils/mx/formats.py,sha256=uzNWyu-1onUlwQfX5cZ6fZSUfHMRqorper7_T1k3jfk,3404
200
200
  tico/utils/mx/mx_ops.py,sha256=RcfUTYVi-wilGB2sC35OeARdwDqnixv7dG5iyZ-fQT8,8555
201
- tico-0.1.0.dev250619.dist-info/LICENSE,sha256=kp4JLII7bzRhPb0CPD5XTDZMh22BQ7h3k3B7t8TiSbw,12644
202
- tico-0.1.0.dev250619.dist-info/METADATA,sha256=Ms7oDZDD9txOcAycr9TUsJIGoC_B5FmXyF-q2AfJu58,8846
203
- tico-0.1.0.dev250619.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
204
- tico-0.1.0.dev250619.dist-info/entry_points.txt,sha256=kBKYSS_IYrSXmUYevmmepqIVPScq5vF8ulQRu3I_Zf0,59
205
- tico-0.1.0.dev250619.dist-info/top_level.txt,sha256=oqs7UPoNSKZEwqsX8B-KAWdQwfAa7i60pbxW_Jk7P3w,5
206
- tico-0.1.0.dev250619.dist-info/RECORD,,
201
+ tico-0.1.0.dev250623.dist-info/LICENSE,sha256=kp4JLII7bzRhPb0CPD5XTDZMh22BQ7h3k3B7t8TiSbw,12644
202
+ tico-0.1.0.dev250623.dist-info/METADATA,sha256=MtM7eJXlvpwfklWOfUefNC2IwQ2-YFkYUDGQRur0x6A,8846
203
+ tico-0.1.0.dev250623.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
204
+ tico-0.1.0.dev250623.dist-info/entry_points.txt,sha256=kBKYSS_IYrSXmUYevmmepqIVPScq5vF8ulQRu3I_Zf0,59
205
+ tico-0.1.0.dev250623.dist-info/top_level.txt,sha256=oqs7UPoNSKZEwqsX8B-KAWdQwfAa7i60pbxW_Jk7P3w,5
206
+ tico-0.1.0.dev250623.dist-info/RECORD,,