ai-edge-torch-nightly 0.3.0.dev20250109__py3-none-any.whl → 0.3.0.dev20250112__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- ai_edge_torch/generative/examples/gemma/gemma2.py +9 -0
- ai_edge_torch/generative/examples/paligemma/decoder.py +4 -2
- ai_edge_torch/generative/examples/paligemma/decoder2.py +16 -11
- ai_edge_torch/generative/examples/paligemma/paligemma.py +3 -0
- ai_edge_torch/generative/examples/phi/convert_phi3_to_tflite.py +1 -1
- ai_edge_torch/generative/examples/test_models/toy_model.py +16 -5
- ai_edge_torch/generative/examples/test_models/toy_model_with_kv_cache.py +4 -2
- ai_edge_torch/generative/utilities/model_builder.py +4 -2
- ai_edge_torch/version.py +1 -1
- {ai_edge_torch_nightly-0.3.0.dev20250109.dist-info → ai_edge_torch_nightly-0.3.0.dev20250112.dist-info}/METADATA +1 -1
- {ai_edge_torch_nightly-0.3.0.dev20250109.dist-info → ai_edge_torch_nightly-0.3.0.dev20250112.dist-info}/RECORD +14 -14
- {ai_edge_torch_nightly-0.3.0.dev20250109.dist-info → ai_edge_torch_nightly-0.3.0.dev20250112.dist-info}/LICENSE +0 -0
- {ai_edge_torch_nightly-0.3.0.dev20250109.dist-info → ai_edge_torch_nightly-0.3.0.dev20250112.dist-info}/WHEEL +0 -0
- {ai_edge_torch_nightly-0.3.0.dev20250109.dist-info → ai_edge_torch_nightly-0.3.0.dev20250112.dist-info}/top_level.txt +0 -0
@@ -129,6 +129,7 @@ class Gemma2(nn.Module):
|
|
129
129
|
tokens: torch.Tensor,
|
130
130
|
input_pos: torch.Tensor,
|
131
131
|
kv_cache: kv_utils.KVCache,
|
132
|
+
mask: Optional[torch.Tensor] = None,
|
132
133
|
export_config: Optional[model_builder.ExportConfig] = None,
|
133
134
|
) -> dict[torch.Tensor, kv_utils.KVCache]:
|
134
135
|
_, seq_len = tokens.size()
|
@@ -175,7 +176,15 @@ class Gemma2(nn.Module):
|
|
175
176
|
input_embeds = input_embeds * self.config.embedding_scale
|
176
177
|
x = input_embeds
|
177
178
|
updated_kv_entries = []
|
179
|
+
mask_input = mask is not None
|
178
180
|
for i, block in enumerate(self.transformer_blocks):
|
181
|
+
mask = (
|
182
|
+
mask
|
183
|
+
if mask_input
|
184
|
+
else self.get_attention_mask(
|
185
|
+
block.config.attn_config.attn_type, input_pos
|
186
|
+
)
|
187
|
+
)
|
179
188
|
kv_entry = kv_cache.caches[i] if kv_cache else None
|
180
189
|
x, kv_entry = block(x, rope, mask[i], input_pos, kv_entry)
|
181
190
|
if kv_entry:
|
@@ -54,6 +54,7 @@ class Decoder(model_builder.DecoderOnlyModel):
|
|
54
54
|
input_pos: torch.Tensor,
|
55
55
|
kv_cache: kv_utils.KVCache,
|
56
56
|
input_embeds: torch.Tensor = None,
|
57
|
+
mask: Optional[torch.Tensor] = None,
|
57
58
|
export_config: Optional[model_builder.ExportConfig] = None,
|
58
59
|
called_by_generate: bool = True,
|
59
60
|
) -> dict[torch.Tensor, kv_utils.KVCache]:
|
@@ -73,8 +74,9 @@ class Decoder(model_builder.DecoderOnlyModel):
|
|
73
74
|
# The first part of input_embeds are image embeddings. Diagonal causal mask
|
74
75
|
# doesn't work here.
|
75
76
|
embeds_len = input_embeds.shape[1]
|
76
|
-
mask
|
77
|
-
|
77
|
+
if mask is None:
|
78
|
+
mask = torch.zeros(embeds_len, self.config.kv_cache_max)
|
79
|
+
mask[:, embeds_len:] = float("-inf")
|
78
80
|
|
79
81
|
return self._forward_with_embeds(
|
80
82
|
input_embeds, rope, mask, input_pos, kv_cache
|
@@ -57,6 +57,7 @@ class Decoder2(gemma2.Gemma2):
|
|
57
57
|
input_pos: torch.Tensor,
|
58
58
|
kv_cache: kv_utils.KVCache,
|
59
59
|
input_embeds: torch.Tensor = None,
|
60
|
+
mask: Optional[torch.Tensor] = None,
|
60
61
|
export_config: Optional[model_builder.ExportConfig] = None,
|
61
62
|
called_by_generate: bool = True,
|
62
63
|
) -> dict[torch.Tensor, kv_utils.KVCache]:
|
@@ -73,17 +74,21 @@ class Decoder2(gemma2.Gemma2):
|
|
73
74
|
repo_pos, n_elem, attn_config.head_dim, attn_config.rotary_base
|
74
75
|
)
|
75
76
|
|
76
|
-
if
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
77
|
+
if mask is None:
|
78
|
+
if called_by_generate:
|
79
|
+
# PaliGemma2 generate() use a diagonal causal mask even with image embeds.
|
80
|
+
mask = [
|
81
|
+
self.get_attention_mask(
|
82
|
+
self.config.block_config(i).attn_config.attn_type, input_pos
|
83
|
+
)
|
84
|
+
for i in range(self.config.num_layers)
|
85
|
+
]
|
86
|
+
else:
|
87
|
+
# By default, don't mask image embeds with a diagonal causal mask.
|
88
|
+
embeds_len = input_embeds.shape[1]
|
89
|
+
mask = torch.zeros(embeds_len, self.config.kv_cache_max)
|
90
|
+
mask[:, embeds_len:] = float("-inf")
|
91
|
+
mask = [mask] * self.config.num_layers
|
87
92
|
|
88
93
|
return self._forward_with_embeds(
|
89
94
|
input_embeds, rope, mask, input_pos, kv_cache, export_config
|
@@ -70,6 +70,7 @@ class PaliGemma(nn.Module):
|
|
70
70
|
tokens: torch.Tensor,
|
71
71
|
input_pos: torch.Tensor,
|
72
72
|
kv_cache: kv_utils.KVCache,
|
73
|
+
mask: Optional[torch.Tensor] = None,
|
73
74
|
pixel_values: torch.Tensor = None,
|
74
75
|
export_config: Optional[model_builder.ExportConfig] = None,
|
75
76
|
called_by_generate: bool = True,
|
@@ -79,6 +80,7 @@ class PaliGemma(nn.Module):
|
|
79
80
|
tokens=tokens,
|
80
81
|
input_pos=input_pos,
|
81
82
|
kv_cache=kv_cache,
|
83
|
+
mask=mask,
|
82
84
|
input_embeds=None,
|
83
85
|
export_config=export_config,
|
84
86
|
called_by_generate=called_by_generate,
|
@@ -111,6 +113,7 @@ class PaliGemma(nn.Module):
|
|
111
113
|
tokens=None,
|
112
114
|
input_pos=input_pos,
|
113
115
|
kv_cache=kv_cache,
|
116
|
+
mask=mask,
|
114
117
|
input_embeds=input_embeds,
|
115
118
|
export_config=export_config,
|
116
119
|
called_by_generate=called_by_generate,
|
@@ -26,7 +26,7 @@ from ai_edge_torch.generative.utilities.model_builder import ExportConfig
|
|
26
26
|
|
27
27
|
_CHECKPOINT_PATH = flags.DEFINE_string(
|
28
28
|
'checkpoint_path',
|
29
|
-
os.path.join(pathlib.Path.home(), 'Downloads/llm_data/
|
29
|
+
os.path.join(pathlib.Path.home(), 'Downloads/llm_data/phi3'),
|
30
30
|
'The path to the model checkpoint, or directory holding the checkpoint.',
|
31
31
|
)
|
32
32
|
_OUTPUT_PATH = flags.DEFINE_string(
|
@@ -13,7 +13,7 @@
|
|
13
13
|
# limitations under the License.
|
14
14
|
# ==============================================================================
|
15
15
|
# A toy example which has a single-layer transformer block.
|
16
|
-
from typing import Tuple
|
16
|
+
from typing import Optional, Tuple
|
17
17
|
|
18
18
|
from ai_edge_torch.generative.layers import builder
|
19
19
|
from ai_edge_torch.generative.layers.attention import TransformerBlock
|
@@ -52,14 +52,20 @@ class ToySingleLayerModel(torch.nn.Module):
|
|
52
52
|
self.config = config
|
53
53
|
|
54
54
|
@torch.inference_mode
|
55
|
-
def forward(
|
55
|
+
def forward(
|
56
|
+
self,
|
57
|
+
idx: torch.Tensor,
|
58
|
+
input_pos: torch.Tensor,
|
59
|
+
mask: Optional[torch.Tensor] = None,
|
60
|
+
) -> torch.Tensor:
|
56
61
|
x = self.tok_embedding(idx)
|
57
62
|
cos, sin = self.rope_cache
|
58
63
|
|
59
64
|
cos = cos.index_select(0, input_pos)
|
60
65
|
sin = sin.index_select(0, input_pos)
|
61
|
-
mask
|
62
|
-
|
66
|
+
if mask is None:
|
67
|
+
mask = self.mask_cache.index_select(2, input_pos)
|
68
|
+
mask = mask[:, :, :, : self.config.max_seq_len]
|
63
69
|
|
64
70
|
x = self.transformer_block(x, (cos, sin), mask, input_pos)
|
65
71
|
x = self.final_norm(x)
|
@@ -98,7 +104,12 @@ class ToySingleLayerModelWeightSharing(torch.nn.Module):
|
|
98
104
|
self.config = config
|
99
105
|
|
100
106
|
@torch.inference_mode
|
101
|
-
def forward(
|
107
|
+
def forward(
|
108
|
+
self,
|
109
|
+
idx: torch.Tensor,
|
110
|
+
input_pos: torch.Tensor,
|
111
|
+
mask: Optional[torch.Tensor] = None,
|
112
|
+
) -> torch.Tensor:
|
102
113
|
x = self.tok_embedding(idx)
|
103
114
|
cos, sin = self.rope_cache
|
104
115
|
|
@@ -63,14 +63,16 @@ class ToyModelWithKVCache(torch.nn.Module):
|
|
63
63
|
tokens: torch.Tensor,
|
64
64
|
input_pos: torch.Tensor,
|
65
65
|
kv_cache: kv_utils.KVCache,
|
66
|
+
mask: Optional[torch.Tensor] = None,
|
66
67
|
export_config: Optional[ExportConfig] = None,
|
67
68
|
) -> Tuple[torch.Tensor, kv_utils.KVCache]:
|
68
69
|
x = self.tok_embedding(tokens)
|
69
70
|
cos, sin = self.rope_cache
|
70
71
|
cos = cos.index_select(0, input_pos)
|
71
72
|
sin = sin.index_select(0, input_pos)
|
72
|
-
mask
|
73
|
-
|
73
|
+
if mask is None:
|
74
|
+
mask = self.mask_cache.index_select(2, input_pos)
|
75
|
+
mask = mask[:, :, :, : self.config.max_seq_len]
|
74
76
|
|
75
77
|
updated_kv_entries = []
|
76
78
|
for i, block in enumerate(self.transformer_blocks):
|
@@ -99,6 +99,7 @@ class DecoderOnlyModel(nn.Module):
|
|
99
99
|
tokens: torch.Tensor,
|
100
100
|
input_pos: torch.Tensor,
|
101
101
|
kv_cache: kv_utils.KVCache,
|
102
|
+
mask: Optional[torch.Tensor] = None,
|
102
103
|
lora: Optional[lora_utils.LoRA] = None,
|
103
104
|
export_config: Optional[ExportConfig] = None,
|
104
105
|
) -> dict[torch.Tensor, kv_utils.KVCache]:
|
@@ -122,8 +123,9 @@ class DecoderOnlyModel(nn.Module):
|
|
122
123
|
# input_pos=input_pos, n_elem=n_elem, base=attn_config.rotary_base
|
123
124
|
)
|
124
125
|
|
125
|
-
mask
|
126
|
-
|
126
|
+
if mask is None:
|
127
|
+
mask = self.mask_cache.index_select(2, input_pos)
|
128
|
+
mask = mask[:, :, :, : self.config.kv_cache_max]
|
127
129
|
|
128
130
|
return self.forward_with_embeds(
|
129
131
|
input_embeds, rope, mask, input_pos, kv_cache, lora, export_config
|
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.dev20250112
|
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
|
@@ -3,7 +3,7 @@ ai_edge_torch/_config.py,sha256=PKtOtBOup-cM0wBdQxby6HzuhLhIC3oq-TBG8FF4znE,2161
|
|
3
3
|
ai_edge_torch/conftest.py,sha256=r0GTrhMRhlmOGrrkvumHN8hkmyug6WvF60vWq8wRIBI,758
|
4
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=N0UKfMi2gSle2AshPjQY1e9slJOyb3Pd5O2n2N4dhvI,706
|
7
7
|
ai_edge_torch/_convert/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
|
8
8
|
ai_edge_torch/_convert/conversion.py,sha256=_PoH0E1gbbsWhLGwDRwUtW2G_IgNzNF7pKQbn9ct6-4,5778
|
9
9
|
ai_edge_torch/_convert/conversion_utils.py,sha256=Sr8qXVcTwc-ZnZmK7yxVrIOOp1S_vNrwzC0zUvLTI2o,2160
|
@@ -47,7 +47,7 @@ ai_edge_torch/generative/examples/gemma/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIX
|
|
47
47
|
ai_edge_torch/generative/examples/gemma/convert_gemma1_to_tflite.py,sha256=8HJi0cutxPstafVNs2LfBKdUzufVucje1Vrfjw_RS_g,2527
|
48
48
|
ai_edge_torch/generative/examples/gemma/convert_gemma2_to_tflite.py,sha256=MX8fZhJJPZ5IoMiNHX0tLkRpHYqVuh4qhW0rkeIfmYw,2529
|
49
49
|
ai_edge_torch/generative/examples/gemma/gemma1.py,sha256=w8oWYibZzvEvCDyp39EYyAWmjgJljhzdYPyFCfAWxZA,3497
|
50
|
-
ai_edge_torch/generative/examples/gemma/gemma2.py,sha256=
|
50
|
+
ai_edge_torch/generative/examples/gemma/gemma2.py,sha256=e9HfiHr4FkQZwVBYdDUZGzOjB5TqY2LqtVTHEzwVkQY,10428
|
51
51
|
ai_edge_torch/generative/examples/gemma/verify_gemma1.py,sha256=ip-Gmk4CI5f0GWSdAIdrectxQWJ0t328KCsA4nfHuGg,1736
|
52
52
|
ai_edge_torch/generative/examples/gemma/verify_gemma2.py,sha256=IoBhEMwH07-tFm5-U6F2hpCsI8xynglhq1x9tIOdaPQ,1322
|
53
53
|
ai_edge_torch/generative/examples/gemma/verify_util.py,sha256=tR8RflXocDZqvuStyw9aFlzuiTllEC8rNnjrxms6_Is,5727
|
@@ -64,16 +64,16 @@ ai_edge_torch/generative/examples/openelm/openelm.py,sha256=sIJ8Ie1oxFrJM-1jvv2u
|
|
64
64
|
ai_edge_torch/generative/examples/openelm/verify.py,sha256=VkigoqhAr8ew95neb3TifYv-SLOSheaWKv2AH0iKDrc,2441
|
65
65
|
ai_edge_torch/generative/examples/paligemma/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
|
66
66
|
ai_edge_torch/generative/examples/paligemma/convert_to_tflite.py,sha256=scLsguzzuHfKYDWUd2uZkKYVRzdAbQHLd-kPam8QwvM,3004
|
67
|
-
ai_edge_torch/generative/examples/paligemma/decoder.py,sha256=
|
68
|
-
ai_edge_torch/generative/examples/paligemma/decoder2.py,sha256=
|
67
|
+
ai_edge_torch/generative/examples/paligemma/decoder.py,sha256=NJGhfPxVQjHDqea_lYGffjihOBdIYiXftiFTM6ccrwM,5475
|
68
|
+
ai_edge_torch/generative/examples/paligemma/decoder2.py,sha256=L6F6KWHqxdnGQTOp9P3c8r_K1Uxet0ZCcbdvmjWtIos,6513
|
69
69
|
ai_edge_torch/generative/examples/paligemma/image_encoder.py,sha256=yKPWG8aBp-GuzeyQntlzwTTcGBBjvUywVGRjnlNprmo,5574
|
70
|
-
ai_edge_torch/generative/examples/paligemma/paligemma.py,sha256=
|
70
|
+
ai_edge_torch/generative/examples/paligemma/paligemma.py,sha256=CEMG9gh51ev1KXPew927a6nfampiXX9bL6m-25tNYN8,6340
|
71
71
|
ai_edge_torch/generative/examples/paligemma/verify.py,sha256=KT3Ruy40tSESxQuy-Sw01NAI3zId1BZr6Bp7FZj1wZk,5622
|
72
72
|
ai_edge_torch/generative/examples/paligemma/verify_decoder.py,sha256=al5wMPWri4IRVWrLmCplPi6uoCzwh0vBHMGnCt-XUqo,2690
|
73
73
|
ai_edge_torch/generative/examples/paligemma/verify_decoder2.py,sha256=tm-UfLr0YeBRVcQsWLBOMWI9JUzHmtPEbYK2vpITpqY,2534
|
74
74
|
ai_edge_torch/generative/examples/paligemma/verify_image_encoder.py,sha256=vNm-wTT8BD6zbX6GocfP1QrVoHl0zSvuVxoXN36eeiU,3540
|
75
75
|
ai_edge_torch/generative/examples/phi/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
|
76
|
-
ai_edge_torch/generative/examples/phi/convert_phi3_to_tflite.py,sha256=
|
76
|
+
ai_edge_torch/generative/examples/phi/convert_phi3_to_tflite.py,sha256=CaI_-Vtd0j9FoWIDd8q5z4CFsGYUhTwEWGvMGaXICuU,2514
|
77
77
|
ai_edge_torch/generative/examples/phi/convert_to_tflite.py,sha256=g-MvEibJT_iIhkec2VGtFFA_iP54VCq9mY4KxwAYF08,2512
|
78
78
|
ai_edge_torch/generative/examples/phi/phi2.py,sha256=c6PYCky7yJn6MVIYOCTx8S_CH27kOPmJbRZcI95nbZs,3477
|
79
79
|
ai_edge_torch/generative/examples/phi/phi3.py,sha256=SHvJjmi5eIch5cYIWORt6YFmSQx_oCiOk1UbKKGibtk,7119
|
@@ -109,8 +109,8 @@ ai_edge_torch/generative/examples/t5/t5.py,sha256=gFTmPi-xB8pcPRgoF3DJxvH_fT-KWT
|
|
109
109
|
ai_edge_torch/generative/examples/t5/t5_attention.py,sha256=l01oYyJo77INzRwN4xqXquaFQPvCFBFF5zOnmGVb3Hg,8731
|
110
110
|
ai_edge_torch/generative/examples/test_models/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
|
111
111
|
ai_edge_torch/generative/examples/test_models/convert_toy_model.py,sha256=6-WaNHckq_LlXMVTh8x90MGWeWq2bu_T_XQd3w9FnGg,3261
|
112
|
-
ai_edge_torch/generative/examples/test_models/toy_model.py,sha256=
|
113
|
-
ai_edge_torch/generative/examples/test_models/toy_model_with_kv_cache.py,sha256=
|
112
|
+
ai_edge_torch/generative/examples/test_models/toy_model.py,sha256=Crpj-vOwSViHpblXOrRJmsIn4DrHyuB3XZ8kHifb7LA,5203
|
113
|
+
ai_edge_torch/generative/examples/test_models/toy_model_with_kv_cache.py,sha256=Ab_N9xc-4DImA-Pvevr-nnnslBXScXVo4Pw7L3_OlhI,4732
|
114
114
|
ai_edge_torch/generative/examples/tiny_llama/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
|
115
115
|
ai_edge_torch/generative/examples/tiny_llama/convert_to_tflite.py,sha256=VU0c5pgvrUtaTboT1xuDBGjpKOM85aqtaB_hYfSBuEk,2544
|
116
116
|
ai_edge_torch/generative/examples/tiny_llama/tiny_llama.py,sha256=mhJ18rb9sxrYRzv1YSzhbNs97oUZck99avZDcUO2oV8,2800
|
@@ -152,7 +152,7 @@ ai_edge_torch/generative/utilities/__init__.py,sha256=-_jxnnFnCgnTU4oTm4MnRsvL5l
|
|
152
152
|
ai_edge_torch/generative/utilities/converter.py,sha256=MY8BK29yD-W4v45Xdl_ErbNilipsTlD-4-y9MyBxR5g,7620
|
153
153
|
ai_edge_torch/generative/utilities/dynamic_update_slice.py,sha256=e2mhx-Vp8sUK4EXoPtpZLSx3TViqLAKs67EhKcXBjAQ,2121
|
154
154
|
ai_edge_torch/generative/utilities/loader.py,sha256=A3SOjPXp--AsvoP1hqj5QKWE4sgxoFc3H5EBUz_Eogc,13531
|
155
|
-
ai_edge_torch/generative/utilities/model_builder.py,sha256=
|
155
|
+
ai_edge_torch/generative/utilities/model_builder.py,sha256=6OBKyOmbg5Sap_np1wnajpCQ1fh8P0eONqNls9eHAX4,6778
|
156
156
|
ai_edge_torch/generative/utilities/moonshine_loader.py,sha256=_RpFabSqtGH5PHiP3_1f6QfO14qMADUxr_HGRlVDFB0,4891
|
157
157
|
ai_edge_torch/generative/utilities/stable_diffusion_loader.py,sha256=dqPD9qRXEWtU3ombslOC-BE2l_dMwHoCNu7NsIJhsso,36158
|
158
158
|
ai_edge_torch/generative/utilities/t5_loader.py,sha256=tEsfy8-ymzbbjOIc-oesXF3yGyyWtJgFXn2s7VOavt8,16961
|
@@ -206,8 +206,8 @@ ai_edge_torch/quantize/quant_config.py,sha256=U0KisSW-uZkoMJcy-ZP9W57p3tsa594fr9
|
|
206
206
|
ai_edge_torch/testing/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
|
207
207
|
ai_edge_torch/testing/model_coverage/__init__.py,sha256=5P8J6Zk5YYtDvTBucFvB9NGSRI7Gw_24WnrbhXgycEE,765
|
208
208
|
ai_edge_torch/testing/model_coverage/model_coverage.py,sha256=UPB448aMDUyC0HNYVqio2rcJPnDN0tBQMP08J6vPYew,4718
|
209
|
-
ai_edge_torch_nightly-0.3.0.
|
210
|
-
ai_edge_torch_nightly-0.3.0.
|
211
|
-
ai_edge_torch_nightly-0.3.0.
|
212
|
-
ai_edge_torch_nightly-0.3.0.
|
213
|
-
ai_edge_torch_nightly-0.3.0.
|
209
|
+
ai_edge_torch_nightly-0.3.0.dev20250112.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
210
|
+
ai_edge_torch_nightly-0.3.0.dev20250112.dist-info/METADATA,sha256=1LW-hPIYBABHsdpKZWcVFOLx0rb-z-h2oo2BUUKsp_o,1966
|
211
|
+
ai_edge_torch_nightly-0.3.0.dev20250112.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
212
|
+
ai_edge_torch_nightly-0.3.0.dev20250112.dist-info/top_level.txt,sha256=5KXRaF2hwkApYxf7Y8y_tVb9aulGTlbOoNdbx1aKRkE,14
|
213
|
+
ai_edge_torch_nightly-0.3.0.dev20250112.dist-info/RECORD,,
|
File without changes
|
File without changes
|