ai-edge-torch-nightly 0.3.0.dev20250122__py3-none-any.whl → 0.3.0.dev20250124__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
ai_edge_torch/_config.py CHANGED
@@ -65,5 +65,14 @@ class _Config:
65
65
  def enable_group_norm_composite(self, value: bool):
66
66
  os.environ["ENABLE_GROUP_NORM_COMPOSITE"] = "y" if value else "n"
67
67
 
68
+ @property
69
+ def layout_optimize_partitioner(self) -> str:
70
+ """The algorithm to use for layout optimization."""
71
+ return os.environ.get("AIEDGETORCH_LAYOUT_OPTIMIZE_PARTITIONER", "DEFAULT")
72
+
73
+ @layout_optimize_partitioner.setter
74
+ def layout_optimize_partitioner(self, value: str):
75
+ os.environ["AIEDGETORCH_LAYOUT_OPTIMIZE_PARTITIONER"] = str(value).upper()
76
+
68
77
 
69
78
  config = _Config()
@@ -201,8 +201,14 @@ def _aten_group_norm_checker(node):
201
201
  return NHWCable(can_be=can_be, must_be=must_be)
202
202
 
203
203
 
204
- @nhwcable_node_checkers.register(aten.native_group_norm)
204
+ @nhwcable_node_checkers.register(aten.native_group_norm.default)
205
205
  def _aten_native_group_norm_checker(node):
206
+ # aten.group_norm is removed from the decomp table, so aten.native_group_norm
207
+ # should never exist in the graph. However, torch 2.5.1 could ignore the
208
+ # decomp table updates, so still add this native_group_norm checker and
209
+ # rewriter to be safe.
210
+ # The checker and rewriter are the same as the ones for aten.group_norm.
211
+
206
212
  val = node.meta.get("val")
207
213
  if (
208
214
  not isinstance(val, (list, tuple))
@@ -210,13 +216,10 @@ def _aten_native_group_norm_checker(node):
210
216
  or not hasattr(val[0], "shape")
211
217
  ):
212
218
  return NHWCable(can_be=False, must_be=False)
213
- if len(node.args) >= 3 and (
214
- node.args[1] is not None or node.args[2] is not None
215
- ):
216
- # Disable NHWC rewriter due to precision issue with weight and bias.
217
- # TODO(b/354780253): Re-enable NHWC rewriter with proper lowering.
218
- return NHWCable(can_be=False, must_be=False)
219
- return NHWCable(can_be=len(val[0].shape) == 4, must_be=False)
219
+
220
+ can_be = len(val[0].shape) == 4
221
+ must_be = can_be and ai_edge_torch.config.enable_group_norm_composite
222
+ return NHWCable(can_be=can_be, must_be=must_be)
220
223
 
221
224
 
222
225
  # ==== Ops must be NCHW
@@ -391,34 +391,32 @@ def _aten_native_group_norm(node):
391
391
  eps: float,
392
392
  **kwargs,
393
393
  ):
