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 +1 -1
- tico/experimental/quantization/passes/fold_quant_ops.py +30 -3
- tico/passes/cast_mixed_type_args.py +1 -0
- tico/passes/convert_conv1d_to_conv2d.py +2 -0
- tico/passes/fuse_redundant_reshape_to_mean.py +2 -0
- tico/passes/legalize_predefined_layout_operators.py +2 -0
- tico/passes/remove_redundant_reshape.py +4 -0
- tico/pt2_to_circle.py +5 -1
- tico/serialize/operators/op_any.py +6 -1
- tico/serialize/operators/op_avg_pool2d.py +1 -0
- tico/serialize/operators/op_max_pool2d_with_indices.py +1 -0
- tico/utils/register_custom_op.py +8 -4
- tico/utils/validate_args_kwargs.py +4 -2
- {tico-0.1.0.dev250619.dist-info → tico-0.1.0.dev250623.dist-info}/METADATA +1 -1
- {tico-0.1.0.dev250619.dist-info → tico-0.1.0.dev250623.dist-info}/RECORD +19 -19
- {tico-0.1.0.dev250619.dist-info → tico-0.1.0.dev250623.dist-info}/LICENSE +0 -0
- {tico-0.1.0.dev250619.dist-info → tico-0.1.0.dev250623.dist-info}/WHEEL +0 -0
- {tico-0.1.0.dev250619.dist-info → tico-0.1.0.dev250623.dist-info}/entry_points.txt +0 -0
- {tico-0.1.0.dev250619.dist-info → tico-0.1.0.dev250623.dist-info}/top_level.txt +0 -0
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.
|
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
|
-
|
89
|
-
|
90
|
-
|
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 =
|
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 = [
|
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
|
tico/utils/register_custom_op.py
CHANGED
@@ -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] =
|
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] =
|
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,5 +1,5 @@
|
|
1
|
-
tico/__init__.py,sha256=
|
2
|
-
tico/pt2_to_circle.py,sha256=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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.
|
202
|
-
tico-0.1.0.
|
203
|
-
tico-0.1.0.
|
204
|
-
tico-0.1.0.
|
205
|
-
tico-0.1.0.
|
206
|
-
tico-0.1.0.
|
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,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|