tico 0.1.0.dev250916__py3-none-any.whl → 0.1.0.dev250918__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.

Potentially problematic release.


This version of tico might be problematic. Click here for more details.

@@ -172,7 +172,7 @@ class ConvertToReLU6(PassBase):
172
172
  converter.convert(exported_program, node)
173
173
  modified = True
174
174
  logger.debug(f"{node.name} is replaced with ReLU6 operator")
175
- break
175
+ continue
176
176
 
177
177
  graph.eliminate_dead_code()
178
178
  graph.lint()
@@ -20,6 +20,7 @@ import torch
20
20
  from circle_schema import circle
21
21
  from torch.export.exported_program import ConstantArgument, ExportedProgram, InputKind
22
22
 
23
+ from tico.config import CompileConfigBase, get_default_config
23
24
  from tico.serialize.circle_mapping import to_circle_dtype, to_circle_shape
24
25
  from tico.serialize.operators import *
25
26
  from tico.serialize.circle_graph import CircleModel, CircleSubgraph
@@ -47,7 +48,9 @@ def _initialize_model() -> tuple[CircleModel, CircleSubgraph]:
47
48
  return model, graph
48
49
 
49
50
 
50
- def build_circle(ep: ExportedProgram) -> bytes:
51
+ def build_circle(
52
+ ep: ExportedProgram, config: CompileConfigBase = get_default_config()
53
+ ) -> bytes:
51
54
  """Convert ExportedProgram to Circle format.
52
55
 
53
56
  Args:
@@ -68,9 +71,13 @@ def build_circle(ep: ExportedProgram) -> bytes:
68
71
  for in_spec in ep.graph_signature.input_specs:
69
72
  if in_spec.kind != InputKind.USER_INPUT:
70
73
  continue
71
- # NoneType ConstantArgument is ignored.
72
- if isinstance(in_spec.arg, ConstantArgument) and in_spec.arg.value == None:
73
- continue
74
+ if isinstance(in_spec.arg, ConstantArgument):
75
+ # ConstantArgument is ignored when option is given
76
+ if config.get("remove_constant_input"):
77
+ continue
78
+ # NoneType ConstantArgument is ignored.
79
+ if in_spec.arg.value == None:
80
+ continue
74
81
  arg_name = in_spec.arg.name
75
82
  graph.add_input(arg_name)
76
83
  logger.debug(f"Registered input: {arg_name}")
@@ -20,7 +20,7 @@ if TYPE_CHECKING:
20
20
  import torch
21
21
  from circle_schema import circle
22
22
 
23
- from tico.serialize.circle_graph import CircleSubgraph, is_const
23
+ from tico.serialize.circle_graph import CircleSubgraph
24
24
  from tico.serialize.operators.hashable_opcode import OpCode
25
25
  from tico.serialize.operators.node_visitor import NodeVisitor, register_node_visitor
26
26
  from tico.serialize.operators.utils import create_builtin_operator, get_op_index
@@ -28,9 +28,9 @@ from tico.utils.validate_args_kwargs import MatmulArgs
28
28
 
29
29
 
30
30
  @register_node_visitor
31
- class MatmulDefaultVisitor(NodeVisitor):
31
+ class MatmulVisitor(NodeVisitor):
32
32
  """