394
- input_reshaped = torch.reshape(
395
- input,
396
- [
397
- batch_size,
398
- flattened_inner_size,
399
- num_groups,
400
- num_channels // num_groups,
401
- ],
402
- )
403
- reduction_dims = [1, 3]
404
-
405
- biased_var, mean = torch.var_mean(
406
- input_reshaped, dim=reduction_dims, unbiased=False, keepdim=True
394
+ is_composite_supported = (
395
+ ai_edge_torch.config.enable_group_norm_composite
396
+ and weight is not None
397
+ and bias is not None
407
398
  )
408
- rstd = torch.rsqrt(biased_var + eps)
409
-
410
- out = (input_reshaped - mean) * rstd
411
- out = torch.reshape(out, input.shape)
412
399
 
413
- if weight is not None:
414
- out = out * weight
415
- if bias is not None:
416
- out = out + bias
400
+ builder = None
401
+ if is_composite_supported:
402
+ builder = StableHLOCompositeBuilder(
403
+ name="odml.group_norm",
404
+ attr={
405
+ "num_groups": num_groups,
406
+ "epsilon": eps,
407
+ "reduction_axes": [3],
408
+ "channel_axis": 3,
409
+ },
410
+ )
411
+ input, weight, bias = builder.mark_inputs(input, weight, bias)
417
412
 
418
- mean = torch.squeeze(mean, reduction_dims)
419
- rstd = torch.squeeze(rstd, reduction_dims)
413
+ input = utils.tensor_to_nchw(input)
414
+ output = aten.group_norm.default(input, num_groups, weight, bias, eps=eps)
415
+ output = utils.tensor_to_nhwc(output)
420
416
 
421
- return out, mean, rstd
417
+ if builder is not None:
418
+ output = builder.mark_outputs(output)
419
+ return (output, None, None)
422
420
 
423
421
  node.target = native_group_norm
424
422
 
@@ -18,6 +18,7 @@ import operator
18
18
  import os
19
19
  from typing import Union
20
20
 
21
+ import ai_edge_torch
21
22
  from ai_edge_torch import fx_infra
22
23
  from ai_edge_torch._convert.fx_passes.optimize_layout_transposes_pass import layout_check # NOQA
23
24
  from ai_edge_torch._convert.fx_passes.optimize_layout_transposes_pass import layout_mark # NOQA
@@ -261,10 +262,8 @@ class OptimizeLayoutTransposesPass(fx_infra.ExportedProgramPassBase):
261
262
  self.mark_const_nodes(exported_program)
262
263
 
263
264
  graph_module = exported_program.graph_module
264
- partitioner = os.environ.get(
265
- "AIEDGETORCH_LAYOUT_OPTIMIZE_PARTITIONER", None
266
- )
267
- if partitioner == "MINCUT":
265
+ partitioner = ai_edge_torch.config.layout_optimize_partitioner
266
+ if partitioner in ("MINCUT", "OPTIMAL"):
268
267
  graph_module = layout_partitioners.min_cut.partition(graph_module)
269
268
  elif partitioner == "GREEDY":
270
269
  graph_module = layout_partitioners.greedy.partition(graph_module)
@@ -81,7 +81,8 @@ class KVCache:
81
81
  """
82
82
  caches = [
83
83
  KVCacheEntry.from_model_config(
84
- config.kv_cache_max,
84
+ config.kv_cache_max if not config.block_config(idx).kv_cache_max_len
85
+ else config.block_config(idx).kv_cache_max_len,
85
86
  config.block_config(idx).attn_config,
86
87
  dtype,
87
88
  device,
@@ -164,6 +164,9 @@ class TransformerBlockConfig:
164
164
  parallel_residual: bool = False
165
165
  # The Attention computation will include relative positional bias.
166
166
  relative_attention: bool = False
167
+ # KV Cache length for this block. Only used when attention types are different
168
+ # across blocks
169
+ kv_cache_max_len: Optional[int] = None
167
170
 
168
171
 
169
172
  @dataclasses.dataclass
@@ -200,7 +203,8 @@ class ModelConfig:
200
203
  embedding_use_bias: bool = False
201
204
  # Image embedding parameters.
202
205
  image_embedding: Optional[ImageEmbeddingConfig] = None
203
-
206
+ # Number of image tokens
207
+ num_mm_tokens_per_image: Optional[int] = None
204
208
  # Use bias term within LLM's HEAD.
205
209
  lm_head_use_bias: bool = False
206
210
  # Whether LLM's HEAD shares the weight of the embedding.
@@ -0,0 +1,76 @@
1
+ # Copyright 2024 The AI Edge Torch Authors.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ # ==============================================================================
15
+ # Common utility functions for data loading etc.
16
+ from dataclasses import dataclass
17
+ import glob
18
+ import os
19
+ from typing import Sequence
20
+ from ai_edge_torch.odml_torch import lowerings
21
+ from jax._src.lib.mlir import ir
22
+ from jax._src.lib.mlir.dialects import hlo as stablehlo
23
+ import torch
24
+
25
+
26
+ # Use torch.library.custom_op to define a new custom operator.
27
+ @torch.library.custom_op("ai_edge_torch::bmm_4d", mutates_args=())
28
+ def bmm_4d(
29
+ lhs: torch.Tensor,
30
+ rhs: torch.Tensor,
31
+ ) -> torch.Tensor:
32
+ if not (lhs.ndim == 4 and rhs.ndim == 4):
33
+ raise ValueError("bmm_4d requires LHS and RHS have rank 4.")
34
+ d0_can_bcast = lhs.shape[0] == rhs.shape[0] or lhs.shape[0] == 1 or rhs.shape[0] == 1
35
+ d1_can_bcast = lhs.shape[1] == rhs.shape[1] or lhs.shape[1] == 1 or rhs.shape[1] == 1
36
+ if not (d0_can_bcast and d1_can_bcast):
37
+ raise ValueError("bmm_4d requires that dimensions 0 and 1 can broadcast.")
38
+
39
+ if not lhs.shape[-1] == rhs.shape[-1]:
40
+ raise ValueError("bmm_4d requires LHS and RHS have same last dimension.")
41
+
42
+ return torch.einsum("abcd,abed->abce", lhs, rhs)
43
+
44
+
45
+ # Use register_fake to add a ``FakeTensor`` kernel for the operator
46
+ @bmm_4d.register_fake
47
+ def _(lhs, rhs):
48
+ return torch.einsum("abcd,abed->abce", lhs, rhs)
49
+
50
+
51
+ @lowerings.lower(torch.ops.ai_edge_torch.bmm_4d)
52
+ def _bmm_4d_lower(
53
+ lctx,
54
+ lhs: ir.Value,
55
+ rhs: ir.Value,
56
+ ):
57
+ dot_dnums = stablehlo.DotDimensionNumbers.get(
58
+ lhs_batching_dimensions=[0, 1],
59
+ rhs_batching_dimensions=[0, 1],
60
+ lhs_contracting_dimensions=(3,),
61
+ rhs_contracting_dimensions=(3,),
62
+ )
63
+ return stablehlo.dot_general(
64
+ ir.RankedTensorType.get(
65
+ (
66
+ lhs.type.shape[0],
67
+ lhs.type.shape[1],
68
+ lhs.type.shape[2],
69
+ rhs.type.shape[2],
70
+ ),
71
+ lhs.type.element_type,
72
+ ),
73
+ lhs,
74
+ rhs,
75
+ dot_dnums,
76
+ )
@@ -174,6 +174,9 @@ def _export_helper(
174
174
  'input_pos': prefill_input_pos,
175
175
  'kv_cache': kv,
176
176
  }
177
+ if export_config.prefill_mask is not None:
178
+ sample_kwargs['mask'] = export_config.prefill_mask
179
+
177
180
  if lora is not None:
178
181
  prefill_signature_name += f'_lora_r{lora.get_rank()}'
179
182
  sample_kwargs['lora'] = lora
@@ -199,6 +202,8 @@ def _export_helper(
199
202
  'input_pos': decode_input_pos,
200
203
  'kv_cache': kv,
201
204
  }
205
+ if export_config.decode_mask is not None:
206
+ sample_kwargs['mask'] = export_config.decode_mask
202
207
  if lora is not None:
203
208
  sample_kwargs['lora'] = lora
204
209
 
@@ -55,6 +55,9 @@ class ExportConfig:
55
55
  # On prefill signatures, should the model produce logit output?
56
56
  # When False, only decode signatures will produce output.
57
57
  output_logits_on_prefill: bool = False
58
+ # Attention masks given as inputs to the model.
59
+ prefill_mask: Optional[torch.Tensor] = None
60
+ decode_mask: Optional[torch.Tensor] = None
58
61
 
59
62
 
60
63
  class DecoderOnlyModel(nn.Module):
@@ -29,7 +29,7 @@ LoweringContext = context.LoweringContext
29
29
 
30
30
  @functools.cache
31
31
  def _log_usage(op):
32
- logging.warning("Use jax lowering: %s", str(op))
32
+ logging.info("Use JAX lowering: %s", str(op))
33
33
 
34
34
 
35
35
  def lower_by_jax(op, ir_input_names=None):
@@ -21,8 +21,6 @@ from typing import Callable, Dict, List, NamedTuple, Optional
21
21
  import torch
22
22
  from torch.ao.quantization.fx.utils import get_new_attr_name_with_prefix
23
23
  from torch.ao.quantization.pt2e.graph_utils import find_sequential_partitions
24
- from torch.ao.quantization.pt2e.utils import _conv1d_bn_example_inputs
25
- from torch.ao.quantization.pt2e.utils import _conv2d_bn_example_inputs
26
24
  from torch.ao.quantization.pt2e.utils import _get_aten_graph_module_for_pattern
27
25
  from torch.ao.quantization.quantizer import QuantizationAnnotation
28
26
  from torch.ao.quantization.quantizer import QuantizationSpec
@@ -47,6 +45,28 @@ __all__ = [
47
45
  "propagate_annotation",
48
46
  ]
49
47
 
48
+ # Example inputs for conv-bn1d patterns
49
+ _conv1d_bn_example_inputs = (
50
+ torch.randn(1, 1, 3), # x
51
+ torch.randn(1, 1, 1), # conv_weight
52
+ torch.randn(1), # conv_bias
53
+ torch.randn(1), # bn_weight
54
+ torch.randn(1), # bn_bias
55
+ torch.randn(1), # bn_running_mean
56
+ torch.randn(1), # bn_running_var
57
+ )
58
+
59
+ # Example inputs for conv-bn2d patterns
60
+ _conv2d_bn_example_inputs = (
61
+ torch.randn(1, 1, 3, 3), # x
62
+ torch.randn(1, 1, 1, 1), # conv_weight
63
+ torch.randn(1), # conv_bias
64
+ torch.randn(1), # bn_weight
65
+ torch.randn(1), # bn_bias
66
+ torch.randn(1), # bn_running_mean
67
+ torch.randn(1), # bn_running_var
68
+ )
69
+
50
70
 
51
71
  @dataclass(eq=True, frozen=True)
52
72
  class QuantizationConfig:
ai_edge_torch/version.py CHANGED
@@ -13,4 +13,4 @@
13
13
  # limitations under the License.
14
14
  # ==============================================================================
15
15
 
16
- __version__ = "0.3.0.dev20250122"
16
+ __version__ = "0.3.0.dev20250124"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ai-edge-torch-nightly
3
- Version: 0.3.0.dev20250122
3
+ Version: 0.3.0.dev20250124
4
4
  Summary: Supporting PyTorch models with the Google AI Edge TFLite runtime.
5
5
  Home-page: https://github.com/google-ai-edge/ai-edge-torch
6
6
  Keywords: On-Device ML,AI,Google,TFLite,PyTorch,LLMs,GenAI
@@ -1,8 +1,8 @@
1
1
  ai_edge_torch/__init__.py,sha256=8sPR_5uXJA4NEE0nIwNdSl-ADOJEoR8hAgYvBQDY70Y,1208
2
- ai_edge_torch/_config.py,sha256=PKtOtBOup-cM0wBdQxby6HzuhLhIC3oq-TBG8FF4znE,2161
2
+ ai_edge_torch/_config.py,sha256=AiqhbcheF7j_ozIGDLC89k1we95aVgFDa-tR6h7UI0s,2529
3
3
  ai_edge_torch/conftest.py,sha256=r0GTrhMRhlmOGrrkvumHN8hkmyug6WvF60vWq8wRIBI,758
4
4
  ai_edge_torch/model.py,sha256=N-pNpTxzhaFGhWhnSGd70lBzb9VlEhTOq5mddU7bvvI,5542
5
- ai_edge_torch/version.py,sha256=hTwjlLVIp826evZRXkCm4XtYo3T7qGsjqbgW_Llf138,706
5
+ ai_edge_torch/version.py,sha256=xloGd_dX0MD8k-quT07WLlEN1zIGVtCKu6xBSvjofrc,706
6
6
  ai_edge_torch/_convert/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
7
7
  ai_edge_torch/_convert/conversion.py,sha256=mckvxznKLXdF2HuJg_IxQaT5Ty-iWl_iXElHEugH3VI,5452
8
8
  ai_edge_torch/_convert/conversion_utils.py,sha256=Sr8qXVcTwc-ZnZmK7yxVrIOOp1S_vNrwzC0zUvLTI2o,2160
@@ -16,11 +16,11 @@ ai_edge_torch/_convert/fx_passes/inject_mlir_debuginfo_pass.py,sha256=Z6E3U7SYZv
16
16
  ai_edge_torch/_convert/fx_passes/remove_non_user_outputs_pass.py,sha256=HCOkj0k3NhaYbtfjE8HDXVmYhZ9fL5V_u6VunVh9mN4,2116
17
17
  ai_edge_torch/_convert/fx_passes/optimize_layout_transposes_pass/__init__.py,sha256=UKC-wM93-oe8spxyFqgybJ0TwnSRw8f-SOA2glCh2FA,890
18
18
  ai_edge_torch/_convert/fx_passes/optimize_layout_transposes_pass/_decomp_registry.py,sha256=aWO_zHDF4j_hokoKJQNFIFmua4ysXztsgS6pcyBUht0,1082
19
- ai_edge_torch/_convert/fx_passes/optimize_layout_transposes_pass/layout_check.py,sha256=S_Bniv6jY16oOoFUzlyECQ0I2HDjG2D1MOI-QYPk3jQ,8061
19
+ ai_edge_torch/_convert/fx_passes/optimize_layout_transposes_pass/layout_check.py,sha256=7yEKSfXskXUk4tsd7c8vL155O-iU4eUjXCU5RSZHrbw,8204
20
20
  ai_edge_torch/_convert/fx_passes/optimize_layout_transposes_pass/layout_mark.py,sha256=4RyGUwR22bZqkn_TnptenFJodc_Q43f4_SBG7gmTbos,1621
21
- ai_edge_torch/_convert/fx_passes/optimize_layout_transposes_pass/layout_rewrite.py,sha256=zoAZ2TXKvxUnWnT11U4tx2uF0J5kkNXydgaW7JzfkXI,13811
21
+ ai_edge_torch/_convert/fx_passes/optimize_layout_transposes_pass/layout_rewrite.py,sha256=OCFcPP618zH8IE12KTBQm2hRTtsaSeO3egvlOBUpNxA,13911
22
22
  ai_edge_torch/_convert/fx_passes/optimize_layout_transposes_pass/op_func_registry.py,sha256=OhisegHY2j4cv_m9auCh9Mq9qmm1lUqpFLVO9X-oBlc,1032
23
- ai_edge_torch/_convert/fx_passes/optimize_layout_transposes_pass/pass_body.py,sha256=lgoH32l6zAbWTCpa_4-RWkHjqbNaPsBnhSObLIX8dL4,10551
23
+ ai_edge_torch/_convert/fx_passes/optimize_layout_transposes_pass/pass_body.py,sha256=mr0MiLbaQmU-3S3KT-vb58kRWbNT3VJiCKY-K7_3tFg,10556
24
24
  ai_edge_torch/_convert/fx_passes/optimize_layout_transposes_pass/utils.py,sha256=YLMttMg5PdvXTtQ8lxpKb434UGVvYVALV1-xeuH4UGc,2131
25
25
  ai_edge_torch/_convert/fx_passes/optimize_layout_transposes_pass/layout_partitioners/__init__.py,sha256=D8VX8SbCzfoyvPgMFHK7yxD7R-bzLxp2gfdKxgrWekA,742
26
26
  ai_edge_torch/_convert/fx_passes/optimize_layout_transposes_pass/layout_partitioners/greedy.py,sha256=L_x8BrF7UDah-SYl-pG11I6CIckdU9kBTUHcmwW4cts,2420
@@ -128,9 +128,9 @@ ai_edge_torch/generative/layers/attention.py,sha256=GrAy8CT1pEsgRoB8JQP6PlnNYk8k
128
128
  ai_edge_torch/generative/layers/attention_utils.py,sha256=zBVwlBUTs-nStIKCZG0ks5ra7tsqc9ShfakFJKH5rds,7344
129
129
  ai_edge_torch/generative/layers/builder.py,sha256=LXGuSHIx6QZAzLFm7aJvlzoMPgQwbXLFchGEKYwOOUA,5090
130
130
  ai_edge_torch/generative/layers/feed_forward.py,sha256=hdICat-8gW7-vxDAevJQ8NQ-mynllPiqLdXQMF6JMnc,4189
131
- ai_edge_torch/generative/layers/kv_cache.py,sha256=DhHIggaOQ2IAY4aRuMAuCLWZv1dBz5PYtmOEjkx9EQY,6291
131
+ ai_edge_torch/generative/layers/kv_cache.py,sha256=sGGAZD0mWYuO4FukZfDbHXoxpBOBE9lTYICvZzDj5F8,6400
132
132
  ai_edge_torch/generative/layers/lora.py,sha256=hsvWLLOnW7HQ0AysOZu30x_cetMquDd1tjfyLz8HCSU,17892
133
- ai_edge_torch/generative/layers/model_config.py,sha256=9yPEmWNw3-_2wXBmPmZ7RUKcPXHF2ZbJwksyQoXTA6M,7784
133
+ ai_edge_torch/generative/layers/model_config.py,sha256=ZVRWEGw1BnLbLCuoR71kWGqQteKp-UM1YvMbbWYlkNw,7999
134
134
  ai_edge_torch/generative/layers/normalization.py,sha256=MbwH-n80Fob5YvjBzdqDjBizMHLzSJGYRDdbD-rL5C0,6174
135
135
  ai_edge_torch/generative/layers/rotary_position_embedding.py,sha256=975zR202MdIrILJ7blceAcxrNqX1ZCN0ECKG1gz-bV8,2655
136
136
  ai_edge_torch/generative/layers/scaled_dot_product_attention.py,sha256=vp8dVx6tOe99neJhpbrtIt5fvN5NFw19JVH1v0yi5Mg,4154
@@ -155,10 +155,11 @@ ai_edge_torch/generative/test/test_model_conversion_large.py,sha256=yzMgXkiZxHUF
155
155
  ai_edge_torch/generative/test/test_quantize.py,sha256=bEJMhpQ9bIDUZVBXTW888728FcH-i3SyE4JSZZUgU0A,6071
156
156
  ai_edge_torch/generative/test/utils.py,sha256=tF6aCfAGJnc9dmzCnZCEOuKNVimfWOqscv9og0DDLHU,2656
157
157
  ai_edge_torch/generative/utilities/__init__.py,sha256=-_jxnnFnCgnTU4oTm4MnRsvL5lqhomBNdFBbqfmfHPo,720
158
- ai_edge_torch/generative/utilities/converter.py,sha256=yNIZ-O6RdXYl8yuWM_sTENRxozPnKGS-TZRhiiTaraE,7515
158
+ ai_edge_torch/generative/utilities/bmm_4d.py,sha256=2BMOYiFVUsl-bjxmLkrX4N7kpO0CnhB7eDYxm_iBCr8,2533
159
+ ai_edge_torch/generative/utilities/converter.py,sha256=QIYxT-zATMzsD3LG-keRkxpJqDKXkbil4Se1KXthWFg,7726
159
160
  ai_edge_torch/generative/utilities/dynamic_update_slice.py,sha256=e2mhx-Vp8sUK4EXoPtpZLSx3TViqLAKs67EhKcXBjAQ,2121
160
161
  ai_edge_torch/generative/utilities/loader.py,sha256=A3SOjPXp--AsvoP1hqj5QKWE4sgxoFc3H5EBUz_Eogc,13531
161
- ai_edge_torch/generative/utilities/model_builder.py,sha256=3CQLxJ02pFIo2DlS-RCn9cT6OvR4NiIuYRH597UXLiI,6530
162
+ ai_edge_torch/generative/utilities/model_builder.py,sha256=aXigoFEMLAKk7HQuWJM5ILs3igA4z2VH64ZCzCuBhDE,6671
162
163
  ai_edge_torch/generative/utilities/moonshine_loader.py,sha256=_RpFabSqtGH5PHiP3_1f6QfO14qMADUxr_HGRlVDFB0,4891
163
164
  ai_edge_torch/generative/utilities/stable_diffusion_loader.py,sha256=dqPD9qRXEWtU3ombslOC-BE2l_dMwHoCNu7NsIJhsso,36158
164
165
  ai_edge_torch/generative/utilities/t5_loader.py,sha256=tEsfy8-ymzbbjOIc-oesXF3yGyyWtJgFXn2s7VOavt8,16961
@@ -197,7 +198,7 @@ ai_edge_torch/odml_torch/lowerings/_basic.py,sha256=8mZTp_ybcMO3tDRQdlDP68BVeTw5
197
198
  ai_edge_torch/odml_torch/lowerings/_batch_norm.py,sha256=PaLI0BB6pdBW1VyfW8VTOT_Be-ZcqYdNOsyfzKfq8Cg,2064
198
199
  ai_edge_torch/odml_torch/lowerings/_convolution.py,sha256=Q0aDzyUcZMoSzSbOU-r3LJMgPe6fble0QwdYVIOHHHk,6887
199
200
  ai_edge_torch/odml_torch/lowerings/_decomp_registry.py,sha256=VhmeGFnB5hrUsALiVWV96JJOqPDrTIWouHjTvLuT5eU,2477
200
- ai_edge_torch/odml_torch/lowerings/_jax_lowerings.py,sha256=CJHWkmY4aAVQ5dmFsVc3Ox9TPkoLSNOfa96psD4CLRo,11561
201
+ ai_edge_torch/odml_torch/lowerings/_jax_lowerings.py,sha256=fte81SZxgxeMcI3wWVKSTnUjIxVVilOJ6H3TybXyDmQ,11558
201
202
  ai_edge_torch/odml_torch/lowerings/_layer_norm.py,sha256=khJIvDVk2s332Nd2Be-5dM6-wp5DGff61HCV5lskHmQ,3011
202
203
  ai_edge_torch/odml_torch/lowerings/_quantized_decomposed.py,sha256=XDZ0zLej_XaQDJnaAAxhNFAd7NfQm5SOVEp_nno_krA,6178
203
204
  ai_edge_torch/odml_torch/lowerings/_rand.py,sha256=g6SuqDkuC6hD35lyP1-5H7ASDIzPSmKukeNT5naZSv8,4133
@@ -207,13 +208,13 @@ ai_edge_torch/odml_torch/lowerings/utils.py,sha256=pqM6mumpviFDHRaabp93CUAngzEZm
207
208
  ai_edge_torch/odml_torch/passes/__init__.py,sha256=AVwIwUTMx7rXacKjGy4kwrtMd3XB2v_ncdc40KOjUqQ,1245
208
209
  ai_edge_torch/quantize/__init__.py,sha256=aB5dXot04bqyUhpsDFvxt9CIi15QAC4euvqOndJ0XLU,714
209
210
  ai_edge_torch/quantize/pt2e_quantizer.py,sha256=CKIEhs9jCcna64qj1jFH9zEbMbRdyeGV_TmSqEBPjes,15741
210
- ai_edge_torch/quantize/pt2e_quantizer_utils.py,sha256=eARD1LxLi5m7Z0n_psAkeX_AtUp4fNkE--oECBfivv4,36208
211
+ ai_edge_torch/quantize/pt2e_quantizer_utils.py,sha256=nuO3w9gOj9sKcsTBBexVDw8UZnd06KsjNrFr_gyNaiA,36710
211
212
  ai_edge_torch/quantize/quant_config.py,sha256=U0KisSW-uZkoMJcy-ZP9W57p3tsa594fr9PphCRdO8o,3172
212
213
  ai_edge_torch/testing/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
213
214
  ai_edge_torch/testing/model_coverage/__init__.py,sha256=5P8J6Zk5YYtDvTBucFvB9NGSRI7Gw_24WnrbhXgycEE,765
214
215
  ai_edge_torch/testing/model_coverage/model_coverage.py,sha256=UPB448aMDUyC0HNYVqio2rcJPnDN0tBQMP08J6vPYew,4718
215
- ai_edge_torch_nightly-0.3.0.dev20250122.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
216
- ai_edge_torch_nightly-0.3.0.dev20250122.dist-info/METADATA,sha256=-gaDJq2ogHs2JdgtvtQwpsXxZQkKB9e3yOLcC1XYz2I,1966
217
- ai_edge_torch_nightly-0.3.0.dev20250122.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
218
- ai_edge_torch_nightly-0.3.0.dev20250122.dist-info/top_level.txt,sha256=5KXRaF2hwkApYxf7Y8y_tVb9aulGTlbOoNdbx1aKRkE,14
219
- ai_edge_torch_nightly-0.3.0.dev20250122.dist-info/RECORD,,
216
+ ai_edge_torch_nightly-0.3.0.dev20250124.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
217
+ ai_edge_torch_nightly-0.3.0.dev20250124.dist-info/METADATA,sha256=WKVqBXJtXvMv3JfqtYKcl1GFgKrKtSbZ-tJAol5PPHk,1966
218
+ ai_edge_torch_nightly-0.3.0.dev20250124.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
219
+ ai_edge_torch_nightly-0.3.0.dev20250124.dist-info/top_level.txt,sha256=5KXRaF2hwkApYxf7Y8y_tVb9aulGTlbOoNdbx1aKRkE,14
220
+ ai_edge_torch_nightly-0.3.0.dev20250124.dist-info/RECORD,,