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.
- tico/__init__.py +1 -1
- tico/config/v1.py +3 -0
- tico/experimental/quantization/ptq/examples/compare_ppl.py +4 -2
- tico/experimental/quantization/ptq/examples/debug_quant_outputs.py +189 -79
- tico/experimental/quantization/ptq/examples/quantize_with_gptq.py +190 -69
- tico/experimental/quantization/ptq/wrappers/fairseq/quant_decoder_layer.py +494 -0
- tico/experimental/quantization/ptq/wrappers/registry.py +1 -0
- tico/passes/convert_matmul_to_linear.py +200 -0
- tico/passes/convert_to_relu6.py +1 -1
- tico/serialize/circle_serializer.py +11 -4
- tico/serialize/operators/op_mm.py +15 -132
- tico/utils/convert.py +6 -1
- tico/utils/signature.py +7 -8
- {tico-0.1.0.dev250916.dist-info → tico-0.1.0.dev250918.dist-info}/METADATA +1 -1
- {tico-0.1.0.dev250916.dist-info → tico-0.1.0.dev250918.dist-info}/RECORD +19 -17
- {tico-0.1.0.dev250916.dist-info → tico-0.1.0.dev250918.dist-info}/LICENSE +0 -0
- {tico-0.1.0.dev250916.dist-info → tico-0.1.0.dev250918.dist-info}/WHEEL +0 -0
- {tico-0.1.0.dev250916.dist-info → tico-0.1.0.dev250918.dist-info}/entry_points.txt +0 -0
- {tico-0.1.0.dev250916.dist-info → tico-0.1.0.dev250918.dist-info}/top_level.txt +0 -0
tico/passes/convert_to_relu6.py
CHANGED
|
@@ -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(
|
|
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
|
-
|
|
72
|
-
|
|
73
|
-
|
|
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
|
|
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
|
|
31
|
+
class MatmulVisitor(NodeVisitor):
|
|
32
32
|
"""
|
|
33
|
-
Convert matmul to
|
|
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
|
-
|
|
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
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
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,9 +1,9 @@
|
|
|
1
|
-
tico/__init__.py,sha256=
|
|
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=
|
|
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=
|
|
66
|
-
tico/experimental/quantization/ptq/examples/debug_quant_outputs.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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.
|
|
256
|
-
tico-0.1.0.
|
|
257
|
-
tico-0.1.0.
|
|
258
|
-
tico-0.1.0.
|
|
259
|
-
tico-0.1.0.
|
|
260
|
-
tico-0.1.0.
|
|
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,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|