ai-edge-torch-nightly 0.2.0.dev20240606__py3-none-any.whl → 0.2.0.dev20240609__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 (20) hide show
  1. ai_edge_torch/convert/conversion.py +2 -2
  2. ai_edge_torch/convert/fx_passes/__init__.py +1 -1
  3. ai_edge_torch/convert/fx_passes/{build_upsample_bilinear2d_composite_pass.py → build_interpolate_composite_pass.py} +22 -1
  4. ai_edge_torch/generative/examples/stable_diffusion/convert_to_tflite.py +8 -4
  5. ai_edge_torch/generative/examples/stable_diffusion/decoder.py +275 -82
  6. ai_edge_torch/generative/examples/stable_diffusion/encoder.py +54 -3
  7. ai_edge_torch/generative/layers/attention.py +25 -0
  8. ai_edge_torch/generative/layers/builder.py +4 -2
  9. ai_edge_torch/generative/layers/model_config.py +3 -0
  10. ai_edge_torch/generative/layers/unet/__init__.py +14 -0
  11. ai_edge_torch/generative/layers/unet/blocks_2d.py +287 -0
  12. ai_edge_torch/generative/layers/unet/builder.py +29 -0
  13. ai_edge_torch/generative/layers/unet/model_config.py +117 -0
  14. ai_edge_torch/generative/utilities/autoencoder_loader.py +298 -0
  15. ai_edge_torch/generative/utilities/loader.py +7 -5
  16. {ai_edge_torch_nightly-0.2.0.dev20240606.dist-info → ai_edge_torch_nightly-0.2.0.dev20240609.dist-info}/METADATA +1 -1
  17. {ai_edge_torch_nightly-0.2.0.dev20240606.dist-info → ai_edge_torch_nightly-0.2.0.dev20240609.dist-info}/RECORD +20 -15
  18. {ai_edge_torch_nightly-0.2.0.dev20240606.dist-info → ai_edge_torch_nightly-0.2.0.dev20240609.dist-info}/LICENSE +0 -0
  19. {ai_edge_torch_nightly-0.2.0.dev20240606.dist-info → ai_edge_torch_nightly-0.2.0.dev20240609.dist-info}/WHEEL +0 -0
  20. {ai_edge_torch_nightly-0.2.0.dev20240606.dist-info → ai_edge_torch_nightly-0.2.0.dev20240609.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,298 @@
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
+ from typing import Dict, List, Tuple
18
+
19
+ import torch
20
+
21
+ import ai_edge_torch.generative.layers.model_config as layers_config
22
+ import ai_edge_torch.generative.layers.unet.model_config as unet_config
23
+ import ai_edge_torch.generative.utilities.loader as loader
24
+
25
+
26
+ @dataclass
27
+ class ResidualBlockTensorNames:
28
+ norm_1: str = None
29
+ conv_1: str = None
30
+ norm_2: str = None
31
+ conv_2: str = None
32
+ residual_layer: str = None
33
+
34
+
35
+ @dataclass
36
+ class AttnetionBlockTensorNames:
37
+ norm: str = None
38
+ fused_qkv_proj: str = None
39
+ output_proj: str = None
40
+
41
+
42
+ @dataclass
43
+ class MidBlockTensorNames:
44
+ residual_block_tensor_names: List[ResidualBlockTensorNames]
45
+ attention_block_tensor_names: List[AttnetionBlockTensorNames]
46
+
47
+
48
+ @dataclass
49
+ class UpDecoderBlockTensorNames:
50
+ residual_block_tensor_names: List[ResidualBlockTensorNames]
51
+ upsample_conv: str = None
52
+
53
+
54
+ def _map_to_converted_state(
55
+ state: Dict[str, torch.Tensor],
56
+ state_param: str,
57
+ converted_state: Dict[str, torch.Tensor],
58
+ converted_state_param: str,
59
+ ):
60
+ converted_state[f"{converted_state_param}.weight"] = state.pop(
61
+ f"{state_param}.weight"
62
+ )
63
+ if f"{state_param}.bias" in state:
64
+ converted_state[f"{converted_state_param}.bias"] = state.pop(f"{state_param}.bias")
65
+
66
+
67
+ class AutoEncoderModelLoader(loader.ModelLoader):
68
+
69
+ @dataclass
70
+ class TensorNames:
71
+ quant_conv: str = None
72
+ post_quant_conv: str = None
73
+ conv_in: str = None
74
+ conv_out: str = None
75
+ final_norm: str = None
76
+ mid_block_tensor_names: MidBlockTensorNames = None
77
+ up_decoder_blocks_tensor_names: List[UpDecoderBlockTensorNames] = None
78
+
79
+ def __init__(self, file_name: str, names: TensorNames):
80
+ """AutoEncoderModelLoader constructor. Can be used to load encoder and decoder models.
81
+
82
+ Args:
83
+ file_name (str): Path to the checkpoint. Can be a directory or an
84
+ exact file.
85
+ names (TensorNames): An instance of `TensorNames` to determine mappings.
86
+ """
87
+ self._file_name = file_name
88
+ self._names = names
89
+ self._loader = self._get_loader()
90
+
91
+ def load(
92
+ self, model: torch.nn.Module, strict: bool = True
93
+ ) -> Tuple[List[str], List[str]]:
94
+ """Load the model from the checkpoint.
95
+
96
+ Args:
97
+ model (torch.nn.Module): The pytorch model that needs to be loaded.
98
+ strict (bool, optional): Whether the converted keys are strictly
99
+ matched. Defaults to True.
100
+
101
+ Returns:
102
+ missing_keys (List[str]): a list of str containing the missing keys.
103
+ unexpected_keys (List[str]): a list of str containing the unexpected keys.
104
+
105
+ Raises:
106
+ ValueError: If conversion results in unmapped tensors and strict mode is
107
+ enabled.
108
+ """
109
+ state = self._loader(self._file_name)
110
+ converted_state = dict()
111
+ if self._names.quant_conv is not None:
112
+ _map_to_converted_state(
113
+ state, self._names.quant_conv, converted_state, "quant_conv"
114
+ )
115
+ if self._names.post_quant_conv is not None:
116
+ _map_to_converted_state(
117
+ state, self._names.post_quant_conv, converted_state, "post_quant_conv"
118
+ )
119
+ if self._names.conv_in is not None:
120
+ _map_to_converted_state(state, self._names.conv_in, converted_state, "conv_in")
121
+ if self._names.conv_out is not None:
122
+ _map_to_converted_state(state, self._names.conv_out, converted_state, "conv_out")
123
+ if self._names.final_norm is not None:
124
+ _map_to_converted_state(
125
+ state, self._names.final_norm, converted_state, "final_norm"
126
+ )
127
+ self._map_mid_block(
128
+ state,
129
+ converted_state,
130
+ model.config.mid_block_config,
131
+ self._names.mid_block_tensor_names,
132
+ )
133
+
134
+ reversed_block_out_channels = list(reversed(model.config.block_out_channels))
135
+ block_out_channels = reversed_block_out_channels[0]
136
+ for i, out_channels in enumerate(reversed_block_out_channels):
137
+ prev_output_channel = block_out_channels
138
+ block_out_channels = out_channels
139
+ not_final_block = i < len(reversed_block_out_channels) - 1
140
+ self._map_up_decoder_block(
141
+ state,
142
+ converted_state,
143
+ f"up_decoder_blocks.{i}",
144
+ unet_config.UpDecoderBlock2DConfig(
145
+ in_channels=prev_output_channel,
146
+ out_channels=block_out_channels,
147
+ normalization_config=model.config.normalization_config,
148
+ activation_type=model.config.activation_type,
149
+ num_layers=model.config.layers_per_block,
150
+ add_upsample=not_final_block,
151
+ upsample_conv=True,
152
+ ),
153
+ self._names.up_decoder_blocks_tensor_names[i],
154
+ )
155
+ if strict and state:
156
+ raise ValueError(
157
+ f"Failed to map all tensor. Remaing tensor are: {list(state.keys())}"
158
+ )
159
+ return model.load_state_dict(converted_state, strict=strict)
160
+
161
+ def _map_residual_block(
162
+ self,
163
+ state: Dict[str, torch.Tensor],
164
+ converted_state: Dict[str, torch.Tensor],
165
+ tensor_names: ResidualBlockTensorNames,
166
+ converted_state_param_prefix: str,
167
+ config: unet_config.ResidualBlock2DConfig,
168
+ ):
169
+ _map_to_converted_state(
170
+ state,
171
+ tensor_names.norm_1,
172
+ converted_state,
173
+ f"{converted_state_param_prefix}.norm_1",
174
+ )
175
+ _map_to_converted_state(
176
+ state,
177
+ tensor_names.conv_1,
178
+ converted_state,
179
+ f"{converted_state_param_prefix}.conv_1",
180
+ )
181
+ _map_to_converted_state(
182
+ state,
183
+ tensor_names.norm_2,
184
+ converted_state,
185
+ f"{converted_state_param_prefix}.norm_2",
186
+ )
187
+ _map_to_converted_state(
188
+ state,
189
+ tensor_names.conv_2,
190
+ converted_state,
191
+ f"{converted_state_param_prefix}.conv_2",
192
+ )
193
+ if config.in_channels != config.out_channels:
194
+ _map_to_converted_state(
195
+ state,
196
+ tensor_names.residual_layer,
197
+ converted_state,
198
+ f"{converted_state_param_prefix}.residual_layer",
199
+ )
200
+
201
+ def _map_attention_block(
202
+ self,
203
+ state: Dict[str, torch.Tensor],
204
+ converted_state: Dict[str, torch.Tensor],
205
+ tensor_names: AttnetionBlockTensorNames,
206
+ converted_state_param_prefix: str,
207
+ config: unet_config.AttentionBlock2DConfig,
208
+ ):
209
+ if config.normalization_config.type != layers_config.NormalizationType.NONE:
210
+ _map_to_converted_state(
211
+ state,
212
+ tensor_names.norm,
213
+ converted_state,
214
+ f"{converted_state_param_prefix}.norm",
215
+ )
216
+ attention_layer_prefix = f"{converted_state_param_prefix}.attention"
217
+ _map_to_converted_state(
218
+ state,
219
+ tensor_names.fused_qkv_proj,
220
+ converted_state,
221
+ f"{attention_layer_prefix}.qkv_projection",
222
+ )
223
+ _map_to_converted_state(
224
+ state,
225
+ tensor_names.output_proj,
226
+ converted_state,
227
+ f"{attention_layer_prefix}.output_projection",
228
+ )
229
+
230
+ def _map_mid_block(
231
+ self,
232
+ state: Dict[str, torch.Tensor],
233
+ converted_state: Dict[str, torch.Tensor],
234
+ config: unet_config.MidBlock2DConfig,
235
+ tensor_names: MidBlockTensorNames,
236
+ ):
237
+ converted_state_param_prefix = "mid_block"
238
+ residual_block_config = unet_config.ResidualBlock2DConfig(
239
+ in_channels=config.in_channels,
240
+ out_channels=config.in_channels,
241
+ time_embedding_channels=config.time_embedding_channels,
242
+ normalization_config=config.normalization_config,
243
+ activation_type=config.activation_type,
244
+ )
245
+ self._map_residual_block(
246
+ state,
247
+ converted_state,
248
+ tensor_names.residual_block_tensor_names[0],
249
+ f"{converted_state_param_prefix}.resnets.0",
250
+ residual_block_config,
251
+ )
252
+ for i in range(config.num_layers):
253
+ if config.attention_block_config:
254
+ self._map_attention_block(
255
+ state,
256
+ converted_state,
257
+ tensor_names.attention_block_tensor_names[i],
258
+ f"{converted_state_param_prefix}.attentions.{i}",
259
+ config.attention_block_config,
260
+ )
261
+ self._map_residual_block(
262
+ state,
263
+ converted_state,
264
+ tensor_names.residual_block_tensor_names[i + 1],
265
+ f"{converted_state_param_prefix}.resnets.{i+1}",
266
+ residual_block_config,
267
+ )
268
+
269
+ def _map_up_decoder_block(
270
+ self,
271
+ state: Dict[str, torch.Tensor],
272
+ converted_state: Dict[str, torch.Tensor],
273
+ converted_state_param_prefix: str,
274
+ config: unet_config.UpDecoderBlock2DConfig,
275
+ tensor_names: UpDecoderBlockTensorNames,
276
+ ):
277
+ for i in range(config.num_layers):
278
+ input_channels = config.in_channels if i == 0 else config.out_channels
279
+ self._map_residual_block(
280
+ state,
281
+ converted_state,
282
+ tensor_names.residual_block_tensor_names[i],
283
+ f"{converted_state_param_prefix}.resnets.{i}",
284
+ unet_config.ResidualBlock2DConfig(
285
+ in_channels=input_channels,
286
+ out_channels=config.out_channels,
287
+ time_embedding_channels=config.time_embedding_channels,
288
+ normalization_config=config.normalization_config,
289
+ activation_type=config.activation_type,
290
+ ),
291
+ )
292
+ if config.add_upsample and config.upsample_conv:
293
+ _map_to_converted_state(
294
+ state,
295
+ tensor_names.upsample_conv,
296
+ converted_state,
297
+ f"{converted_state_param_prefix}.upsample_conv",
298
+ )
@@ -16,7 +16,7 @@
16
16
  from dataclasses import dataclass
17
17
  import glob
18
18
  import os
19
- from typing import Callable, Dict
19
+ from typing import Callable, Dict, List, Tuple
20
20
 
21
21
  from safetensors import safe_open
22
22
  import torch
@@ -129,8 +129,10 @@ class ModelLoader:
129
129
  self._names = names
130
130
  self._loader = self._get_loader()
131
131
 
132
- def load(self, model: torch.nn.Module, strict: bool = True):
133
- """Load the model from the checkpoint
132
+ def load(
133
+ self, model: torch.nn.Module, strict: bool = True
134
+ ) -> Tuple[List[str], List[str]]:
135
+ """Load the model from the checkpoint.
134
136
 
135
137
  Args:
136
138
  model (torch.nn.Module): The pytorch model that needs to be loaded.
@@ -138,8 +140,8 @@ class ModelLoader:
138
140
  matched. Defaults to True.
139
141
 
140
142
  Returns:
141
- missing_keys (List[str]): a list of str containing the missing keys
142
- unexpected_keys (List[str]): a list of str containing the unexpected keys
143
+ missing_keys (List[str]): a list of str containing the missing keys.
144
+ unexpected_keys (List[str]): a list of str containing the unexpected keys.
143
145
 
144
146
  Raises:
145
147
  ValueError: If conversion results in unmapped tensors and strict mode is
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ai-edge-torch-nightly
3
- Version: 0.2.0.dev20240606
3
+ Version: 0.2.0.dev20240609
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,13 +1,13 @@
1
1
  ai_edge_torch/__init__.py,sha256=FPMmuFU3pyMREtjB_san1fy_0PFtAsgA0VZfOYvDrb4,1008
2
2
  ai_edge_torch/model.py,sha256=kmcgELjsYl8YzF8nUF6P7q4i8MWS-pLGpfsy-yTUXmE,4243
3
3
  ai_edge_torch/convert/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
4
- ai_edge_torch/convert/conversion.py,sha256=OlqiB17iTXBxUWX0LX4OU8OmZzLP94STk66LR-QF_V8,4043
4
+ ai_edge_torch/convert/conversion.py,sha256=GN2Js232u_5Y118wg3qIfEoYewxbxLl3TpSnO6osi8c,4029
5
5
  ai_edge_torch/convert/conversion_utils.py,sha256=NpVm3Ms81_cIW5IYgGsr0BVganJJgBKWVBDe5h_ZaGE,11021
6
6
  ai_edge_torch/convert/converter.py,sha256=bjj5TV5_g4sGyuSh8ThEDydlNMqhkGSY4SzXK6vwhqI,6927
7
- ai_edge_torch/convert/fx_passes/__init__.py,sha256=Ll2nNwufjcV5nSruQPXiloq7F1E7pWJ2T5clXmy1lk8,2825
7
+ ai_edge_torch/convert/fx_passes/__init__.py,sha256=EPs4PSIDLuRH5EBETi6deaOvaaf_Q4xD3_9NVcR7x8o,2810
8
8
  ai_edge_torch/convert/fx_passes/_pass_base.py,sha256=ijVyDclPnd6a0DWWUJkwR4igj6f82S-cE1-83QGPvgw,1652
9
9
  ai_edge_torch/convert/fx_passes/build_aten_composite_pass.py,sha256=2yqUwJJ2R233_X9FNMOP9oYRTTzH34TR_BIUj-wfnKw,7080
10
- ai_edge_torch/convert/fx_passes/build_upsample_bilinear2d_composite_pass.py,sha256=76XYoIlFDgrzp5QemoaEalPFcEbfszkEH_PLvO1ASCk,2607
10
+ ai_edge_torch/convert/fx_passes/build_interpolate_composite_pass.py,sha256=jB27GlDC8x36nn35aiq97uKERiq4KXSUZ7tv7yc0Gl4,3223
11
11
  ai_edge_torch/convert/fx_passes/canonicalize_pass.py,sha256=UX6dJsxCqSkftXXvNBV-i7Bjk6H7qTyqzUnE640Itfg,1673
12
12
  ai_edge_torch/convert/fx_passes/inject_mlir_debuginfo_pass.py,sha256=aRT8hTS3n9ie28lgu6mygtFO6Ypwu0qjNb0c81v9HLs,2448
13
13
  ai_edge_torch/convert/fx_passes/optimize_layout_transposes_pass/__init__.py,sha256=VA9bekxPVhLk4MYlIRXnOzrSnbCtUmGj7OQ_fJcKQtc,795
@@ -41,10 +41,10 @@ ai_edge_torch/generative/examples/phi2/phi2.py,sha256=VvigzPQ_LJHeADTsMliwFwPe2B
41
41
  ai_edge_torch/generative/examples/stable_diffusion/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
42
42
  ai_edge_torch/generative/examples/stable_diffusion/attention.py,sha256=Lo4Dq7a3Kg-lyH56iqGtqCo5UaClQHRCTDdNagXGTo8,3535
43
43
  ai_edge_torch/generative/examples/stable_diffusion/clip.py,sha256=yUCJemEh4n8ez-yLgVU0HZAki-PZ9nY04DFjgpx9PUc,3698
44
- ai_edge_torch/generative/examples/stable_diffusion/convert_to_tflite.py,sha256=MI73RjOeD4Kh7AL0j5_QXiZq-rl_qCdibSE6eCQCyeY,3804
45
- ai_edge_torch/generative/examples/stable_diffusion/decoder.py,sha256=AgVAdUbSkHXONVUjAyBQEXhIUUlinf9kNljcBpWnj3A,3276
44
+ ai_edge_torch/generative/examples/stable_diffusion/convert_to_tflite.py,sha256=NmgDo5uAefrhMUbYku0TKHlqzO0NVWI_M1ue8tddQR4,4024
45
+ ai_edge_torch/generative/examples/stable_diffusion/decoder.py,sha256=Z1bnZvYtPdwNy706kixVDfL32X-R87B_WF3CcHwiz0o,11038
46
46
  ai_edge_torch/generative/examples/stable_diffusion/diffusion.py,sha256=TfbfsmuKoGsBENF9fYIAN_SMEQNhj-kjNdqQXFJGxpg,7784
47
- ai_edge_torch/generative/examples/stable_diffusion/encoder.py,sha256=L6hLaMQGb8-_BwSvTLIuDnZwfTqn0K4swBUjfPnYWZo,2341
47
+ ai_edge_torch/generative/examples/stable_diffusion/encoder.py,sha256=mgbxkeFDMkNIGmnbcFTIFPu8EWKokghiviYIOB2lE3Q,3437
48
48
  ai_edge_torch/generative/examples/stable_diffusion/pipeline.py,sha256=FCbnwlkpYYb-tF7KscbSYjNEdg7XnuLju1cDuIRoQv8,8277
49
49
  ai_edge_torch/generative/examples/stable_diffusion/tokenizer.py,sha256=r9RqbyNvuvXOGu3ojtl7ZmbC7o4Pt8aUKAhN1yCdtEc,3397
50
50
  ai_edge_torch/generative/examples/stable_diffusion/util.py,sha256=NFpOfA4KN0JpShm5QvuYbQYZ844NzexWD8nV3WjMOZM,2397
@@ -65,15 +65,19 @@ ai_edge_torch/generative/examples/tiny_llama/__init__.py,sha256=47DEQpj8HBSa-_TI
65
65
  ai_edge_torch/generative/examples/tiny_llama/convert_to_tflite.py,sha256=E4I5OlC4zyl5cxiiu7uTED-zcwYRu210lP1zuT3xLBE,2566
66
66
  ai_edge_torch/generative/examples/tiny_llama/tiny_llama.py,sha256=hVGpuI8gpj4Rn9k4otsRE22MSLFHBDlUOgioY6Ru6VI,5629
67
67
  ai_edge_torch/generative/layers/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
68
- ai_edge_torch/generative/layers/attention.py,sha256=zNIBXxCOA5Mz_F_dfBbKpIovhtcB6q5a-i8oAxls1d0,7071
68
+ ai_edge_torch/generative/layers/attention.py,sha256=Z8gXHYs6h8gaRiYAdvYUbHzg_2EmqfxiChsf_SYraAc,7902
69
69
  ai_edge_torch/generative/layers/attention_utils.py,sha256=hXhuyKblPPxKIRzlAf1YNlwHgpbj-6nReRLhRHELx5k,6350
70
- ai_edge_torch/generative/layers/builder.py,sha256=WLTeDId9t3Xwt0h1zxzqoYyFvfrNzPKLskcl39q8Aqw,3403
70
+ ai_edge_torch/generative/layers/builder.py,sha256=8cPL1NAutjT6Dwtyy2X7NSaTl9WCUJM5SIrBIDcEvVY,3520
71
71
  ai_edge_torch/generative/layers/feed_forward.py,sha256=4j2QaSCw59Jkk_ixKDpKEj7FLRauzuExTiSNRzAjAhE,2820
72
72
  ai_edge_torch/generative/layers/kv_cache.py,sha256=4uiZLO3om5G3--kT04Jt0esEYznbkJ7QLzSHfb8mjc4,3090
73
- ai_edge_torch/generative/layers/model_config.py,sha256=2zT9nyoyuuyk5ziiww0VSJ6_JO7pDf7uOYbO9O3OQc4,4249
73
+ ai_edge_torch/generative/layers/model_config.py,sha256=72DXOsFC0buvzZp6YyVjuTVrpphAubBJ5NJWfs3kEwk,4362
74
74
  ai_edge_torch/generative/layers/normalization.py,sha256=M27eW3TcNK20oaXClXtfnu0lLWrAGrSKSsbegRWnj3c,1867
75
75
  ai_edge_torch/generative/layers/rotary_position_embedding.py,sha256=12SsCuoRuLNCwnFGe_pHDOZEBwBcqXs87Aj0PaWWw4E,1383
76
76
  ai_edge_torch/generative/layers/scaled_dot_product_attention.py,sha256=dYafGC205QE5CLIbBTCI-7eVvEGZEHzs1toPEhemeDs,3391
77
+ ai_edge_torch/generative/layers/unet/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
78
+ ai_edge_torch/generative/layers/unet/blocks_2d.py,sha256=KuZd2oZhkCQSknSgXMBla-sfYBPUv5bZNf9RYKXHfGg,10052
79
+ ai_edge_torch/generative/layers/unet/builder.py,sha256=iH0_nuY9TF2ap5h1JbGNCOonPTfrXQHcF8U0slrIREM,1210
80
+ ai_edge_torch/generative/layers/unet/model_config.py,sha256=LeRGB34fQ73UlknlFpjM9U-SZIRcQDnSmDltJivX-UA,4044
77
81
  ai_edge_torch/generative/quantize/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
78
82
  ai_edge_torch/generative/quantize/example.py,sha256=t-YwyKSPAG-OZC1DfH-0vfie2RHHpTSQjxUY-tmhu5g,1543
79
83
  ai_edge_torch/generative/quantize/quant_attrs.py,sha256=ffBALrrbrfiG_mrOr-f3B1Gc6PlAma9gtvVnfP7SDzI,1862
@@ -86,7 +90,8 @@ ai_edge_torch/generative/test/loader_test.py,sha256=N88CbrLW7Q2x1EyurwdXQ6YjsA-y
86
90
  ai_edge_torch/generative/test/test_model_conversion.py,sha256=i_SAW-hD8SaHuopMZI9IuXXDFn5uSTJa1nKZhaC3dAQ,6811
87
91
  ai_edge_torch/generative/test/test_quantize.py,sha256=f70sH1ZFzdCwYj0MG-eg54WOC4LasR0D8CTUYpjxZYM,3728
88
92
  ai_edge_torch/generative/utilities/__init__.py,sha256=-_jxnnFnCgnTU4oTm4MnRsvL5lqhomBNdFBbqfmfHPo,720
89
- ai_edge_torch/generative/utilities/loader.py,sha256=r-_hSanSjLZ_YXFpZUb0Up94u5F8JHp70Vf2nlONPSg,11269
93
+ ai_edge_torch/generative/utilities/autoencoder_loader.py,sha256=G2Nosy33JzkjGALPR4JjvffdFX1JWOj2zjbbuaDJEgg,10065
94
+ ai_edge_torch/generative/utilities/loader.py,sha256=Hs92478j1g4jQGvbdP1aWvOy907HjwqQZE-NFy6HELo,11326
90
95
  ai_edge_torch/generative/utilities/t5_loader.py,sha256=guDTv-12UUvJGl4eDvvZX3t4rRKewfXO8SpcYXM6gbc,16156
91
96
  ai_edge_torch/hlfb/__init__.py,sha256=rrje8a2iuKboBoV96bVq7nlS9HsnuEMbHE5JiWmCxFA,752
92
97
  ai_edge_torch/hlfb/mark_pattern/__init__.py,sha256=2VXnHcGf23VOuP-1GriGIpuL98leBB8twp_qaScMnmc,4799
@@ -102,8 +107,8 @@ ai_edge_torch/quantize/quant_config.py,sha256=ExThdTXqnWmGC3-F6sdXbXr8nYzkEe_qCz
102
107
  ai_edge_torch/testing/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
103
108
  ai_edge_torch/testing/model_coverage/__init__.py,sha256=5P8J6Zk5YYtDvTBucFvB9NGSRI7Gw_24WnrbhXgycEE,765
104
109
  ai_edge_torch/testing/model_coverage/model_coverage.py,sha256=EIyKz-HY70DguWuSrJal8LpYXQ5ZSEUf3ZrVl7jikFM,4286
105
- ai_edge_torch_nightly-0.2.0.dev20240606.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
106
- ai_edge_torch_nightly-0.2.0.dev20240606.dist-info/METADATA,sha256=2yFjQFvs93hoppwWWSJi-B9HC2n-h1s2rzjsyGXU1zI,1748
107
- ai_edge_torch_nightly-0.2.0.dev20240606.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
108
- ai_edge_torch_nightly-0.2.0.dev20240606.dist-info/top_level.txt,sha256=5KXRaF2hwkApYxf7Y8y_tVb9aulGTlbOoNdbx1aKRkE,14
109
- ai_edge_torch_nightly-0.2.0.dev20240606.dist-info/RECORD,,
110
+ ai_edge_torch_nightly-0.2.0.dev20240609.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
111
+ ai_edge_torch_nightly-0.2.0.dev20240609.dist-info/METADATA,sha256=THUdn03pVtqLTQHdigvUA8B32EHwfV5UTvBRQCpR8v0,1748
112
+ ai_edge_torch_nightly-0.2.0.dev20240609.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
113
+ ai_edge_torch_nightly-0.2.0.dev20240609.dist-info/top_level.txt,sha256=5KXRaF2hwkApYxf7Y8y_tVb9aulGTlbOoNdbx1aKRkE,14
114
+ ai_edge_torch_nightly-0.2.0.dev20240609.dist-info/RECORD,,