ai-edge-torch-nightly 0.3.0.dev20241106__py3-none-any.whl → 0.3.0.dev20241110__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.
- ai_edge_torch/fx_pass_base.py +1 -1
- ai_edge_torch/generative/examples/openelm/openelm.py +1 -0
- ai_edge_torch/generative/examples/paligemma/__init__.py +14 -0
- ai_edge_torch/generative/examples/paligemma/decoder.py +103 -0
- ai_edge_torch/generative/examples/paligemma/verify_decoder.py +75 -0
- ai_edge_torch/generative/utilities/verifier.py +32 -19
- ai_edge_torch/odml_torch/_torch_future.py +14 -0
- ai_edge_torch/odml_torch/export.py +4 -4
- ai_edge_torch/version.py +1 -1
- {ai_edge_torch_nightly-0.3.0.dev20241106.dist-info → ai_edge_torch_nightly-0.3.0.dev20241110.dist-info}/METADATA +2 -2
- {ai_edge_torch_nightly-0.3.0.dev20241106.dist-info → ai_edge_torch_nightly-0.3.0.dev20241110.dist-info}/RECORD +14 -11
- {ai_edge_torch_nightly-0.3.0.dev20241106.dist-info → ai_edge_torch_nightly-0.3.0.dev20241110.dist-info}/WHEEL +1 -1
- {ai_edge_torch_nightly-0.3.0.dev20241106.dist-info → ai_edge_torch_nightly-0.3.0.dev20241110.dist-info}/LICENSE +0 -0
- {ai_edge_torch_nightly-0.3.0.dev20241106.dist-info → ai_edge_torch_nightly-0.3.0.dev20241110.dist-info}/top_level.txt +0 -0
ai_edge_torch/fx_pass_base.py
CHANGED
@@ -76,7 +76,7 @@ def run_passes(
|
|
76
76
|
range_constraints=exported_program.range_constraints,
|
77
77
|
module_call_graph=exported_program.module_call_graph,
|
78
78
|
example_inputs=exported_program.example_inputs,
|
79
|
-
|
79
|
+
verifiers=exported_program.verifiers,
|
80
80
|
constants=exported_program.constants,
|
81
81
|
)
|
82
82
|
return exported_program
|
@@ -0,0 +1,14 @@
|
|
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
|
+
# ==============================================================================
|
@@ -0,0 +1,103 @@
|
|
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
|
+
|
16
|
+
"""Example of building a decoder of PaliGemma 3B model which is Gemma1."""
|
17
|
+
|
18
|
+
import ai_edge_torch.generative.layers.model_config as cfg
|
19
|
+
from ai_edge_torch.generative.utilities import model_builder
|
20
|
+
import ai_edge_torch.generative.utilities.loader as loading_utils
|
21
|
+
|
22
|
+
TENSOR_NAMES = loading_utils.ModelLoader.TensorNames(
|
23
|
+
ff_up_proj="language_model.model.layers.{}.mlp.up_proj",
|
24
|
+
ff_down_proj="language_model.model.layers.{}.mlp.down_proj",
|
25
|
+
ff_gate_proj="language_model.model.layers.{}.mlp.gate_proj",
|
26
|
+
attn_query_proj="language_model.model.layers.{}.self_attn.q_proj",
|
27
|
+
attn_key_proj="language_model.model.layers.{}.self_attn.k_proj",
|
28
|
+
attn_value_proj="language_model.model.layers.{}.self_attn.v_proj",
|
29
|
+
attn_output_proj="language_model.model.layers.{}.self_attn.o_proj",
|
30
|
+
pre_attn_norm="language_model.model.layers.{}.input_layernorm",
|
31
|
+
post_attn_norm="language_model.model.layers.{}.post_attention_layernorm",
|
32
|
+
embedding="language_model.model.embed_tokens",
|
33
|
+
final_norm="language_model.model.norm",
|
34
|
+
lm_head=None,
|
35
|
+
)
|
36
|
+
|
37
|
+
|
38
|
+
def get_decoder_config(kv_cache_max_len: int = 1024) -> cfg.ModelConfig:
|
39
|
+
"""Returns the model config for the decoder of a PaliGemma 3B model.
|
40
|
+
|
41
|
+
Args:
|
42
|
+
kv_cache_max_len (int): The maximum sequence length of the KV cache. Default
|
43
|
+
is 1024.
|
44
|
+
|
45
|
+
Returns:
|
46
|
+
The model config for the decoder of a PaliGemma 3B model.
|
47
|
+
"""
|
48
|
+
attn_config = cfg.AttentionConfig(
|
49
|
+
num_heads=8,
|
50
|
+
head_dim=256,
|
51
|
+
num_query_groups=1,
|
52
|
+
rotary_base=10000,
|
53
|
+
rotary_percentage=1.0,
|
54
|
+
)
|
55
|
+
ff_config = cfg.FeedForwardConfig(
|
56
|
+
type=cfg.FeedForwardType.GATED,
|
57
|
+
activation=cfg.ActivationConfig(cfg.ActivationType.GELU_TANH),
|
58
|
+
intermediate_size=16384,
|
59
|
+
)
|
60
|
+
norm_config = cfg.NormalizationConfig(
|
61
|
+
type=cfg.NormalizationType.RMS_NORM,
|
62
|
+
epsilon=1e-6,
|
63
|
+
zero_centered=True,
|
64
|
+
)
|
65
|
+
block_config = cfg.TransformerBlockConfig(
|
66
|
+
attn_config=attn_config,
|
67
|
+
ff_config=ff_config,
|
68
|
+
pre_attention_norm_config=norm_config,
|
69
|
+
post_attention_norm_config=norm_config,
|
70
|
+
)
|
71
|
+
config = cfg.ModelConfig(
|
72
|
+
vocab_size=257216,
|
73
|
+
num_layers=18,
|
74
|
+
max_seq_len=8192,
|
75
|
+
embedding_dim=2048,
|
76
|
+
embedding_scale=2048**0.5,
|
77
|
+
kv_cache_max_len=kv_cache_max_len,
|
78
|
+
block_configs=block_config,
|
79
|
+
final_norm_config=norm_config,
|
80
|
+
lm_head_use_bias=False,
|
81
|
+
enable_hlfb=True,
|
82
|
+
)
|
83
|
+
return config
|
84
|
+
|
85
|
+
|
86
|
+
def get_fake_decoder_config(kv_cache_max_len: int = 128) -> cfg.ModelConfig:
|
87
|
+
config = get_decoder_config(kv_cache_max_len)
|
88
|
+
# PaliGemma decoder has only one block config.
|
89
|
+
config.block_config(0).ff_config.intermediate_size = 128
|
90
|
+
config.vocab_size = 128
|
91
|
+
config.num_layers = 2
|
92
|
+
config.max_seq_len = 2 * kv_cache_max_len
|
93
|
+
return config
|
94
|
+
|
95
|
+
|
96
|
+
def build_decoder(
|
97
|
+
checkpoint_path: str, **kwargs
|
98
|
+
) -> model_builder.DecoderOnlyModel:
|
99
|
+
return model_builder.build_decoder_only_model(
|
100
|
+
checkpoint_path=checkpoint_path,
|
101
|
+
config=get_decoder_config(**kwargs),
|
102
|
+
tensor_names=TENSOR_NAMES,
|
103
|
+
)
|
@@ -0,0 +1,75 @@
|
|
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
|
+
|
16
|
+
"""Verifies the reauthored decoder of PaliGemma 3B model."""
|
17
|
+
|
18
|
+
import logging
|
19
|
+
import pathlib
|
20
|
+
|
21
|
+
from absl import app
|
22
|
+
from absl import flags
|
23
|
+
from ai_edge_torch.generative.examples.paligemma import decoder
|
24
|
+
from ai_edge_torch.generative.utilities import transformers_verifier
|
25
|
+
from ai_edge_torch.generative.utilities import verifier
|
26
|
+
import transformers
|
27
|
+
|
28
|
+
_PROMPTS = flags.DEFINE_multi_string(
|
29
|
+
"prompts",
|
30
|
+
"What is the meaning of life?",
|
31
|
+
"The input prompts to generate answers.",
|
32
|
+
)
|
33
|
+
_MAX_NEW_TOKENS = flags.DEFINE_integer(
|
34
|
+
"max_new_tokens",
|
35
|
+
30,
|
36
|
+
"The maximum size of the generated tokens.",
|
37
|
+
)
|
38
|
+
|
39
|
+
|
40
|
+
def main(_):
|
41
|
+
checkpoint = "google/paligemma-3b-mix-224"
|
42
|
+
logging.info("Loading the original model from: %s", checkpoint)
|
43
|
+
original_full_model = (
|
44
|
+
transformers.PaliGemmaForConditionalGeneration.from_pretrained(checkpoint)
|
45
|
+
)
|
46
|
+
original_language_model = original_full_model.eval().language_model
|
47
|
+
|
48
|
+
# Locate the cached dir.
|
49
|
+
cached_config_file = transformers.utils.cached_file(
|
50
|
+
checkpoint, transformers.utils.CONFIG_NAME
|
51
|
+
)
|
52
|
+
reauthored_checkpoint = pathlib.Path(cached_config_file).parent
|
53
|
+
logging.info("Building the reauthored model from: %s", reauthored_checkpoint)
|
54
|
+
reauthored_model = decoder.build_decoder(reauthored_checkpoint)
|
55
|
+
|
56
|
+
logging.info("Loading the tokenizer from: %s", checkpoint)
|
57
|
+
# It works only when GemmaTokenizerFast is available. In some environments,
|
58
|
+
# use_fast=False doeesn't work either if the tokenizer cannot load the
|
59
|
+
# sentencepiece model file properly.
|
60
|
+
processor = transformers.AutoProcessor.from_pretrained(checkpoint)
|
61
|
+
|
62
|
+
verifier.verify_reauthored_model(
|
63
|
+
original_model=transformers_verifier.TransformersModelWrapper(
|
64
|
+
original_language_model
|
65
|
+
),
|
66
|
+
reauthored_model=verifier.ReauthoredModelWrapper(reauthored_model),
|
67
|
+
tokenizer=verifier.TokenizerWrapper(processor.tokenizer),
|
68
|
+
generate_prompts=_PROMPTS.value,
|
69
|
+
max_new_tokens=_MAX_NEW_TOKENS.value,
|
70
|
+
atol=1e-04,
|
71
|
+
)
|
72
|
+
|
73
|
+
|
74
|
+
if __name__ == "__main__":
|
75
|
+
app.run(main)
|
@@ -143,7 +143,7 @@ def verify_with_input_ids(
|
|
143
143
|
kv_cache_max_len: int = 1024,
|
144
144
|
rtol: float = 1e-05,
|
145
145
|
atol: float = 1e-05,
|
146
|
-
)
|
146
|
+
):
|
147
147
|
"""Verifies if the model reauthored generates the same output of the oringal.
|
148
148
|
|
149
149
|
It compares only one outputs from the original and the reauthored model.
|
@@ -157,8 +157,9 @@ def verify_with_input_ids(
|
|
157
157
|
rtol (float): The relative tolerance for the comparison.
|
158
158
|
atol (float): The absolute tolerance for the comparison.
|
159
159
|
|
160
|
-
|
161
|
-
|
160
|
+
Raises:
|
161
|
+
AssertError if the model reauthored fails to generate the same output of the
|
162
|
+
original.
|
162
163
|
"""
|
163
164
|
tokens = torch.full((1, kv_cache_max_len), 0, dtype=torch.int, device="cpu")
|
164
165
|
tokens[0, : len(input_ids)] = torch.tensor([input_ids]).int()
|
@@ -173,7 +174,7 @@ def verify_with_input_ids(
|
|
173
174
|
logits_reauthored = outputs_reauthored[0, len(input_ids) - 1, :]
|
174
175
|
logging.info("logits_reauthored: %s", logits_reauthored)
|
175
176
|
|
176
|
-
|
177
|
+
assert torch.allclose(
|
177
178
|
logits_original, logits_reauthored, rtol=rtol, atol=atol
|
178
179
|
)
|
179
180
|
|
@@ -184,7 +185,7 @@ def verify_model_with_prompts(
|
|
184
185
|
tokenizer: TokenizerWrapper,
|
185
186
|
prompts: str,
|
186
187
|
max_new_tokens: int,
|
187
|
-
)
|
188
|
+
):
|
188
189
|
"""Verifies if the model reauthored generates the same answer of the oringal.
|
189
190
|
|
190
191
|
It compares an answer, i.e. multiple continuous outputs generated by the
|
@@ -198,8 +199,9 @@ def verify_model_with_prompts(
|
|
198
199
|
prompts (str): The input prompts to generate answers.
|
199
200
|
max_new_tokens (int): The maximum number of new tokens to generate.
|
200
201
|
|
201
|
-
|
202
|
-
|
202
|
+
Raises:
|
203
|
+
AssertError if the model reauthored fails to generate the same answer of the
|
204
|
+
original.
|
203
205
|
"""
|
204
206
|
prompt_tokens = tokenizer.encode(prompts)
|
205
207
|
|
@@ -213,7 +215,7 @@ def verify_model_with_prompts(
|
|
213
215
|
response_reauthored = tokenizer.decode(outputs_reauthored[0])
|
214
216
|
logging.info("outputs from reauthored model: [[%s]]", response_reauthored)
|
215
217
|
|
216
|
-
|
218
|
+
assert response_original == response_reauthored
|
217
219
|
|
218
220
|
|
219
221
|
def verify_reauthored_model(
|
@@ -225,6 +227,7 @@ def verify_reauthored_model(
|
|
225
227
|
forward_input_ids: List[List[int]] = [[1, 2, 3, 4]],
|
226
228
|
rtol: float = 1e-05,
|
227
229
|
atol: float = 1e-05,
|
230
|
+
continue_on_failure: bool = False,
|
228
231
|
):
|
229
232
|
"""Verifies the reauthored model against the original model.
|
230
233
|
|
@@ -247,21 +250,31 @@ def verify_reauthored_model(
|
|
247
250
|
forward with.
|
248
251
|
rtol (float): The relative tolerance for the comparison.
|
249
252
|
atol (float): The absolute tolerance for the comparison.
|
253
|
+
continue_on_failure (bool): If True, it continues to verify the next prompt
|
254
|
+
or input IDs even if a previous one fails.
|
250
255
|
"""
|
251
256
|
for input_ids in forward_input_ids:
|
252
257
|
logging.info("Verifying the reauthored model with input IDs: %s", input_ids)
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
258
|
+
try:
|
259
|
+
verify_with_input_ids(
|
260
|
+
original_model, reauthored_model, input_ids, rtol=rtol, atol=atol
|
261
|
+
)
|
262
|
+
except AssertionError as e:
|
263
|
+
logging.error("*** FAILED *** verify with input IDs: %s", input_ids)
|
264
|
+
if not continue_on_failure:
|
265
|
+
raise e
|
257
266
|
else:
|
258
|
-
logging.
|
267
|
+
logging.info("*** PASSED *** verify with input IDs: %s", input_ids)
|
259
268
|
|
260
269
|
for prompts in generate_prompts:
|
261
|
-
logging.info("Verifying the reauthored model with prompts
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
270
|
+
logging.info("Verifying the reauthored model with prompts: %s", prompts)
|
271
|
+
try:
|
272
|
+
verify_model_with_prompts(
|
273
|
+
original_model, reauthored_model, tokenizer, prompts, max_new_tokens
|
274
|
+
)
|
275
|
+
except AssertionError as e:
|
276
|
+
logging.error("*** FAILED *** verify with prompts: %s", prompts)
|
277
|
+
if not continue_on_failure:
|
278
|
+
raise e
|
266
279
|
else:
|
267
|
-
logging.
|
280
|
+
logging.info("*** PASSED *** verify with prompts: %s", prompts)
|
@@ -59,3 +59,17 @@ def graph_module_flat_inputs(ep: torch.export.ExportedProgram, args, kwargs):
|
|
59
59
|
ordered_tensor_constants = tuple()
|
60
60
|
|
61
61
|
return (*param_buffer_values, *flat_args, *ordered_tensor_constants)
|
62
|
+
|
63
|
+
|
64
|
+
# TODO(b/331481564): Replace this with CanonicalizePass + run_decomposition
|
65
|
+
def safe_run_decompositions(exported_program, decomp_table=None):
|
66
|
+
for node in exported_program.graph.nodes:
|
67
|
+
if node.target == torch.ops.aten.view.default:
|
68
|
+
# Passes or torch.export may generate aten.view nodes not respecting the
|
69
|
+
# tensor memory format. Changes all the aten.view to torch.reshape
|
70
|
+
# for retracing. If the input memory format is already contiguous,
|
71
|
+
# retracing in run_decomposition below would decompose torch.reshape
|
72
|
+
# back to one aten.view.
|
73
|
+
node.target = lambda self, size: torch.reshape(self.contiguous(), size)
|
74
|
+
|
75
|
+
return exported_program.run_decompositions(decomp_table)
|
@@ -262,13 +262,13 @@ def exported_program_to_mlir(
|
|
262
262
|
exported_program: torch.export.ExportedProgram,
|
263
263
|
) -> MlirLowered:
|
264
264
|
"""Lower the exported program to MLIR."""
|
265
|
-
exported_program =
|
266
|
-
lowerings.decompositions()
|
265
|
+
exported_program = _torch_future.safe_run_decompositions(
|
266
|
+
exported_program, lowerings.decompositions()
|
267
267
|
)
|
268
268
|
|
269
269
|
_convert_i64_to_i32(exported_program)
|
270
|
-
exported_program =
|
271
|
-
lowerings.decompositions()
|
270
|
+
exported_program = _torch_future.safe_run_decompositions(
|
271
|
+
exported_program, lowerings.decompositions()
|
272
272
|
)
|
273
273
|
|
274
274
|
with export_utils.create_ir_context() as context, ir.Location.unknown():
|
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.dev20241110
|
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
|
@@ -29,7 +29,7 @@ Requires-Dist: safetensors
|
|
29
29
|
Requires-Dist: tabulate
|
30
30
|
Requires-Dist: torch>=2.4.0
|
31
31
|
Requires-Dist: torch-xla>=2.4.0
|
32
|
-
Requires-Dist: tf-nightly
|
32
|
+
Requires-Dist: tf-nightly>=2.19.0.dev20241001
|
33
33
|
Requires-Dist: ai-edge-litert-nightly
|
34
34
|
Requires-Dist: ai-edge-quantizer-nightly
|
35
35
|
|
@@ -1,9 +1,9 @@
|
|
1
1
|
ai_edge_torch/__init__.py,sha256=48qP37uHT90YPs4eIUQxCiWVwqGEX3idCUs6mQKvX1U,1168
|
2
2
|
ai_edge_torch/config.py,sha256=FMWeCH2b7HYILBvaI1iZNnYCO4WAhDOwBZBmIE-xrF0,909
|
3
3
|
ai_edge_torch/conftest.py,sha256=r0GTrhMRhlmOGrrkvumHN8hkmyug6WvF60vWq8wRIBI,758
|
4
|
-
ai_edge_torch/fx_pass_base.py,sha256=
|
4
|
+
ai_edge_torch/fx_pass_base.py,sha256=518ziQ0TUxqum2qZXqlD8qr65pHPh8ZNLnwFC6zvK3k,4253
|
5
5
|
ai_edge_torch/model.py,sha256=N-pNpTxzhaFGhWhnSGd70lBzb9VlEhTOq5mddU7bvvI,5542
|
6
|
-
ai_edge_torch/version.py,sha256=
|
6
|
+
ai_edge_torch/version.py,sha256=0kbL8PwrdMx4mw42_rj8uAYUeehe8jsFhw_tENefuGM,706
|
7
7
|
ai_edge_torch/_convert/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
|
8
8
|
ai_edge_torch/_convert/conversion.py,sha256=HwzfRx_DX5TLtPqwEH1_NOm38_INvHzHl4_mX67KOdQ,5448
|
9
9
|
ai_edge_torch/_convert/conversion_utils.py,sha256=Sr8qXVcTwc-ZnZmK7yxVrIOOp1S_vNrwzC0zUvLTI2o,2160
|
@@ -58,8 +58,11 @@ ai_edge_torch/generative/examples/llama/llama.py,sha256=AMcCbuDBxEfbO-l3KiEXbUaX
|
|
58
58
|
ai_edge_torch/generative/examples/llama/verify.py,sha256=X7oKQi85M789ugBrOlMvzk8eSRR3Kf1Mprfl-U-WIpo,2842
|
59
59
|
ai_edge_torch/generative/examples/openelm/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
|
60
60
|
ai_edge_torch/generative/examples/openelm/convert_to_tflite.py,sha256=85FVEt6cKFP2UzCLC78tAkbwGlGhAArtG7Wa75NxJik,2185
|
61
|
-
ai_edge_torch/generative/examples/openelm/openelm.py,sha256=
|
61
|
+
ai_edge_torch/generative/examples/openelm/openelm.py,sha256=sFakstoPDcOHSak0IGFEEq_HQMBBSMcx-WVCDZqcVDo,4411
|
62
62
|
ai_edge_torch/generative/examples/openelm/verify.py,sha256=VkigoqhAr8ew95neb3TifYv-SLOSheaWKv2AH0iKDrc,2441
|
63
|
+
ai_edge_torch/generative/examples/paligemma/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
|
64
|
+
ai_edge_torch/generative/examples/paligemma/decoder.py,sha256=JSb9h3gcIh5oYrbLU6rI8OU8FzfWeTCFJT5XRWu4btE,3675
|
65
|
+
ai_edge_torch/generative/examples/paligemma/verify_decoder.py,sha256=al5wMPWri4IRVWrLmCplPi6uoCzwh0vBHMGnCt-XUqo,2690
|
63
66
|
ai_edge_torch/generative/examples/phi/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
|
64
67
|
ai_edge_torch/generative/examples/phi/convert_phi3_to_tflite.py,sha256=rkbTtMaqSVG48cm-NTxR_LDgZmXAEBqayTm9O49oMXc,2171
|
65
68
|
ai_edge_torch/generative/examples/phi/convert_to_tflite.py,sha256=3go690yX6PFeXMdpY7y4JZorAwxX0HT_b_pKZieauvk,2169
|
@@ -139,7 +142,7 @@ ai_edge_torch/generative/utilities/model_builder.py,sha256=89jt80UUfDzYBi-x077HB
|
|
139
142
|
ai_edge_torch/generative/utilities/stable_diffusion_loader.py,sha256=dqPD9qRXEWtU3ombslOC-BE2l_dMwHoCNu7NsIJhsso,36158
|
140
143
|
ai_edge_torch/generative/utilities/t5_loader.py,sha256=tEsfy8-ymzbbjOIc-oesXF3yGyyWtJgFXn2s7VOavt8,16961
|
141
144
|
ai_edge_torch/generative/utilities/transformers_verifier.py,sha256=8sp9m_FMcXn7nqOrochtu2jIANkJKhnhIBUmH0ZTDR4,1549
|
142
|
-
ai_edge_torch/generative/utilities/verifier.py,sha256=
|
145
|
+
ai_edge_torch/generative/utilities/verifier.py,sha256=5C2cm54d9kwL7nGRX-YfnBIJny1ICNhiU-LB3IqJq2E,10075
|
143
146
|
ai_edge_torch/hlfb/__init__.py,sha256=sH4um75na-O8tzxN6chFyp6Y4xnexsE7kUQpZySv6dE,735
|
144
147
|
ai_edge_torch/hlfb/mark_pattern/__init__.py,sha256=cjTprggj_cuktSCm7-A25e7Shop3k63ylp7sdZmtZ8o,4790
|
145
148
|
ai_edge_torch/hlfb/mark_pattern/passes.py,sha256=pjkKcI1nHECPluAt87cFBrt1DP0f3ge7rHq1NhCkBIE,1936
|
@@ -155,9 +158,9 @@ ai_edge_torch/lowertools/test_utils.py,sha256=bPgc2iXX16KYtMNvmsRdKfrCY6UJmcfitf
|
|
155
158
|
ai_edge_torch/lowertools/torch_xla_utils.py,sha256=XGZE0vZG9WSQT-6dFmPlU8W89z8rfXPRGjuZeuhXCIw,9205
|
156
159
|
ai_edge_torch/lowertools/translate_recipe.py,sha256=ymkBpFqAUiupRWqrPOWiVphKcXR1K5vHK0RjgBFtxlE,5652
|
157
160
|
ai_edge_torch/odml_torch/__init__.py,sha256=S8jOzE9nLof-6es3XDiGJRN-9H_XTxsVm9dE7lD3RWo,812
|
158
|
-
ai_edge_torch/odml_torch/_torch_future.py,sha256=
|
161
|
+
ai_edge_torch/odml_torch/_torch_future.py,sha256=AJ0klpsbu2ZBTfiZlqSOoaYzBVITt40a1fYN8xKkEPw,3044
|
159
162
|
ai_edge_torch/odml_torch/_torch_library.py,sha256=Lw1gqL2HWNRspdTwNhIkYAHDyafHedHtkXyKKxn-Wss,805
|
160
|
-
ai_edge_torch/odml_torch/export.py,sha256=
|
163
|
+
ai_edge_torch/odml_torch/export.py,sha256=4xwrsDeOAgzoB9m7EeNsBj6dC5Ajtn5aKDRQkdHxa-o,11584
|
161
164
|
ai_edge_torch/odml_torch/export_utils.py,sha256=q84U69ZQ82hLXw-xncJ8IW-K71Xux-NWlzZTs7hdZWA,5127
|
162
165
|
ai_edge_torch/odml_torch/tf_integration.py,sha256=lTFJPPEijLPFmn6qq2jbpVTQOo0YaOTK36kK6rCiyIE,5956
|
163
166
|
ai_edge_torch/odml_torch/composite/__init__.py,sha256=71GM_gDZxJyo38ZSoYSwhZX3xKA9rknO93JS9kw9w_c,778
|
@@ -186,8 +189,8 @@ ai_edge_torch/quantize/quant_config.py,sha256=U0KisSW-uZkoMJcy-ZP9W57p3tsa594fr9
|
|
186
189
|
ai_edge_torch/testing/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
|
187
190
|
ai_edge_torch/testing/model_coverage/__init__.py,sha256=5P8J6Zk5YYtDvTBucFvB9NGSRI7Gw_24WnrbhXgycEE,765
|
188
191
|
ai_edge_torch/testing/model_coverage/model_coverage.py,sha256=UPB448aMDUyC0HNYVqio2rcJPnDN0tBQMP08J6vPYew,4718
|
189
|
-
ai_edge_torch_nightly-0.3.0.
|
190
|
-
ai_edge_torch_nightly-0.3.0.
|
191
|
-
ai_edge_torch_nightly-0.3.0.
|
192
|
-
ai_edge_torch_nightly-0.3.0.
|
193
|
-
ai_edge_torch_nightly-0.3.0.
|
192
|
+
ai_edge_torch_nightly-0.3.0.dev20241110.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
193
|
+
ai_edge_torch_nightly-0.3.0.dev20241110.dist-info/METADATA,sha256=ECohBv1Uc5BzRcnT3r3yM8_sElMqIMmpYcnRP_nOp84,1897
|
194
|
+
ai_edge_torch_nightly-0.3.0.dev20241110.dist-info/WHEEL,sha256=bFJAMchF8aTQGUgMZzHJyDDMPTO3ToJ7x23SLJa1SVo,92
|
195
|
+
ai_edge_torch_nightly-0.3.0.dev20241110.dist-info/top_level.txt,sha256=5KXRaF2hwkApYxf7Y8y_tVb9aulGTlbOoNdbx1aKRkE,14
|
196
|
+
ai_edge_torch_nightly-0.3.0.dev20241110.dist-info/RECORD,,
|
File without changes
|