33
- Convert matmul to equavalent BatchMatMul or FullyConnected with Transpose.
33
+ Convert matmul to Circle BatchMatMul
34
34
  """
35
35
 
36
36
  target: List[torch._ops.OpOverload] = [torch.ops.aten.mm.default]
@@ -38,131 +38,7 @@ class MatmulDefaultVisitor(NodeVisitor):
38
38
  def __init__(self, op_codes: Dict[OpCode, int], graph: CircleSubgraph):
39
39
  super().__init__(op_codes, graph)
40
40
 
41
- # NOTE: Matmul is equivalent to Batch MatMul (batch=1)
42
- def define_bmm_node(self, inputs, outputs) -> circle.Operator.OperatorT:
43
- def set_bmm_option(operator):
44
- operator.builtinOptionsType = (
45
- circle.BuiltinOptions.BuiltinOptions.BatchMatMulOptions
46
- )
47
- option = circle.BatchMatMulOptions.BatchMatMulOptionsT()
48
- option.adjointLhs, option.adjointRhs = False, False
49
- option.asymmetricQuantizeInputs = False
50
- operator.builtinOptions = option
51
-
52
- op_index = get_op_index(
53
- circle.BuiltinOperator.BuiltinOperator.BATCH_MATMUL, self._op_codes
54
- )
55
- operator = create_builtin_operator(self.graph, op_index, inputs, outputs)
56
- set_bmm_option(operator)
57
-
58
- return operator
59
-
60
- def define_transpose_node(self, inputs, outputs) -> circle.Operator.OperatorT:
61
- def set_transpose_option(operator):
62
- operator.builtinOptionsType = (
63
- circle.BuiltinOptions.BuiltinOptions.TransposeOptions
64
- )
65
- option = circle.TransposeOptions.TransposeOptionsT()
66
- operator.builtinOptions = option
67
-
68
- transpose_op_index = get_op_index(
69
- circle.BuiltinOperator.BuiltinOperator.TRANSPOSE, self._op_codes
70
- )
71
- operator = create_builtin_operator(
72
- self.graph, transpose_op_index, inputs, outputs
73
- )
74
- set_transpose_option(operator)
75
- return operator
76
-
77
- def define_fc_node(self, inputs, outputs) -> circle.Operator.OperatorT:
78
- def set_fc_option(operator):
79
- operator.builtinOptionsType = (
80
- circle.BuiltinOptions.BuiltinOptions.FullyConnectedOptions
81
- )
82
- option = circle.FullyConnectedOptions.FullyConnectedOptionsT()
83
-
84
- option.fusedActivationFunction = (
85
- circle.ActivationFunctionType.ActivationFunctionType.NONE
86
- )
87
- option.weightsFormat = (
88
- circle.FullyConnectedOptionsWeightsFormat.FullyConnectedOptionsWeightsFormat.DEFAULT
89
- )
90
- option.keepNumDims = False
91
- option.asymmetricQuantizeInputs = False
92
- option.quantizedBiasType = circle.TensorType.TensorType.FLOAT32
93
-
94
- operator.builtinOptions = option
95
-
96
- fc_op_index = get_op_index(
97
- circle.BuiltinOperator.BuiltinOperator.FULLY_CONNECTED, self._op_codes
98
- )
99
- operator = create_builtin_operator(self.graph, fc_op_index, inputs, outputs)
100
- set_fc_option(operator)
101
- return operator
102
-
103
- """
104
- Define FullyConnnected with Tranpose operator.
105
- Note that those sets of operators are equivalent.
106
- (1) Matmul
107
- matmul( lhs[H, K], rhs[K, W'] ) -> output(H, W')
108
-
109
- (2) Transpose + FullyConneccted
110
- transpose( rhs[K, W'] ) -> trs_output[W', K]
111
- fullyconnected( lhs[H, K], trs_output[W', K] ) -> output(H, W')
112
- """
113
-
114
- def define_fc_with_transpose(
115
- self, node, inputs, outputs
116
- ) -> circle.Operator.OperatorT:
117
- lhs, rhs = inputs
118
-
119
- # get transpose shape
120
- rhs_tid: int = self.graph.get_tid_registered(rhs)
121
- rhs_tensor: circle.Tensor.TensorT = self.graph.tensors[rhs_tid]
122
- rhs_name: str = rhs.name
123
- rhs_type: int = rhs_tensor.type
124
- rhs_shape: List[int] = rhs_tensor.shape
125
- assert len(rhs_shape) == 2, len(rhs_shape)
126
- rhs_shape_transpose = [rhs_shape[1], rhs_shape[0]]
127
-
128
- # create transpose output tensor
129
- trs_output = self.graph.add_tensor_from_scratch(
130
- prefix=f"{rhs_name}_transposed_output",
131
- shape=rhs_shape_transpose,
132
- shape_signature=None,
133
- dtype=rhs_type,
134
- source_node=node,
135
- )
136
- trs_perm = self.graph.add_const_tensor(data=[1, 0], source_node=node)
137
- trs_operator = self.define_transpose_node([rhs, trs_perm], [trs_output])
138
- self.graph.add_operator(trs_operator)
139
-
140
- # define fc node
141
- fc_input = lhs
142
- fc_weight = trs_output
143
- fc_shape = [fc_weight.shape[0]]
144
- fc_bias = self.graph.add_const_tensor(
145
- data=[0.0] * fc_shape[0], source_node=node
146
- )
147
-
148
- operator = self.define_fc_node([fc_input, fc_weight, fc_bias], outputs)
149
-
150
- return operator
151
-
152
- def define_node(
153
- self, node: torch.fx.Node, prior_latency=True
154
- ) -> circle.Operator.OperatorT:
155
- """
156
- NOTE: Possibility of accuracy-latency trade-off
157
- From ONE compiler's perspective:
158
- - BMM uses per-tensor quantization for both rhs and lhs.
159
- - FC uses per-channel quantization for weight and per-tensor for input.
160
- Thus, FC is better in terms of accuracy.
161
- FC necessarily involves an additional transpose operation to be identical with mm.
162
- If transposed operand is const, it can be optimized by constant folding.
163
- Thus, convert FC only if tranpose can be folded.
164
- TODO set prior_latency outside
165
- """
41
+ def define_node(self, node: torch.fx.Node) -> circle.Operator.OperatorT:
166
42
  args = MatmulArgs(*node.args, **node.kwargs) # type: ignore[arg-type]
167
43
  input = args.input
168
44
  other = args.other
@@ -170,9 +46,16 @@ class MatmulDefaultVisitor(NodeVisitor):
170
46
  inputs = [input, other]
171
47
  outputs = [node]
172
48
 
173
- if not is_const(other) and prior_latency:
174
- operator = self.define_bmm_node(inputs, outputs)
175
- else:
176
- operator = self.define_fc_with_transpose(node, inputs, outputs)
49
+ op_index = get_op_index(
50
+ circle.BuiltinOperator.BuiltinOperator.BATCH_MATMUL, self._op_codes
51
+ )
52
+ operator = create_builtin_operator(self.graph, op_index, inputs, outputs)
53
+ operator.builtinOptionsType = (
54
+ circle.BuiltinOptions.BuiltinOptions.BatchMatMulOptions
55
+ )
56
+ option = circle.BatchMatMulOptions.BatchMatMulOptionsT()
57
+ option.adjointLhs, option.adjointRhs = False, False
58
+ option.asymmetricQuantizeInputs = False
59
+ operator.builtinOptions = option
177
60
 
178
61
  return operator
tico/utils/convert.py CHANGED
@@ -40,6 +40,7 @@ from tico.passes.cast_mixed_type_args import CastMixedTypeArgs
40
40
  from tico.passes.const_prop_pass import ConstPropPass
41
41
  from tico.passes.convert_conv1d_to_conv2d import ConvertConv1dToConv2d
42
42
  from tico.passes.convert_layout_op_to_reshape import ConvertLayoutOpToReshape
43
+ from tico.passes.convert_matmul_to_linear import ConvertMatmulToLinear
43
44
  from tico.passes.convert_repeat_to_expand_copy import ConvertRepeatToExpandCopy
44
45
  from tico.passes.convert_to_relu6 import ConvertToReLU6
45
46
  from tico.passes.decompose_addmm import DecomposeAddmm
@@ -249,6 +250,10 @@ def convert_exported_module_to_circle(
249
250
  ConstPropPass(),
250
251
  SegmentIndexSelectConst(),
251
252
  LegalizeCausalMaskValue(enabled=config.get("legalize_causal_mask_value")),
253
+ ConvertMatmulToLinear(
254
+ enable_lhs_const=config.get("convert_lhs_const_mm_to_fc"),
255
+ enable_rhs_const=config.get("convert_rhs_const_mm_to_fc"),
256
+ ),
252
257
  LowerToResizeNearestNeighbor(),
253
258
  LegalizePreDefinedLayoutOperators(),
254
259
  LowerPow2ToMul(),
@@ -287,7 +292,7 @@ def convert_exported_module_to_circle(
287
292
 
288
293
  check_unsupported_target(exported_program)
289
294
  check_training_ops(exported_program)
290
- circle_program = build_circle(exported_program)
295
+ circle_program = build_circle(exported_program, config)
291
296
 
292
297
  return circle_program
293
298
 
tico/utils/signature.py CHANGED
@@ -141,22 +141,21 @@ class ModelInputSpec:
141
141
  args = flatten_and_convert_args(args)
142
142
  kwargs = flatten_and_convert_kwargs(kwargs)
143
143
 
144
+ arg_num = len(args) + len(kwargs)
145
+ m_input_num = len(self.names)
146
+ if arg_num != m_input_num:
147
+ raise ValueError(
148
+ f"Mismatch: number of model inputs and number of passed arguments are not the same: inputs({m_input_num}) != passed({arg_num}), input spec: {self.names}"
149
+ )
150
+
144
151
  # 1. positional arguments
145
152
  for i, val in enumerate(args):
146
- if i >= len(self.names):
147
- raise ValueError(f"Too many positional arguments ({i+1}).")
148
153
  name = self.names[i]
149
- if name in kwargs:
150
- raise TypeError(
151
- f"Got multiple values for argument '{name}' (positional and keyword)."
152
- )
153
154
  inputs.append(val)
154
155
 
155
156
  # 2. keyword arguments
156
157
  for idx in range(len(args), len(self.names)):
157
158
  name = self.names[idx]
158
- if name not in kwargs:
159
- raise ValueError(f"Missing argument for input '{name}'.")
160
159
  inputs.append(kwargs[name])
161
160
 
162
161
  if check:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tico
3
- Version: 0.1.0.dev250916
3
+ Version: 0.1.0.dev250918
4
4
  Summary: Convert exported Torch module to circle
5
5
  Home-page: UNKNOWN
6
6
  License: UNKNOWN
@@ -1,9 +1,9 @@
1
- tico/__init__.py,sha256=PvVsxsuaK7aL4ryXd4by1saCx7AR6cNLxwDPRwZ8UGk,1883
1
+ tico/__init__.py,sha256=JNMzsaV9H4CEIXt4eIxlIrmnnDsgxl7TRgdXrqyRZ94,1883
2
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=q5xMqGxTUZs4mFqt5c7i_y9U00fYgdMGl9nUqIVMlCo,1248
5
5
  tico/config/factory.py,sha256=il0zqB6Lm5NX2LnG-TUhmiP9vVeZ_3TucJMorVZIodY,1324
6
- tico/config/v1.py,sha256=O1jzpUBDwoWpLohEpI08pJNwVB-yz3ufPrQm2_XWq4Y,1108
6
+ tico/config/v1.py,sha256=AVgOck-HxR1R1FZPVjtN5J82hPLJvUxwzbnyWXIQZWE,1237
7
7
  tico/experimental/__init__.py,sha256=IO6FP_xYbGy0dW0HL26GXD3ouxARaxCK7bz9dn4blPQ,26
8
8
  tico/experimental/quantization/__init__.py,sha256=IaJPZegVJp0P3luutBo907Kp5sOJensE1Mm-XBG_jBs,122
9
9
  tico/experimental/quantization/config.py,sha256=nMepa_H471t7f3bKMvR8cZUZgruy_8kdb147rBkTWCQ,2004
@@ -62,13 +62,13 @@ tico/experimental/quantization/ptq/mode.py,sha256=lT-T8vIv8YWcwrjT7xXVhOw1g7aoAd
62
62
  tico/experimental/quantization/ptq/qscheme.py,sha256=uwhv7bCxOOXB3I-IKlRyr_u4eXOq48uIqGy4TLDqGxY,1301
63
63
  tico/experimental/quantization/ptq/quant_config.py,sha256=nm7570Y1X2mOT_8s27ilWid04otor6cVTi9GwgAEaKc,4300
64
64
  tico/experimental/quantization/ptq/examples/__init__.py,sha256=IO6FP_xYbGy0dW0HL26GXD3ouxARaxCK7bz9dn4blPQ,26
65
- tico/experimental/quantization/ptq/examples/compare_ppl.py,sha256=QWUuO50lITnooYqEe57VV6mvIHKWZMB_TOGvtZ8C8qQ,8238
66
- tico/experimental/quantization/ptq/examples/debug_quant_outputs.py,sha256=astXzx-maq1W4gKvX2QaGmD2Tpmjunv4JqDYVk9eZRQ,5177
65
+ tico/experimental/quantization/ptq/examples/compare_ppl.py,sha256=eVQn8-M24QkoCy_FCBQLSlUrnyqUDSkvUFpUpEdpMx4,8265
66
+ tico/experimental/quantization/ptq/examples/debug_quant_outputs.py,sha256=Hpx_jj46WISwdVp33NrIadizVAzf1nFTXuAcHsKEQuQ,8179
67
67
  tico/experimental/quantization/ptq/examples/quantize_linear.py,sha256=8zq-ZJDYgam0xQ-PbC6Xb1I7W1mv0Wi-b--IP2wwXtw,4539
68
68
  tico/experimental/quantization/ptq/examples/quantize_llama_attn.py,sha256=cVWUSSzaZWFp5QZkNkrlpHU3kXyP84QtnZbahVml_yQ,4329
69
69
  tico/experimental/quantization/ptq/examples/quantize_llama_decoder_layer.py,sha256=mBWrjkyEovYQsPC4Rrsri6Pm1rlFmDb3NiP0DQQhFyM,5751
70
70
  tico/experimental/quantization/ptq/examples/quantize_llama_mlp.py,sha256=N1qZQgt1S-xZrdv-PW7OfXEcv0gsO2q9faOF4aD-zKo,4147
71
- tico/experimental/quantization/ptq/examples/quantize_with_gptq.py,sha256=w21Qao5_6SnWMuxmnZbZOoqaLQOuSnK52mHin4aedtA,6979
71
+ tico/experimental/quantization/ptq/examples/quantize_with_gptq.py,sha256=vYGI9yygQqdpl7mRtV9b-xvtE0vscq3_IKy92H0MLkE,10433
72
72
  tico/experimental/quantization/ptq/observers/__init__.py,sha256=IO6FP_xYbGy0dW0HL26GXD3ouxARaxCK7bz9dn4blPQ,26
73
73
  tico/experimental/quantization/ptq/observers/affine_base.py,sha256=e2Eba64nrxKQyE4F_WJ7WTSsk3xe6bkdGUKaoLFWGFw,4638
74
74
  tico/experimental/quantization/ptq/observers/base.py,sha256=Wons1MzpqK1mfcy-ppl-B2Dum0edXg2dWW2Lw3V18tw,3280
@@ -84,8 +84,9 @@ tico/experimental/quantization/ptq/wrappers/__init__.py,sha256=IO6FP_xYbGy0dW0HL
84
84
  tico/experimental/quantization/ptq/wrappers/ptq_wrapper.py,sha256=F9sK_DiRaXiGNHULcwIbs5EUtHz6ZJ7N4r5CWTTfhsM,2442
85
85
  tico/experimental/quantization/ptq/wrappers/quant_elementwise.py,sha256=LhEoobfvto6zKrBOKL4gmxfFFc31jHzyQV_zfps-iQM,3604
86
86
  tico/experimental/quantization/ptq/wrappers/quant_module_base.py,sha256=vkcDos_knGSS29rIZuEIWkAJLHrENbGz8nCH2-iara8,5969
87
- tico/experimental/quantization/ptq/wrappers/registry.py,sha256=GlVBPWPAnLRqTtemu_YOEX9WisF1eN6Mud7y1zzvpW0,5092
87
+ tico/experimental/quantization/ptq/wrappers/registry.py,sha256=OVO5nev6J8Br9zsIX-Ut7ZgWzA9f_jk0Np9bGioXgQM,5171
88
88
  tico/experimental/quantization/ptq/wrappers/fairseq/__init__.py,sha256=Mc8FLd9DusyB_IT1vk1OYrRkngOYnYd05IvtA9ORVQc,160
89
+ tico/experimental/quantization/ptq/wrappers/fairseq/quant_decoder_layer.py,sha256=JT79shxOhDtRFgm8jrrN6HKvyVotiytLjMjAxX-Cztg,20416
89
90
  tico/experimental/quantization/ptq/wrappers/fairseq/quant_encoder.py,sha256=r9DPUAbL2KRJ8zpMJ39Y9n6Oe79nte-mFcdjG2qEP-w,13809
90
91
  tico/experimental/quantization/ptq/wrappers/fairseq/quant_encoder_layer.py,sha256=aGr80Ku75j2H-UZ0elEa0mOQEyaAs2YJ4WJCN0lonn0,6412
91
92
  tico/experimental/quantization/ptq/wrappers/fairseq/quant_mha.py,sha256=HsigmOLeacLXc46QNeFqwQ0DwKQhNrtWTKEtLJoqXoc,15562
@@ -107,8 +108,9 @@ tico/passes/cast_mixed_type_args.py,sha256=Wd3sCDKJZwdb8GiMWKljm8X5CLFRd8eCz-dmW
107
108
  tico/passes/const_prop_pass.py,sha256=hDxGgJNiRjsgOArdaoeAOcOOA-nKBvA1W1zcMZQA5yg,11531
108
109
  tico/passes/convert_conv1d_to_conv2d.py,sha256=ktS3h158y9rg1sQiW8BZZbflV_dk_UdjBPQnuiOKyzg,5303
109
110
  tico/passes/convert_layout_op_to_reshape.py,sha256=sCAFjkmVtiKjvDQSAgnjNBHl3_hWXJZElGDXQiTH-7s,2963
111
+ tico/passes/convert_matmul_to_linear.py,sha256=Y_Me8YqrNumfMrB08WT4wwAoKIfKNak5y8Y10ekWe5s,6611
110
112
  tico/passes/convert_repeat_to_expand_copy.py,sha256=JbtFTmWyfJS2SSd_higP1IEhQeh7wHdN5dmTbbiFVCs,3237
111
- tico/passes/convert_to_relu6.py,sha256=1BJpUwUb6Zli_1y3eyJQo7dg9B1xvZ7sYjMbvEQsFJM,6442
113
+ tico/passes/convert_to_relu6.py,sha256=9B6OLyF72tMvD-ugV7aBx6l1szwERufNBUaX34pkZ4c,6445
112
114
  tico/passes/decompose_addmm.py,sha256=KjnpZjSuA0uvNmKaTN_EMwobcOi3CAB81buORzTDxro,3979
113
115
  tico/passes/decompose_batch_norm.py,sha256=06LAxhSmpTxFZJmUelwB3I_GipNWrLoM7PfM6ZkxOZY,6512
114
116
  tico/passes/decompose_fake_quantize.py,sha256=736srs8SM8K_mLR0WG10LVMMLRkYkBM9OF0k1GCkAW0,5218
@@ -139,7 +141,7 @@ tico/passes/segment_index_select.py,sha256=VVCKNLtYRkr9n5lGnlzEuQsQ0WVxEYXGchFrD
139
141
  tico/serialize/__init__.py,sha256=IO6FP_xYbGy0dW0HL26GXD3ouxARaxCK7bz9dn4blPQ,26
140
142
  tico/serialize/circle_graph.py,sha256=qvyul_HULoz7B_6RFKQ8s9RjEvMgPq-ynMVkZe8aqE4,12034
141
143
  tico/serialize/circle_mapping.py,sha256=c__AIHPi23lPugNJFolgMAKrw8j7gEeMaUQ1LAMSFnY,8542
142
- tico/serialize/circle_serializer.py,sha256=BGK9tltKkoL1h4rcrJUgDJIGlHst7aF3cZAKJk_GPWc,10950
144
+ tico/serialize/circle_serializer.py,sha256=tw2xwm8tRjaFzZdaaS8Fa8Jfqz0r7Gn8L6D66m0QA0g,11228
143
145
  tico/serialize/pack.py,sha256=5HZ9kX3x6C6CyT_FWS6FRmvx_P7Dx21orjUNQxJ2xlo,1297
144
146
  tico/serialize/quant_param.py,sha256=6nbGKdqwMI9Cx9BLXJ9A9JU4qb770S8vTM1vCZRX3Eo,1342
145
147
  tico/serialize/operators/__init__.py,sha256=LIvXsNnN4yUCS2CGNQ5XW8p8oXDTV_WHWuOEAw1t6WY,990
@@ -190,7 +192,7 @@ tico/serialize/operators/op_max_pool2d_with_indices.py,sha256=i4iKZ262ytDKUt7bG9
190
192
  tico/serialize/operators/op_maximum.py,sha256=JjBr6gWEnuakLuk1_feotTHfIIm3s5YqWmqhUMpSPI0,1873
191
193
  tico/serialize/operators/op_mean.py,sha256=rVQZOxCJkHFY4kQBAS1HVK0HkcqxgkSy6zvEDLX_WYQ,2267
192
194
  tico/serialize/operators/op_minimum.py,sha256=fASjQVcTPCin02umQwFPdq2ss-Ve7S5A33J3QmmQ_wQ,1873
193
- tico/serialize/operators/op_mm.py,sha256=XcH15gjbP5aAl9rBKFQsVvN2GE4127zNH6_0v81_ExA,6855
195
+ tico/serialize/operators/op_mm.py,sha256=VJJRLLYn9zAMcR2rsb86o809edyRJ7CW31waAL0ZXeI,2244
194
196
  tico/serialize/operators/op_mul.py,sha256=si_VdYNyFbULb50SnXHOINh0dZQ2PhRB6Fzl54ZBj5Y,3049
195
197
  tico/serialize/operators/op_ne.py,sha256=xa2WJL2tYksxw7fIJic_D9ltLEseyCII8HpR32Oq8Do,1900
196
198
  tico/serialize/operators/op_neg.py,sha256=fkI3ExyD3QF-qtxBcXqQutPNDbNL8g7lZYE7CyD2wLk,2046
@@ -228,7 +230,7 @@ tico/serialize/operators/utils.py,sha256=lXGpEJW1h8U_-gfc6EWjvvSiq3yJ9P-v1v3EMRT
228
230
  tico/serialize/operators/adapters/__init__.py,sha256=IO6FP_xYbGy0dW0HL26GXD3ouxARaxCK7bz9dn4blPQ,26
229
231
  tico/serialize/operators/adapters/llama_rmsnorm.py,sha256=6t3dhfNpR03eIjsmhymF2JKd6lCf7PvInqMf77c_BOE,1139
230
232
  tico/utils/__init__.py,sha256=IO6FP_xYbGy0dW0HL26GXD3ouxARaxCK7bz9dn4blPQ,26
231
- tico/utils/convert.py,sha256=GgZwZtiqFzTdszfUQO0vcX39lKjs97gYwZ-Tiw_4Bbo,13222
233
+ tico/utils/convert.py,sha256=bgk-a_gdRrrcDFFQHS_ElPdzORmfAZAgNendfzEpHOk,13501
232
234
  tico/utils/define.py,sha256=Ypgp7YffM4pgPl4Zh6TmogSn1OxGBMRw_e09qYGflZk,1467
233
235
  tico/utils/diff_graph.py,sha256=_eDGGPDPYQD4b--MXX0DLoVgSt_wLfNPt47UlolLLR4,5272
234
236
  tico/utils/dtype.py,sha256=L5Qb7qgbt0eQ5frUTvHYrRtTJb1dg4-JNEopcxCNg1U,1389
@@ -243,7 +245,7 @@ tico/utils/pytree_utils.py,sha256=jrk3N6X6LiUnBCX_gM1K9nywbVAJBVnszlTAgeIeDUc,52
243
245
  tico/utils/record_input.py,sha256=QN-8D71G_WAX3QQQ5CIwbEfFJZTQ3CvL4wCMiVddua4,3894
244
246
  tico/utils/register_custom_op.py,sha256=895SKZeXQzolK-mPG38cQC37Be76xUV_Ujw1k1ts9_w,28218
245
247
  tico/utils/serialize.py,sha256=mEuusEzi82WFsz3AkowgWwxSLeo50JDxyOj6yYDQhEI,1914
246
- tico/utils/signature.py,sha256=R2GV0alRpXEbZISqPKyxCUWbgDcsrQ2ovbVG3737IzA,9595
248
+ tico/utils/signature.py,sha256=3OOwyVJzfcGcgC0LiVmOcUIzfqSk27qoNHhkoCI7zPY,9530
247
249
  tico/utils/torch_compat.py,sha256=oc6PztVsXdHcQ3iaVR90wLLxrGaj6zFHWZ8K9rRS6q8,1795
248
250
  tico/utils/trace_decorators.py,sha256=ddLIiKQfSaQrxgF1kNpwjFTQnXENzeSfcr1kuAW4jGI,3221
249
251
  tico/utils/utils.py,sha256=aySftYnNTsqVAMcGs_3uX3-hz577a2cj4p1aVV-1XeQ,12747
@@ -252,9 +254,9 @@ tico/utils/mx/__init__.py,sha256=IO6FP_xYbGy0dW0HL26GXD3ouxARaxCK7bz9dn4blPQ,26
252
254
  tico/utils/mx/elemwise_ops.py,sha256=V6glyAHsVR1joqpsgnNytatCD_ew92xNWZ19UFDoMTA,10281
253
255
  tico/utils/mx/formats.py,sha256=uzNWyu-1onUlwQfX5cZ6fZSUfHMRqorper7_T1k3jfk,3404
254
256
  tico/utils/mx/mx_ops.py,sha256=RcfUTYVi-wilGB2sC35OeARdwDqnixv7dG5iyZ-fQT8,8555
255
- tico-0.1.0.dev250916.dist-info/LICENSE,sha256=kp4JLII7bzRhPb0CPD5XTDZMh22BQ7h3k3B7t8TiSbw,12644
256
- tico-0.1.0.dev250916.dist-info/METADATA,sha256=8di0pVqnJI1jFj0CpDL9e0cDDIpONXEhk6EE_sI8esI,8450
257
- tico-0.1.0.dev250916.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
258
- tico-0.1.0.dev250916.dist-info/entry_points.txt,sha256=kBKYSS_IYrSXmUYevmmepqIVPScq5vF8ulQRu3I_Zf0,59
259
- tico-0.1.0.dev250916.dist-info/top_level.txt,sha256=oqs7UPoNSKZEwqsX8B-KAWdQwfAa7i60pbxW_Jk7P3w,5
260
- tico-0.1.0.dev250916.dist-info/RECORD,,
257
+ tico-0.1.0.dev250918.dist-info/LICENSE,sha256=kp4JLII7bzRhPb0CPD5XTDZMh22BQ7h3k3B7t8TiSbw,12644
258
+ tico-0.1.0.dev250918.dist-info/METADATA,sha256=wHvY5NahKtSOlVcG2pYhpn4AygYru60vpG_J4t3YGmc,8450
259
+ tico-0.1.0.dev250918.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
260
+ tico-0.1.0.dev250918.dist-info/entry_points.txt,sha256=kBKYSS_IYrSXmUYevmmepqIVPScq5vF8ulQRu3I_Zf0,59
261
+ tico-0.1.0.dev250918.dist-info/top_level.txt,sha256=oqs7UPoNSKZEwqsX8B-KAWdQwfAa7i60pbxW_Jk7P3w,5
262
+ tico-0.1.0.dev250918.dist-info/RECORD,,