ai-edge-torch-nightly 0.3.0.dev20250109__py3-none-any.whl → 0.3.0.dev20250112__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/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
|