ai-edge-torch-nightly 0.3.0.dev20240828__py3-none-any.whl → 0.3.0.dev20240829__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 ai-edge-torch-nightly might be problematic. Click here for more details.

Files changed (45) hide show
  1. ai_edge_torch/_convert/fx_passes/optimize_layout_transposes_pass/layout_rewrite.py +6 -1
  2. ai_edge_torch/_convert/test/test_convert.py +1 -1
  3. ai_edge_torch/_convert/test/test_convert_composites.py +1 -1
  4. ai_edge_torch/_convert/test/test_convert_multisig.py +1 -1
  5. ai_edge_torch/_convert/test/test_to_channel_last_io.py +1 -1
  6. ai_edge_torch/debug/test/test_culprit.py +1 -1
  7. ai_edge_torch/debug/test/test_search_model.py +1 -1
  8. ai_edge_torch/generative/test/test_experimental_ekv.py +1 -1
  9. ai_edge_torch/generative/test/test_loader.py +1 -1
  10. ai_edge_torch/generative/test/test_model_conversion.py +1 -1
  11. ai_edge_torch/generative/test/test_quantize.py +1 -1
  12. ai_edge_torch/hlfb/test/test_mark_pattern.py +1 -1
  13. ai_edge_torch/hlfb/test/test_stablehlo_composite_builder.py +1 -1
  14. ai_edge_torch/lowertools/odml_torch_utils.py +5 -1
  15. ai_edge_torch/lowertools/test_utils.py +1 -1
  16. ai_edge_torch/odml_torch/__init__.py +20 -0
  17. ai_edge_torch/odml_torch/_torch_future.py +61 -0
  18. ai_edge_torch/odml_torch/_torch_library.py +19 -0
  19. ai_edge_torch/odml_torch/composite/__init__.py +16 -0
  20. ai_edge_torch/odml_torch/composite/mark_tensor.py +120 -0
  21. ai_edge_torch/odml_torch/composite/stablehlo_composite_builder.py +106 -0
  22. ai_edge_torch/odml_torch/debuginfo/__init__.py +16 -0
  23. ai_edge_torch/odml_torch/debuginfo/_build.py +43 -0
  24. ai_edge_torch/odml_torch/debuginfo/_op_polyfill.py +55 -0
  25. ai_edge_torch/odml_torch/export.py +320 -0
  26. ai_edge_torch/odml_torch/export_utils.py +168 -0
  27. ai_edge_torch/odml_torch/jax_bridge/__init__.py +15 -0
  28. ai_edge_torch/odml_torch/jax_bridge/_wrap.py +152 -0
  29. ai_edge_torch/odml_torch/jax_bridge/utils.py +75 -0
  30. ai_edge_torch/odml_torch/lowerings/__init__.py +24 -0
  31. ai_edge_torch/odml_torch/lowerings/_basic.py +204 -0
  32. ai_edge_torch/odml_torch/lowerings/_batch_norm.py +65 -0
  33. ai_edge_torch/odml_torch/lowerings/_convolution.py +119 -0
  34. ai_edge_torch/odml_torch/lowerings/_jax_lowerings.py +255 -0
  35. ai_edge_torch/odml_torch/lowerings/context.py +42 -0
  36. ai_edge_torch/odml_torch/lowerings/registry.py +87 -0
  37. ai_edge_torch/odml_torch/lowerings/utils.py +185 -0
  38. ai_edge_torch/odml_torch/passes/__init__.py +38 -0
  39. ai_edge_torch/odml_torch/tf_integration.py +194 -0
  40. ai_edge_torch/version.py +1 -1
  41. {ai_edge_torch_nightly-0.3.0.dev20240828.dist-info → ai_edge_torch_nightly-0.3.0.dev20240829.dist-info}/METADATA +1 -1
  42. {ai_edge_torch_nightly-0.3.0.dev20240828.dist-info → ai_edge_torch_nightly-0.3.0.dev20240829.dist-info}/RECORD +45 -21
  43. {ai_edge_torch_nightly-0.3.0.dev20240828.dist-info → ai_edge_torch_nightly-0.3.0.dev20240829.dist-info}/LICENSE +0 -0
  44. {ai_edge_torch_nightly-0.3.0.dev20240828.dist-info → ai_edge_torch_nightly-0.3.0.dev20240829.dist-info}/WHEEL +0 -0
  45. {ai_edge_torch_nightly-0.3.0.dev20240828.dist-info → ai_edge_torch_nightly-0.3.0.dev20240829.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,194 @@
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
+ """APIs to convert lowered MLIR from PyTorch to TensorFlow and TFLite artifacts."""
16
+
17
+ import re
18
+ import tempfile
19
+
20
+ import tensorflow as tf
21
+ import torch
22
+
23
+ from tensorflow.compiler.tf2xla.python import xla as tfxla
24
+
25
+ from . import export
26
+ from . import export_utils
27
+
28
+
29
+ def torch_dtype_to_tf(dtype):
30
+ return {
31
+ torch.double: tf.float64,
32
+ torch.float32: tf.float32,
33
+ torch.half: tf.float16,
34
+ torch.long: tf.int64,
35
+ torch.int32: tf.int32,
36
+ torch.int16: tf.int16,
37
+ torch.bool: tf.bool,
38
+ }.get(dtype)
39
+
40
+
41
+ def _get_shape_with_dynamic(signature: export.VariableSignature):
42
+ return [
43
+ None if export_utils.is_torch_dynamic(s) else s for s in signature.shape
44
+ ]
45
+
46
+
47
+ def _mangle_tf_root_scope_name(name):
48
+ r"""Build the mangled name for tf.Variable.
49
+
50
+ TF has more restricted constrain on the variable names at root scope. Root
51
+ scope name constrain: [A-Za-z0-9.][A-Za-z0-9_.\\-/]* Non-root scope name
52
+ constrain: [A-Za-z0-9_.\\-/]*
53
+ https://github.com/tensorflow/tensorflow/blob/51b601fa6bb7e801c0b6ae73c25580e40a8b5745/tensorflow/python/framework/ops.py#L3301-L3302
54
+ The state_dict key doesn't have such constrain, the name need to be mangled
55
+ when a root-scoped TF variable is created.
56
+
57
+ FX Graph Node may contain characters other than [A-Za-z0-9_.\\-/], replace
58
+ offending characters with '_'.
59
+
60
+ Args:
61
+ name: the tensor name to be mangled.
62
+
63
+ Returns:
64
+ Mangled name in str.
65
+ """
66
+ if name[0] in "._\\-/":
67
+ name = "k" + name
68
+ name = re.sub(r"[^^\w\-/\\]+", "_", name)
69
+ return name
70
+
71
+
72
+ def _build_tf_state_dict(
73
+ lowered: export.MlirLowered,
74
+ ) -> dict[str, tf.Variable]:
75
+ """Build a dictionary of tf.Variable from the state_dict in lowered."""
76
+ tf_state_dict = {}
77
+ for sig in lowered.input_signature:
78
+ if sig.input_spec.is_parameter:
79
+ name = sig.input_spec.name
80
+ tf_state_dict[name] = tf.Variable(
81
+ lowered.state_dict[name].detach().numpy(),
82
+ trainable=False,
83
+ name=_mangle_tf_root_scope_name(name),
84
+ )
85
+ return tf_state_dict
86
+
87
+
88
+ def _extract_call_args(
89
+ lowered: export.MlirLowered,
90
+ args,
91
+ tf_state_dict: dict[str, tf.Variable],
92
+ ):
93
+ """Extract the flattened inputs to built tf.function."""
94
+ call_args = []
95
+ for sig in lowered.input_signature:
96
+ if sig.input_spec.is_user_input:
97
+ call_args.append(args[sig.input_spec.i])
98
+ elif sig.input_spec.is_parameter:
99
+ name = sig.input_spec.name
100
+ call_args.append(tf_state_dict[name])
101
+ return call_args
102
+
103
+
104
+ def _wrap_as_tf_func(lowered, tf_state_dict):
105
+ """Build tf.function from lowered and tf_state_dict."""
106
+
107
+ def inner(*args):
108
+ t_outs = [torch_dtype_to_tf(sig.dtype) for sig in lowered.output_signature]
109
+ s_outs = [_get_shape_with_dynamic(sig) for sig in lowered.output_signature]
110
+ call_args = _extract_call_args(lowered, args, tf_state_dict)
111
+ return tfxla.call_module(
112
+ tuple(call_args),
113
+ version=5,
114
+ Tout=t_outs, # dtype information
115
+ Sout=s_outs, # Shape information
116
+ function_list=[],
117
+ module=lowered.module_bytecode,
118
+ )
119
+
120
+ return inner
121
+
122
+
123
+ def _make_input_signatures(
124
+ lowered: export.MlirLowered,
125
+ ) -> list[tf.TensorSpec]:
126
+ """Build the input signatures in tf.TensorSpec for building tf.function."""
127
+ user_input_signature = sorted(
128
+ [sig for sig in lowered.input_signature if sig.input_spec.is_user_input],
129
+ key=lambda sig: sig.input_spec.i,
130
+ )
131
+ tf_signatures = []
132
+
133
+ for sig in user_input_signature:
134
+ shape = _get_shape_with_dynamic(sig)
135
+ tf_signatures.append(
136
+ tf.TensorSpec(
137
+ shape=shape,
138
+ dtype=torch_dtype_to_tf(sig.dtype),
139
+ name=f"args_{sig.input_spec.i}",
140
+ )
141
+ )
142
+ return tf_signatures
143
+
144
+
145
+ def mlir_to_tf_function(lowered: export.MlirLowered):
146
+ """Convert the MLIR lowered to a executable tf.function."""
147
+ tf_state_dict = _build_tf_state_dict(lowered)
148
+ return tf.function(
149
+ _wrap_as_tf_func(lowered, tf_state_dict),
150
+ input_signature=_make_input_signatures(lowered),
151
+ )
152
+
153
+
154
+ def mlir_to_flatbuffer(lowered: export.MlirLowered):
155
+ """Convert the MLIR lowered to a TFLite flatbuffer binary."""
156
+ tf_state_dict = _build_tf_state_dict(lowered)
157
+ signature_names = [tf.saved_model.DEFAULT_SERVING_SIGNATURE_DEF_KEY]
158
+ tf_signatures = [_make_input_signatures(lowered)]
159
+ tf_functions = [_wrap_as_tf_func(lowered, tf_state_dict)]
160
+
161
+ tf_module = tf.Module()
162
+ tf_module.f = []
163
+
164
+ for tf_sig, func in zip(tf_signatures, tf_functions):
165
+ tf_module.f.append(
166
+ tf.function(
167
+ func,
168
+ input_signature=tf_sig,
169
+ )
170
+ )
171
+
172
+ tf_module._variables = list(tf_state_dict.values())
173
+
174
+ tf_concrete_funcs = [
175
+ func.get_concrete_function(*tf_sig)
176
+ for func, tf_sig in zip(tf_module.f, tf_signatures)
177
+ ]
178
+
179
+ # We need to temporarily save since TFLite's from_concrete_functions does not
180
+ # allow providing names for each of the concrete functions.
181
+ with tempfile.TemporaryDirectory() as temp_dir_path:
182
+ tf.saved_model.save(
183
+ tf_module,
184
+ temp_dir_path,
185
+ signatures={
186
+ sig_name: tf_concrete_funcs[idx]
187
+ for idx, sig_name in enumerate(signature_names)
188
+ },
189
+ )
190
+
191
+ converter = tf.lite.TFLiteConverter.from_saved_model(temp_dir_path)
192
+ tflite_model = converter.convert()
193
+
194
+ return tflite_model
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.dev20240828"
16
+ __version__ = "0.3.0.dev20240829"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ai-edge-torch-nightly
3
- Version: 0.3.0.dev20240828
3
+ Version: 0.3.0.dev20240829
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
@@ -2,7 +2,7 @@ ai_edge_torch/__init__.py,sha256=48qP37uHT90YPs4eIUQxCiWVwqGEX3idCUs6mQKvX1U,116
2
2
  ai_edge_torch/config.py,sha256=PCd9PVrbUNeVIUDFUCnW4goDWU4bjouK28yMYU6VOi0,877
3
3
  ai_edge_torch/conftest.py,sha256=r0GTrhMRhlmOGrrkvumHN8hkmyug6WvF60vWq8wRIBI,758
4
4
  ai_edge_torch/model.py,sha256=7tox6sdFIlCYPLDYpjFcD8cPTSivURCL_VV6-Dt5Sfc,4910
5
- ai_edge_torch/version.py,sha256=FYYHMZbGfkHhNzKfScFWouShgQ9DOVNXZ7WWrrsKjPY,706
5
+ ai_edge_torch/version.py,sha256=OF9oSdUOGcmdEp2HSZmEIeCPlRhL3cpviHc_dExhcX8,706
6
6
  ai_edge_torch/_convert/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
7
7
  ai_edge_torch/_convert/conversion.py,sha256=kcv_QgNgeyDmrqwdzHicGNP68w6zF7GJg7YkMEIXp4Q,3759
8
8
  ai_edge_torch/_convert/conversion_utils.py,sha256=Sr8qXVcTwc-ZnZmK7yxVrIOOp1S_vNrwzC0zUvLTI2o,2160
@@ -18,7 +18,7 @@ ai_edge_torch/_convert/fx_passes/inject_mlir_debuginfo_pass.py,sha256=WKI8V9-V50
18
18
  ai_edge_torch/_convert/fx_passes/optimize_layout_transposes_pass/__init__.py,sha256=lxnoH-WGLeiQIF8XjMGodjiZEFTxucl7g05N7MR9OPk,796
19
19
  ai_edge_torch/_convert/fx_passes/optimize_layout_transposes_pass/layout_check.py,sha256=DIfrWDZ1ufAN_uH-oW3k66jTciY7DlLDAb6UKMN14zE,7528
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=GcxDxj-5KKWTR5xnRKuhRsb6TDHLCXiPXjGnc_97QXs,12604
21
+ ai_edge_torch/_convert/fx_passes/optimize_layout_transposes_pass/layout_rewrite.py,sha256=e_JWgGFOSUI9DUtmod396GNH9uJNd2VBL0DXGjbg-cE,12702
22
22
  ai_edge_torch/_convert/fx_passes/optimize_layout_transposes_pass/op_func_registry.py,sha256=bsYnudRlXp1PJlu4GF25KSogSkBGQPSaecBrUTONKaw,1031
23
23
  ai_edge_torch/_convert/fx_passes/optimize_layout_transposes_pass/pass_body.py,sha256=HXTDEP6_Z0I0s58H6I0yHz9qrkOxptIjKhxywfe8F80,10637
24
24
  ai_edge_torch/_convert/fx_passes/optimize_layout_transposes_pass/utils.py,sha256=YLMttMg5PdvXTtQ8lxpKb434UGVvYVALV1-xeuH4UGc,2131
@@ -26,16 +26,16 @@ ai_edge_torch/_convert/fx_passes/optimize_layout_transposes_pass/layout_partitio
26
26
  ai_edge_torch/_convert/fx_passes/optimize_layout_transposes_pass/layout_partitioners/greedy.py,sha256=L_x8BrF7UDah-SYl-pG11I6CIckdU9kBTUHcmwW4cts,2420
27
27
  ai_edge_torch/_convert/fx_passes/optimize_layout_transposes_pass/layout_partitioners/min_cut.py,sha256=mzfL9cf0qBnpmxM_OlMQFvQsEZV2B_Mia9yEJV4J7rI,7135
28
28
  ai_edge_torch/_convert/test/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
29
- ai_edge_torch/_convert/test/test_convert.py,sha256=tvj7fWHHmA9ddtcu-Fp3lJ6emaAQMrtK9wCG0cjgRAo,14413
30
- ai_edge_torch/_convert/test/test_convert_composites.py,sha256=CBiOqq-m7QT2ggBI1jBl9MkTIT5d0nK1tA0BUga0LGs,7994
31
- ai_edge_torch/_convert/test/test_convert_multisig.py,sha256=ShZeakqVN9jg9mgFvvMWP0BoPF-u4BTM2hoEkDmLwj0,5780
32
- ai_edge_torch/_convert/test/test_to_channel_last_io.py,sha256=jLAmyHw5llT2ff8qA8mem3eVN57e_o5EpBnW72ZtP2I,3026
29
+ ai_edge_torch/_convert/test/test_convert.py,sha256=pUYSXuqFg8CAeJ8JkoYf7S0RDLRPVuZUwVOd0xObM6w,14411
30
+ ai_edge_torch/_convert/test/test_convert_composites.py,sha256=BCIODgxMI_3MxMLfNWYMGjcz-al-J3z5eDHCiZJXNwY,7992
31
+ ai_edge_torch/_convert/test/test_convert_multisig.py,sha256=6_C2R9--KyNR7_oezZIAfyTSR97tOeEWy4XGcbSxBDE,5778
32
+ ai_edge_torch/_convert/test/test_to_channel_last_io.py,sha256=1o-gUiwzIuO67FNAJ8DeyKv8fVUeZVNNNwofNVDjYeU,3024
33
33
  ai_edge_torch/debug/__init__.py,sha256=N05Mmvi41KgSuK0JhuMejERESgP8QekiGdp9_PEyuKU,742
34
34
  ai_edge_torch/debug/culprit.py,sha256=7UYVpVWpiCXbMAyThVtHt_kc_poT7sCTh5UUPvcycgk,14832
35
35
  ai_edge_torch/debug/utils.py,sha256=vOAL4t6Lj47uhKapfEsc_WHmvwew3eKO9hSJyzvPXnU,1625
36
36
  ai_edge_torch/debug/test/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
37
- ai_edge_torch/debug/test/test_culprit.py,sha256=GjQv4bpz5EVwgxQt7HmpqTzIo_BpsvRmDVWeOmr29HE,3775
38
- ai_edge_torch/debug/test/test_search_model.py,sha256=3rUSl7pFBfWjK47YhK5B8J1bXrvNhKKIEuNDNfFShHc,1670
37
+ ai_edge_torch/debug/test/test_culprit.py,sha256=SLX4rC-5Dlna8MWHhGRNe72K71AHTFufDrWLlFQn50c,3773
38
+ ai_edge_torch/debug/test/test_search_model.py,sha256=-RuU0QsjqkfzZF2IbeA55MoeVOawhbgiSEu96PmioPE,1668
39
39
  ai_edge_torch/experimental/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
40
40
  ai_edge_torch/generative/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
41
41
  ai_edge_torch/generative/examples/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
@@ -109,10 +109,10 @@ ai_edge_torch/generative/quantize/supported_schemes.py,sha256=FjdycEOvxRgBmQdZVu
109
109
  ai_edge_torch/generative/quantize/ai_edge_quantizer_glue/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
110
110
  ai_edge_torch/generative/quantize/ai_edge_quantizer_glue/translate_recipe.py,sha256=sSHc_4hUEvi-3KmqbpqWbrRKBjCI1AOctM3dr2EH3vk,5263
111
111
  ai_edge_torch/generative/test/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
112
- ai_edge_torch/generative/test/test_experimental_ekv.py,sha256=T5-O2RVLJTH7v9w1_uBfp-Y7o3sdGzYq2Tj2wLRNHyI,4357
113
- ai_edge_torch/generative/test/test_loader.py,sha256=1ZqAq0HY5uIioumsReOVIsbGBx0WkYcl18PvttdJKrk,3381
114
- ai_edge_torch/generative/test/test_model_conversion.py,sha256=52ciFy_Qol2Xuym6P6EqdL29oai35LSWGvsUwyEdFTo,8477
115
- ai_edge_torch/generative/test/test_quantize.py,sha256=3SmJm7Kq98gAneU6IGwwJrJYCVH1qwWR6oUxPfb6qiI,5346
112
+ ai_edge_torch/generative/test/test_experimental_ekv.py,sha256=8qv_eVtJW9GPvBEf2hPQe3tpdJ33XShya6MCX1FqrZM,4355
113
+ ai_edge_torch/generative/test/test_loader.py,sha256=_y5EHGgoNOmCuYonsB81UJScHVsTAQXUVd44czMAw6k,3379
114
+ ai_edge_torch/generative/test/test_model_conversion.py,sha256=-RBTQSERP4szm8s8s_WRmGF3mWZA5E2w2QNtl2MqORw,8475
115
+ ai_edge_torch/generative/test/test_quantize.py,sha256=JEsk9SAkHK0SFm44K_quISc5yBBS6yvtBP1MDyFHdFw,5344
116
116
  ai_edge_torch/generative/utilities/__init__.py,sha256=-_jxnnFnCgnTU4oTm4MnRsvL5lqhomBNdFBbqfmfHPo,720
117
117
  ai_edge_torch/generative/utilities/loader.py,sha256=QFZ2lkeoYQ9MZ1CAFVxBHG4OT192SH74UtJCvbDsdeI,12727
118
118
  ai_edge_torch/generative/utilities/stable_diffusion_loader.py,sha256=pKp3AMSbS3otCvgwJRF5M1l4JRNKk-aCKimXzIMSrds,35679
@@ -122,14 +122,38 @@ ai_edge_torch/hlfb/mark_pattern/__init__.py,sha256=cjTprggj_cuktSCm7-A25e7Shop3k
122
122
  ai_edge_torch/hlfb/mark_pattern/passes.py,sha256=pjkKcI1nHECPluAt87cFBrt1DP0f3ge7rHq1NhCkBIE,1936
123
123
  ai_edge_torch/hlfb/mark_pattern/pattern.py,sha256=uiYRfzD1T8deCEAGfdAFusRbI41m14zeTt0Lz5lNT3M,9808
124
124
  ai_edge_torch/hlfb/test/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
125
- ai_edge_torch/hlfb/test/test_mark_pattern.py,sha256=e53YNSO2w7Sd9Y717jAr6WKjnXq34Tx_52hXRGtGs3A,4833
126
- ai_edge_torch/hlfb/test/test_stablehlo_composite_builder.py,sha256=7Qbba7GJCBc-J1TUwWIvrpBK0Hwza9nift7sKpW2YVE,8449
125
+ ai_edge_torch/hlfb/test/test_mark_pattern.py,sha256=ivq0eVjuf31idfNY0E12F4FxdkSI9hwYXapLJBkIf8Q,4831
126
+ ai_edge_torch/hlfb/test/test_stablehlo_composite_builder.py,sha256=j8WpeS-mz3Zr4I7p7NwanQzkQNeH0asZ7lz5y7twgQ4,8447
127
127
  ai_edge_torch/lowertools/__init__.py,sha256=A8WBXvWtuFYYWtNTqPD7waVntLaSVAnSMwx5ugjZBIw,761
128
128
  ai_edge_torch/lowertools/_shim.py,sha256=ilL7x1ebUBj1clg7bagrX4y_nVSHiGrvDrOVfuTeenE,3039
129
129
  ai_edge_torch/lowertools/common_utils.py,sha256=Z7p-ivOHtddktpnHrlDm_dSoTxJOdEjFXIGQbzjgwQo,4504
130
- ai_edge_torch/lowertools/odml_torch_utils.py,sha256=EA2ylE4abCyC1G3lYuNouPGx0lmwtIZe7c42dtX0-3g,7146
131
- ai_edge_torch/lowertools/test_utils.py,sha256=vsjaX3Ix2U1163jVUNSJgK9io2WNUtJjRvNFE9DrqF4,1932
130
+ ai_edge_torch/lowertools/odml_torch_utils.py,sha256=GKfW1X-QSFffQdVlBuD-bNpP265xcdUlfBY3-9I4f_o,7447
131
+ ai_edge_torch/lowertools/test_utils.py,sha256=bPgc2iXX16KYtMNvmsRdKfrCY6UJmcfitfCOvHoD7Oc,1930
132
132
  ai_edge_torch/lowertools/torch_xla_utils.py,sha256=-SRm9YNsIGsaVd5Cyp2PP-tdLBJH8EDoMFAa2y89a1w,9043
133
+ ai_edge_torch/odml_torch/__init__.py,sha256=S8jOzE9nLof-6es3XDiGJRN-9H_XTxsVm9dE7lD3RWo,812
134
+ ai_edge_torch/odml_torch/_torch_future.py,sha256=jSYHf1CMTJzMizPMbu2b39hAt0ZTR6gQLq67GMe9KTo,2336
135
+ ai_edge_torch/odml_torch/_torch_library.py,sha256=Lw1gqL2HWNRspdTwNhIkYAHDyafHedHtkXyKKxn-Wss,805
136
+ ai_edge_torch/odml_torch/export.py,sha256=hIGT-JKYbIa6e_G0AD-k4MSTIAMGdHC1hNHMn9CxsYw,10467
137
+ ai_edge_torch/odml_torch/export_utils.py,sha256=q84U69ZQ82hLXw-xncJ8IW-K71Xux-NWlzZTs7hdZWA,5127
138
+ ai_edge_torch/odml_torch/tf_integration.py,sha256=lTFJPPEijLPFmn6qq2jbpVTQOo0YaOTK36kK6rCiyIE,5956
139
+ ai_edge_torch/odml_torch/composite/__init__.py,sha256=71GM_gDZxJyo38ZSoYSwhZX3xKA9rknO93JS9kw9w_c,778
140
+ ai_edge_torch/odml_torch/composite/mark_tensor.py,sha256=U--rwl-XkWKgkdXCXDn6yySug8FR66o1YFUAIoSaWW4,3523
141
+ ai_edge_torch/odml_torch/composite/stablehlo_composite_builder.py,sha256=2Y52E_gLeoXpMcPpV-svXsgN3JbEIjnPVjm0xkpTUdQ,3319
142
+ ai_edge_torch/odml_torch/debuginfo/__init__.py,sha256=9ag6-WWRG50rPCtIV7OpIokEKu2YRyGlMZZqVPWUH6g,762
143
+ ai_edge_torch/odml_torch/debuginfo/_build.py,sha256=1xCXOs3-9UcsOyLFH0uyQwLu7c06iYFTo0NQ7Ckbl2I,1465
144
+ ai_edge_torch/odml_torch/debuginfo/_op_polyfill.py,sha256=IvOBQyROI9WHS3umHRxsDW-1YElU9BPWzKtJA2eKWOI,1739
145
+ ai_edge_torch/odml_torch/jax_bridge/__init__.py,sha256=Jco5zvejxuyl9xHQxZICAKbkgH7x38qPlwUUpD7S15Q,730
146
+ ai_edge_torch/odml_torch/jax_bridge/_wrap.py,sha256=hXvhKtbH7lGytm6QZOKpTmaLJN3kfENBcSIKQ39ReXA,5478
147
+ ai_edge_torch/odml_torch/jax_bridge/utils.py,sha256=T8isGc896VrHZ6c_L5pYmLpolQ7ibcOlgWfPuVFPzIg,2264
148
+ ai_edge_torch/odml_torch/lowerings/__init__.py,sha256=GqYk6oBJw7KWeG4_6gxSu_OvYhjJcC2FpGzWPPEdH6w,933
149
+ ai_edge_torch/odml_torch/lowerings/_basic.py,sha256=wV8AUK8dvjLUy3qjqw_IxpiYVDWUMPNZRfi3XYE_hDs,6972
150
+ ai_edge_torch/odml_torch/lowerings/_batch_norm.py,sha256=PaLI0BB6pdBW1VyfW8VTOT_Be-ZcqYdNOsyfzKfq8Cg,2064
151
+ ai_edge_torch/odml_torch/lowerings/_convolution.py,sha256=B6BILeu-UlwGB1O6g7111X1TaIFznsfxXrB72ygBsBA,3885
152
+ ai_edge_torch/odml_torch/lowerings/_jax_lowerings.py,sha256=I0Y4IK7Zap8m6xfxMw7DfQ9Mg4htKOoypdHVAMHqx9c,10669
153
+ ai_edge_torch/odml_torch/lowerings/context.py,sha256=jslcCv7r_HtImSRTxJwHAUV_QCu9Jub51lovmoBkmFA,1295
154
+ ai_edge_torch/odml_torch/lowerings/registry.py,sha256=dcnxq8vV9rxSQqXkjSg9it7l6oP_sdfH8kIZdQNkQ_4,2653
155
+ ai_edge_torch/odml_torch/lowerings/utils.py,sha256=NczqpsSd3Fn7yVcPC3qllemiZxxDAZgcW1T5l8-W9fE,5593
156
+ ai_edge_torch/odml_torch/passes/__init__.py,sha256=AVwIwUTMx7rXacKjGy4kwrtMd3XB2v_ncdc40KOjUqQ,1245
133
157
  ai_edge_torch/quantize/__init__.py,sha256=aB5dXot04bqyUhpsDFvxt9CIi15QAC4euvqOndJ0XLU,714
134
158
  ai_edge_torch/quantize/pt2e_quantizer.py,sha256=CKIEhs9jCcna64qj1jFH9zEbMbRdyeGV_TmSqEBPjes,15741
135
159
  ai_edge_torch/quantize/pt2e_quantizer_utils.py,sha256=eARD1LxLi5m7Z0n_psAkeX_AtUp4fNkE--oECBfivv4,36208
@@ -137,8 +161,8 @@ ai_edge_torch/quantize/quant_config.py,sha256=U0KisSW-uZkoMJcy-ZP9W57p3tsa594fr9
137
161
  ai_edge_torch/testing/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
138
162
  ai_edge_torch/testing/model_coverage/__init__.py,sha256=5P8J6Zk5YYtDvTBucFvB9NGSRI7Gw_24WnrbhXgycEE,765
139
163
  ai_edge_torch/testing/model_coverage/model_coverage.py,sha256=UPB448aMDUyC0HNYVqio2rcJPnDN0tBQMP08J6vPYew,4718
140
- ai_edge_torch_nightly-0.3.0.dev20240828.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
141
- ai_edge_torch_nightly-0.3.0.dev20240828.dist-info/METADATA,sha256=Q5exnNzCT4z8p2mh5MFKl7MgfezYvW0ebW9k4PW8jJo,1878
142
- ai_edge_torch_nightly-0.3.0.dev20240828.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
143
- ai_edge_torch_nightly-0.3.0.dev20240828.dist-info/top_level.txt,sha256=5KXRaF2hwkApYxf7Y8y_tVb9aulGTlbOoNdbx1aKRkE,14
144
- ai_edge_torch_nightly-0.3.0.dev20240828.dist-info/RECORD,,
164
+ ai_edge_torch_nightly-0.3.0.dev20240829.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
165
+ ai_edge_torch_nightly-0.3.0.dev20240829.dist-info/METADATA,sha256=LrexCNdY177vrp17WaGa53bxHH9vuZXT64O5by4HE6Y,1878
166
+ ai_edge_torch_nightly-0.3.0.dev20240829.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
167
+ ai_edge_torch_nightly-0.3.0.dev20240829.dist-info/top_level.txt,sha256=5KXRaF2hwkApYxf7Y8y_tVb9aulGTlbOoNdbx1aKRkE,14
168
+ ai_edge_torch_nightly-0.3.0.dev20240829.dist-info/RECORD,,