ai-edge-torch-nightly 0.3.0.dev20240905__py3-none-any.whl → 0.3.0.dev20240907__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- ai_edge_torch/_convert/fx_passes/optimize_layout_transposes_pass/layout_check.py +2 -0
- ai_edge_torch/_convert/fx_passes/optimize_layout_transposes_pass/layout_rewrite.py +2 -1
- ai_edge_torch/generative/layers/unet/blocks_2d.py +17 -15
- ai_edge_torch/generative/test/test_model_conversion.py +10 -12
- ai_edge_torch/generative/test/test_model_conversion_large.py +17 -17
- ai_edge_torch/odml_torch/export.py +3 -6
- ai_edge_torch/odml_torch/jax_bridge/_wrap.py +5 -7
- ai_edge_torch/odml_torch/lowerings/registry.py +8 -0
- ai_edge_torch/version.py +1 -1
- {ai_edge_torch_nightly-0.3.0.dev20240905.dist-info → ai_edge_torch_nightly-0.3.0.dev20240907.dist-info}/METADATA +1 -1
- {ai_edge_torch_nightly-0.3.0.dev20240905.dist-info → ai_edge_torch_nightly-0.3.0.dev20240907.dist-info}/RECORD +14 -14
- {ai_edge_torch_nightly-0.3.0.dev20240905.dist-info → ai_edge_torch_nightly-0.3.0.dev20240907.dist-info}/LICENSE +0 -0
- {ai_edge_torch_nightly-0.3.0.dev20240905.dist-info → ai_edge_torch_nightly-0.3.0.dev20240907.dist-info}/WHEEL +0 -0
- {ai_edge_torch_nightly-0.3.0.dev20240905.dist-info → ai_edge_torch_nightly-0.3.0.dev20240907.dist-info}/top_level.txt +0 -0
@@ -150,6 +150,7 @@ def _qdq_layout_sensitive_inputs_getter(node: Node):
|
|
150
150
|
# ==== Ops must be NHWC if possible
|
151
151
|
|
152
152
|
|
153
|
+
@layout_sensitive_inputs_getters.register(aten.conv2d)
|
153
154
|
@layout_sensitive_inputs_getters.register(aten.convolution)
|
154
155
|
@layout_sensitive_inputs_getters.register(
|
155
156
|
aten._native_batch_norm_legit_no_training
|
@@ -168,6 +169,7 @@ def _first_arg_getter(node):
|
|
168
169
|
@nhwcable_node_checkers.register(aten.upsample_bilinear2d)
|
169
170
|
@nhwcable_node_checkers.register(aten.upsample_nearest2d)
|
170
171
|
@nhwcable_node_checkers.register(aten._adaptive_avg_pool2d)
|
172
|
+
@nhwcable_node_checkers.register(aten.conv2d)
|
171
173
|
@nhwcable_node_checkers.register(aten.convolution)
|
172
174
|
def _all_layout_sensitive_inputs_are_4d_checker(node: Node):
|
173
175
|
can_be = all_layout_sensitive_inputs_are_4d(node)
|
@@ -229,11 +229,12 @@ def transpose_first_arg_rewriter(node: torch.fx.Node):
|
|
229
229
|
node.target = nhwc_op
|
230
230
|
|
231
231
|
|
232
|
+
@rewriters.register(aten.conv2d)
|
232
233
|
@rewriters.register(aten.convolution)
|
233
234
|
def _aten_convolution_rewriter(node: torch.fx.Node):
|
234
235
|
op = node.target
|
235
236
|
|
236
|
-
def conv_nhwc(input, weight, bias, *args, **kwargs):
|
237
|
+
def conv_nhwc(input, weight, bias=None, *args, **kwargs):
|
237
238
|
nonlocal op
|
238
239
|
nhwc_bias = None
|
239
240
|
if bias is not None and len(bias.shape) == 1:
|
@@ -145,14 +145,15 @@ class AttentionBlock2D(nn.Module):
|
|
145
145
|
x = x.view(B, C, H * W)
|
146
146
|
x = x.transpose(-1, -2)
|
147
147
|
else:
|
148
|
-
x =
|
149
|
-
x = x.transpose(-1, -2)
|
148
|
+
x = torch.permute(input_tensor, (0, 2, 3, 1))
|
150
149
|
x = self.norm(x)
|
150
|
+
x = x.view(B, H * W, C)
|
151
151
|
x = x.contiguous() # Prevent BATCH_MATMUL op in converted tflite.
|
152
152
|
x = self.attention(x)
|
153
|
-
x = x.
|
154
|
-
|
153
|
+
x = x.view(B, H, W, C)
|
154
|
+
residual = torch.permute(residual, (0, 2, 3, 1))
|
155
155
|
x = x + residual
|
156
|
+
x = torch.permute(x, (0, 3, 1, 2))
|
156
157
|
return x
|
157
158
|
|
158
159
|
|
@@ -206,13 +207,14 @@ class CrossAttentionBlock2D(nn.Module):
|
|
206
207
|
x = x.view(B, C, H * W)
|
207
208
|
x = x.transpose(-1, -2)
|
208
209
|
else:
|
209
|
-
x =
|
210
|
-
x = x.transpose(-1, -2)
|
210
|
+
x = torch.permute(input_tensor, (0, 2, 3, 1))
|
211
211
|
x = self.norm(x)
|
212
|
+
x = x.view(B, H * W, C)
|
212
213
|
x = self.attention(x, context_tensor)
|
213
|
-
x = x.
|
214
|
-
|
214
|
+
x = x.view(B, H, W, C)
|
215
|
+
residual = torch.permute(residual, (0, 2, 3, 1))
|
215
216
|
x = x + residual
|
217
|
+
x = torch.permute(x, (0, 3, 1, 2))
|
216
218
|
return x
|
217
219
|
|
218
220
|
|
@@ -250,17 +252,17 @@ class FeedForwardBlock2D(nn.Module):
|
|
250
252
|
x = x.view(B, C, H * W)
|
251
253
|
x = x.transpose(-1, -2)
|
252
254
|
else:
|
253
|
-
x =
|
254
|
-
x = x.transpose(-1, -2)
|
255
|
+
x = torch.permute(input_tensor, (0, 2, 3, 1))
|
255
256
|
x = self.norm(x)
|
257
|
+
x = x.view(B, H * W, C)
|
256
258
|
x = self.w1(x)
|
257
259
|
x = self.act(x)
|
258
260
|
x = self.w2(x)
|
259
|
-
|
260
|
-
|
261
|
-
x = x
|
262
|
-
|
263
|
-
return x
|
261
|
+
x = x.view(B, H, W, C)
|
262
|
+
residual = torch.permute(residual, (0, 2, 3, 1))
|
263
|
+
x = x + residual
|
264
|
+
x = torch.permute(x, (0, 3, 1, 2))
|
265
|
+
return x
|
264
266
|
|
265
267
|
|
266
268
|
class TransformerBlock2D(nn.Module):
|
@@ -129,6 +129,7 @@ class TestModelConversion(googletest.TestCase):
|
|
129
129
|
)
|
130
130
|
|
131
131
|
copied_model = copy.deepcopy(pytorch_model)
|
132
|
+
copied_edge = copy.deepcopy(edge_model)
|
132
133
|
|
133
134
|
self.assertTrue(
|
134
135
|
model_coverage.compare_tflite_torch(
|
@@ -140,18 +141,15 @@ class TestModelConversion(googletest.TestCase):
|
|
140
141
|
)
|
141
142
|
)
|
142
143
|
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
num_valid_inputs=1,
|
153
|
-
)
|
154
|
-
)
|
144
|
+
self.assertTrue(
|
145
|
+
model_coverage.compare_tflite_torch(
|
146
|
+
copied_edge,
|
147
|
+
copied_model,
|
148
|
+
(decode_token, decode_input_pos),
|
149
|
+
signature_name="decode",
|
150
|
+
num_valid_inputs=1,
|
151
|
+
)
|
152
|
+
)
|
155
153
|
|
156
154
|
|
157
155
|
if __name__ == "__main__":
|
@@ -82,28 +82,28 @@ class TestModelConversion(googletest.TestCase):
|
|
82
82
|
model.eval()
|
83
83
|
|
84
84
|
idx = torch.from_numpy(np.array([[1, 2, 3, 4]]))
|
85
|
-
|
86
|
-
|
87
|
-
|
85
|
+
prefill_tokens = torch.full((1, 10), 0, dtype=torch.long, device="cpu")
|
86
|
+
prefill_tokens[0, :4] = idx
|
87
|
+
prefill_input_pos = torch.arange(0, 10)
|
88
88
|
|
89
|
-
edge_model = ai_edge_torch.
|
89
|
+
edge_model = ai_edge_torch.signature(
|
90
|
+
"prefill", model, (prefill_tokens, prefill_input_pos)
|
91
|
+
).convert()
|
90
92
|
edge_model.set_interpreter_builder(
|
91
93
|
self._interpreter_builder(edge_model.tflite_model())
|
92
94
|
)
|
93
95
|
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
)
|
106
|
-
)
|
96
|
+
self.assertTrue(
|
97
|
+
model_coverage.compare_tflite_torch(
|
98
|
+
edge_model,
|
99
|
+
model,
|
100
|
+
(prefill_tokens, prefill_input_pos),
|
101
|
+
signature_name="prefill",
|
102
|
+
num_valid_inputs=1,
|
103
|
+
atol=1e-2,
|
104
|
+
rtol=1e-5,
|
105
|
+
)
|
106
|
+
)
|
107
107
|
|
108
108
|
@googletest.skipIf(
|
109
109
|
ai_edge_config.Config.use_torch_xla,
|
@@ -227,12 +227,9 @@ def exported_program_to_mlir(
|
|
227
227
|
exported_program: torch.export.ExportedProgram,
|
228
228
|
) -> MlirLowered:
|
229
229
|
"""Lower the exported program to MLIR."""
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
exported_program = exported_program.run_decompositions(
|
234
|
-
lowerings.decompositions()
|
235
|
-
)
|
230
|
+
exported_program = exported_program.run_decompositions(
|
231
|
+
lowerings.decompositions()
|
232
|
+
)
|
236
233
|
|
237
234
|
with export_utils.create_ir_context() as context, ir.Location.unknown():
|
238
235
|
|
@@ -35,7 +35,7 @@ jax.config.update("jax_enable_x64", True)
|
|
35
35
|
|
36
36
|
def _lower_to_ir_text(
|
37
37
|
jaxfn, args, kwargs, ir_input_names: list[str] = None
|
38
|
-
) -> str:
|
38
|
+
) -> tuple[str, list[ir.Value]]:
|
39
39
|
args = utils.tree_map_list_to_tuple(args)
|
40
40
|
kwargs = utils.tree_map_list_to_tuple(kwargs)
|
41
41
|
|
@@ -74,7 +74,9 @@ def _lower_to_ir_text(
|
|
74
74
|
x for x in pytree.tree_flatten(arg)[0] if isinstance(x, ir.Value)
|
75
75
|
]
|
76
76
|
|
77
|
-
def
|
77
|
+
def lower_wrapper(*args):
|
78
|
+
nonlocal jax_lower_static_kwargs
|
79
|
+
|
78
80
|
jaxfn_args = []
|
79
81
|
jaxfn_kwargs = jax_lower_static_kwargs.copy()
|
80
82
|
for name, arg in zip(jax_lower_argnames, args):
|
@@ -85,11 +87,7 @@ def _lower_to_ir_text(
|
|
85
87
|
|
86
88
|
return jaxfn(*jaxfn_args, **jaxfn_kwargs)
|
87
89
|
|
88
|
-
return (
|
89
|
-
jax.jit(new_lowering, static_argnames=static_argnames)
|
90
|
-
.lower(*jax_lower_args, **jax_lower_static_kwargs)
|
91
|
-
.as_text()
|
92
|
-
), ir_inputs
|
90
|
+
return jax.jit(lower_wrapper).lower(*jax_lower_args).as_text(), ir_inputs
|
93
91
|
|
94
92
|
|
95
93
|
def wrap(jaxfn: Callable[Any, Any], ir_input_names: list[str] = None):
|
@@ -52,6 +52,7 @@ class LoweringRegistry:
|
|
52
52
|
|
53
53
|
|
54
54
|
global_registry = LoweringRegistry()
|
55
|
+
global_registry.decompositions.update(torch._decomp.core_aten_decompositions())
|
55
56
|
global_registry.decompositions.update(
|
56
57
|
torch._decomp.get_decompositions([
|
57
58
|
torch.ops.aten.upsample_nearest2d,
|
@@ -70,6 +71,13 @@ global_registry.decompositions.update(
|
|
70
71
|
])
|
71
72
|
)
|
72
73
|
|
74
|
+
torch._decomp.remove_decompositions(
|
75
|
+
global_registry.decompositions,
|
76
|
+
[
|
77
|
+
torch.ops.aten.roll,
|
78
|
+
],
|
79
|
+
)
|
80
|
+
|
73
81
|
|
74
82
|
def lookup(op):
|
75
83
|
return global_registry.lookup(op)
|
ai_edge_torch/version.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ai-edge-torch-nightly
|
3
|
-
Version: 0.3.0.
|
3
|
+
Version: 0.3.0.dev20240907
|
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=NYV6Mkaje_ditIEI_s_7nLP_-8i4kbGM8nRzieVkbUI,5397
|
5
|
-
ai_edge_torch/version.py,sha256
|
5
|
+
ai_edge_torch/version.py,sha256=pQgmS3BarUzNDVxExEG0ccDuH-AMzZyUcHAicmV8rnM,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
|
@@ -16,9 +16,9 @@ ai_edge_torch/_convert/fx_passes/build_interpolate_composite_pass.py,sha256=izep
|
|
16
16
|
ai_edge_torch/_convert/fx_passes/canonicalize_pass.py,sha256=8jcKqWzG7p5r3Cu7DXNP-4o4X2bqLaoXY7N6W8QsZXo,1582
|
17
17
|
ai_edge_torch/_convert/fx_passes/inject_mlir_debuginfo_pass.py,sha256=WKI8V9-V50agkiNVpBFWWp0BEpUfemdENuN1cEaGD-g,2370
|
18
18
|
ai_edge_torch/_convert/fx_passes/optimize_layout_transposes_pass/__init__.py,sha256=lxnoH-WGLeiQIF8XjMGodjiZEFTxucl7g05N7MR9OPk,796
|
19
|
-
ai_edge_torch/_convert/fx_passes/optimize_layout_transposes_pass/layout_check.py,sha256=
|
19
|
+
ai_edge_torch/_convert/fx_passes/optimize_layout_transposes_pass/layout_check.py,sha256=hDsl9AHzmyuSWsdHOSO114l4nBUgUdAOUWafMTipMgA,7629
|
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=
|
21
|
+
ai_edge_torch/_convert/fx_passes/optimize_layout_transposes_pass/layout_rewrite.py,sha256=NW37V6QYdPOZOVhqLcmssVk-VAeO4ECk_CrbEBh4B0E,12740
|
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
|
@@ -96,7 +96,7 @@ ai_edge_torch/generative/layers/normalization.py,sha256=u8lv0p-ktKcRqCDlOqZQa9WQ
|
|
96
96
|
ai_edge_torch/generative/layers/rotary_position_embedding.py,sha256=CZqOoibLcHvUgrgaIIWAlmk3XgE2inzx340MN-npLoU,1347
|
97
97
|
ai_edge_torch/generative/layers/scaled_dot_product_attention.py,sha256=VW-VP8e7FTSPCdu-6DVxpwNrIdgX0R_kq6F6MSEiyXE,3848
|
98
98
|
ai_edge_torch/generative/layers/unet/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
|
99
|
-
ai_edge_torch/generative/layers/unet/blocks_2d.py,sha256=
|
99
|
+
ai_edge_torch/generative/layers/unet/blocks_2d.py,sha256=V4zUAqjWeBseMPG9B-93LDv1LM3Dds6Q-H0NxY0koSA,27212
|
100
100
|
ai_edge_torch/generative/layers/unet/builder.py,sha256=zAqWXdimmMrQRhmE_t9XkS68mh6PSrzwb-2NZZXrR5I,1901
|
101
101
|
ai_edge_torch/generative/layers/unet/model_config.py,sha256=NvBJj09a7ZC-ChGE_ex-_kLnE_fjzrY6txbLSh1pMKA,9208
|
102
102
|
ai_edge_torch/generative/quantize/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
|
@@ -109,8 +109,8 @@ ai_edge_torch/generative/quantize/supported_schemes.py,sha256=FjdycEOvxRgBmQdZVu
|
|
109
109
|
ai_edge_torch/generative/test/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
|
110
110
|
ai_edge_torch/generative/test/test_experimental_ekv.py,sha256=8qv_eVtJW9GPvBEf2hPQe3tpdJ33XShya6MCX1FqrZM,4355
|
111
111
|
ai_edge_torch/generative/test/test_loader.py,sha256=_y5EHGgoNOmCuYonsB81UJScHVsTAQXUVd44czMAw6k,3379
|
112
|
-
ai_edge_torch/generative/test/test_model_conversion.py,sha256=
|
113
|
-
ai_edge_torch/generative/test/test_model_conversion_large.py,sha256=
|
112
|
+
ai_edge_torch/generative/test/test_model_conversion.py,sha256=b3InJ8Rx03YtHpE9h-j0pSXAY1cCf-dLlx4Y5LSJnRQ,5174
|
113
|
+
ai_edge_torch/generative/test/test_model_conversion_large.py,sha256=9JXcd-rX8MpsYeEWUFEXf783GOwYOLY64KzDfFdmRJ8,4484
|
114
114
|
ai_edge_torch/generative/test/test_quantize.py,sha256=kY_NRpF-v1i4clqI1CFFWEagJv-5PzBDkeJ2fInl9_w,5913
|
115
115
|
ai_edge_torch/generative/utilities/__init__.py,sha256=-_jxnnFnCgnTU4oTm4MnRsvL5lqhomBNdFBbqfmfHPo,720
|
116
116
|
ai_edge_torch/generative/utilities/loader.py,sha256=6J0aAP6-6LySeqeYIHKcchr5T9cVtSO34aoDr3V9gxY,12726
|
@@ -133,7 +133,7 @@ ai_edge_torch/lowertools/translate_recipe.py,sha256=DNzD0VD35YZDqiZjAF1IyIPSzUGP
|
|
133
133
|
ai_edge_torch/odml_torch/__init__.py,sha256=S8jOzE9nLof-6es3XDiGJRN-9H_XTxsVm9dE7lD3RWo,812
|
134
134
|
ai_edge_torch/odml_torch/_torch_future.py,sha256=jSYHf1CMTJzMizPMbu2b39hAt0ZTR6gQLq67GMe9KTo,2336
|
135
135
|
ai_edge_torch/odml_torch/_torch_library.py,sha256=Lw1gqL2HWNRspdTwNhIkYAHDyafHedHtkXyKKxn-Wss,805
|
136
|
-
ai_edge_torch/odml_torch/export.py,sha256=
|
136
|
+
ai_edge_torch/odml_torch/export.py,sha256=_n43AlaTLvAK6r1szs47gSBqp-x19ZNCNtyFIWzuE4Q,10322
|
137
137
|
ai_edge_torch/odml_torch/export_utils.py,sha256=q84U69ZQ82hLXw-xncJ8IW-K71Xux-NWlzZTs7hdZWA,5127
|
138
138
|
ai_edge_torch/odml_torch/tf_integration.py,sha256=lTFJPPEijLPFmn6qq2jbpVTQOo0YaOTK36kK6rCiyIE,5956
|
139
139
|
ai_edge_torch/odml_torch/composite/__init__.py,sha256=71GM_gDZxJyo38ZSoYSwhZX3xKA9rknO93JS9kw9w_c,778
|
@@ -143,7 +143,7 @@ ai_edge_torch/odml_torch/debuginfo/__init__.py,sha256=9ag6-WWRG50rPCtIV7OpIokEKu
|
|
143
143
|
ai_edge_torch/odml_torch/debuginfo/_build.py,sha256=1xCXOs3-9UcsOyLFH0uyQwLu7c06iYFTo0NQ7Ckbl2I,1465
|
144
144
|
ai_edge_torch/odml_torch/debuginfo/_op_polyfill.py,sha256=IvOBQyROI9WHS3umHRxsDW-1YElU9BPWzKtJA2eKWOI,1739
|
145
145
|
ai_edge_torch/odml_torch/jax_bridge/__init__.py,sha256=Jco5zvejxuyl9xHQxZICAKbkgH7x38qPlwUUpD7S15Q,730
|
146
|
-
ai_edge_torch/odml_torch/jax_bridge/_wrap.py,sha256=
|
146
|
+
ai_edge_torch/odml_torch/jax_bridge/_wrap.py,sha256=drN3L0uTsSjkluKgt6Ngq7b5HLReE_7iAitHpZ9PKqE,5428
|
147
147
|
ai_edge_torch/odml_torch/jax_bridge/utils.py,sha256=T8isGc896VrHZ6c_L5pYmLpolQ7ibcOlgWfPuVFPzIg,2264
|
148
148
|
ai_edge_torch/odml_torch/lowerings/__init__.py,sha256=GqYk6oBJw7KWeG4_6gxSu_OvYhjJcC2FpGzWPPEdH6w,933
|
149
149
|
ai_edge_torch/odml_torch/lowerings/_basic.py,sha256=wV8AUK8dvjLUy3qjqw_IxpiYVDWUMPNZRfi3XYE_hDs,6972
|
@@ -151,7 +151,7 @@ ai_edge_torch/odml_torch/lowerings/_batch_norm.py,sha256=PaLI0BB6pdBW1VyfW8VTOT_
|
|
151
151
|
ai_edge_torch/odml_torch/lowerings/_convolution.py,sha256=B6BILeu-UlwGB1O6g7111X1TaIFznsfxXrB72ygBsBA,3885
|
152
152
|
ai_edge_torch/odml_torch/lowerings/_jax_lowerings.py,sha256=I0Y4IK7Zap8m6xfxMw7DfQ9Mg4htKOoypdHVAMHqx9c,10669
|
153
153
|
ai_edge_torch/odml_torch/lowerings/context.py,sha256=jslcCv7r_HtImSRTxJwHAUV_QCu9Jub51lovmoBkmFA,1295
|
154
|
-
ai_edge_torch/odml_torch/lowerings/registry.py,sha256=
|
154
|
+
ai_edge_torch/odml_torch/lowerings/registry.py,sha256=ES3x_RJ22T5rlmMrlomex2DdcZbhlyVJ7_HS3rjz3Uk,2851
|
155
155
|
ai_edge_torch/odml_torch/lowerings/utils.py,sha256=NczqpsSd3Fn7yVcPC3qllemiZxxDAZgcW1T5l8-W9fE,5593
|
156
156
|
ai_edge_torch/odml_torch/passes/__init__.py,sha256=AVwIwUTMx7rXacKjGy4kwrtMd3XB2v_ncdc40KOjUqQ,1245
|
157
157
|
ai_edge_torch/quantize/__init__.py,sha256=aB5dXot04bqyUhpsDFvxt9CIi15QAC4euvqOndJ0XLU,714
|
@@ -161,8 +161,8 @@ ai_edge_torch/quantize/quant_config.py,sha256=U0KisSW-uZkoMJcy-ZP9W57p3tsa594fr9
|
|
161
161
|
ai_edge_torch/testing/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
|
162
162
|
ai_edge_torch/testing/model_coverage/__init__.py,sha256=5P8J6Zk5YYtDvTBucFvB9NGSRI7Gw_24WnrbhXgycEE,765
|
163
163
|
ai_edge_torch/testing/model_coverage/model_coverage.py,sha256=UPB448aMDUyC0HNYVqio2rcJPnDN0tBQMP08J6vPYew,4718
|
164
|
-
ai_edge_torch_nightly-0.3.0.
|
165
|
-
ai_edge_torch_nightly-0.3.0.
|
166
|
-
ai_edge_torch_nightly-0.3.0.
|
167
|
-
ai_edge_torch_nightly-0.3.0.
|
168
|
-
ai_edge_torch_nightly-0.3.0.
|
164
|
+
ai_edge_torch_nightly-0.3.0.dev20240907.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
165
|
+
ai_edge_torch_nightly-0.3.0.dev20240907.dist-info/METADATA,sha256=-lRFDIk_OKsuEbhfUevs6X4lJTVxABcuKc-IAs0vj04,1859
|
166
|
+
ai_edge_torch_nightly-0.3.0.dev20240907.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
|
167
|
+
ai_edge_torch_nightly-0.3.0.dev20240907.dist-info/top_level.txt,sha256=5KXRaF2hwkApYxf7Y8y_tVb9aulGTlbOoNdbx1aKRkE,14
|
168
|
+
ai_edge_torch_nightly-0.3.0.dev20240907.dist-info/RECORD,,
|
File without changes
|
File without changes
|