ai-edge-torch-nightly 0.2.0.dev20240718__py3-none-any.whl → 0.2.0.dev20240720__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.
- ai_edge_torch/convert/conversion_utils.py +39 -18
- ai_edge_torch/convert/test/test_convert.py +106 -0
- ai_edge_torch/generative/examples/experimental/__init__.py +14 -0
- ai_edge_torch/generative/examples/experimental/gemma/__init__.py +14 -0
- ai_edge_torch/generative/examples/experimental/gemma/convert_to_tflite.py +87 -0
- ai_edge_torch/generative/examples/experimental/gemma/gemma.py +195 -0
- ai_edge_torch/generative/examples/experimental/phi/__init__.py +14 -0
- ai_edge_torch/generative/examples/experimental/phi/convert_to_tflite.py +84 -0
- ai_edge_torch/generative/examples/experimental/phi/phi2.py +184 -0
- ai_edge_torch/generative/examples/experimental/tiny_llama/__init__.py +14 -0
- ai_edge_torch/generative/examples/experimental/tiny_llama/convert_to_tflite.py +89 -0
- ai_edge_torch/generative/examples/experimental/tiny_llama/tiny_llama.py +185 -0
- ai_edge_torch/generative/examples/gemma/gemma.py +6 -2
- ai_edge_torch/generative/examples/phi2/phi2.py +5 -2
- ai_edge_torch/generative/examples/t5/t5.py +5 -2
- ai_edge_torch/generative/examples/test_models/toy_model_with_external_kv_cache.py +42 -27
- ai_edge_torch/generative/examples/tiny_llama/tiny_llama.py +6 -2
- ai_edge_torch/generative/test/test_experimental_ekv.py +122 -0
- {ai_edge_torch_nightly-0.2.0.dev20240718.dist-info → ai_edge_torch_nightly-0.2.0.dev20240720.dist-info}/METADATA +1 -1
- {ai_edge_torch_nightly-0.2.0.dev20240718.dist-info → ai_edge_torch_nightly-0.2.0.dev20240720.dist-info}/RECORD +23 -12
- {ai_edge_torch_nightly-0.2.0.dev20240718.dist-info → ai_edge_torch_nightly-0.2.0.dev20240720.dist-info}/LICENSE +0 -0
- {ai_edge_torch_nightly-0.2.0.dev20240718.dist-info → ai_edge_torch_nightly-0.2.0.dev20240720.dist-info}/WHEEL +0 -0
- {ai_edge_torch_nightly-0.2.0.dev20240718.dist-info → ai_edge_torch_nightly-0.2.0.dev20240720.dist-info}/top_level.txt +0 -0
|
@@ -149,6 +149,8 @@ def build_model(checkpoint_path, **kwargs) -> nn.Module:
|
|
|
149
149
|
|
|
150
150
|
|
|
151
151
|
def define_and_run() -> None:
|
|
152
|
+
current_dir = Path(__file__).parent.resolve()
|
|
153
|
+
tiny_llama_goldens = torch.load(current_dir / "tiny_llama_lm_logits.pt")
|
|
152
154
|
kv_cache_max_len = 1024
|
|
153
155
|
checkpoint_path = os.path.join(Path.home(), "Downloads/llm_data/tiny_llama")
|
|
154
156
|
model = build_model(checkpoint_path, kv_cache_max_len=kv_cache_max_len)
|
|
@@ -156,8 +158,10 @@ def define_and_run() -> None:
|
|
|
156
158
|
tokens = torch.full((1, kv_cache_max_len), 0, dtype=torch.long, device="cpu")
|
|
157
159
|
tokens[0, :4] = idx
|
|
158
160
|
input_pos = torch.arange(0, kv_cache_max_len)
|
|
159
|
-
|
|
160
|
-
|
|
161
|
+
lm_logits = model.forward(tokens, input_pos)
|
|
162
|
+
assert torch.allclose(
|
|
163
|
+
tiny_llama_goldens, lm_logits[0, idx.shape[1] - 1, :], atol=1e-05
|
|
164
|
+
)
|
|
161
165
|
|
|
162
166
|
|
|
163
167
|
if __name__ == "__main__":
|
|
@@ -0,0 +1,122 @@
|
|
|
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
|
+
# A suite of tests to validate experimental external KV Cache layers and models.
|
|
16
|
+
|
|
17
|
+
import unittest
|
|
18
|
+
|
|
19
|
+
import numpy as np
|
|
20
|
+
import torch
|
|
21
|
+
|
|
22
|
+
from ai_edge_torch.generative.examples.experimental.gemma import gemma
|
|
23
|
+
from ai_edge_torch.generative.examples.experimental.phi import phi2
|
|
24
|
+
from ai_edge_torch.generative.examples.experimental.tiny_llama import tiny_llama # NOQA
|
|
25
|
+
from ai_edge_torch.generative.layers.experimental import ekv_cache as kv_utils
|
|
26
|
+
import ai_edge_torch.generative.layers.model_config as cfg
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class TestExternalKVLayers(unittest.TestCase):
|
|
30
|
+
|
|
31
|
+
def _get_test_config(self, num_layers, head_dim, num_query_groups, kv_cache_max_len):
|
|
32
|
+
attn_config = cfg.AttentionConfig(num_heads=1, num_query_groups=num_query_groups)
|
|
33
|
+
config = cfg.ModelConfig(
|
|
34
|
+
kv_cache_max_len=kv_cache_max_len,
|
|
35
|
+
embedding_dim=head_dim,
|
|
36
|
+
attn_config=attn_config,
|
|
37
|
+
num_layers=num_layers,
|
|
38
|
+
max_seq_len=None,
|
|
39
|
+
vocab_size=None,
|
|
40
|
+
ff_config=None,
|
|
41
|
+
)
|
|
42
|
+
return config
|
|
43
|
+
|
|
44
|
+
def test_cache_udpate(self):
|
|
45
|
+
N = 1
|
|
46
|
+
HEAD_DIM = 2
|
|
47
|
+
NUM_QG = 1
|
|
48
|
+
KV_LEN = 4
|
|
49
|
+
config = self._get_test_config(
|
|
50
|
+
num_layers=N,
|
|
51
|
+
head_dim=HEAD_DIM,
|
|
52
|
+
num_query_groups=NUM_QG,
|
|
53
|
+
kv_cache_max_len=KV_LEN,
|
|
54
|
+
)
|
|
55
|
+
kv = kv_utils.EKVCache.from_model_config(config)
|
|
56
|
+
entry = kv.caches[0]
|
|
57
|
+
# single-slice update
|
|
58
|
+
input_pos = torch.tensor([1])
|
|
59
|
+
k_slice = v_slice = torch.full((1, 1, NUM_QG, HEAD_DIM), 5, dtype=torch.float)
|
|
60
|
+
updated_entry = kv_utils.update(entry, input_pos, k_slice, v_slice)
|
|
61
|
+
self.assertEqual(
|
|
62
|
+
updated_entry.k_cache.numpy().flatten().tolist(), [0, 0, 5, 5, 0, 0, 0, 0]
|
|
63
|
+
)
|
|
64
|
+
self.assertEqual(
|
|
65
|
+
updated_entry.v_cache.numpy().flatten().tolist(), [0, 0, 5, 5, 0, 0, 0, 0]
|
|
66
|
+
)
|
|
67
|
+
# multi-slice update
|
|
68
|
+
input_pos = torch.tensor([0, 3])
|
|
69
|
+
k_slice = v_slice = torch.full((1, 2, NUM_QG, HEAD_DIM), 7, dtype=torch.float)
|
|
70
|
+
updated_entry = kv_utils.update(entry, input_pos, k_slice, v_slice)
|
|
71
|
+
self.assertEqual(
|
|
72
|
+
updated_entry.k_cache.numpy().flatten().tolist(), [7, 7, 0, 0, 0, 0, 7, 7]
|
|
73
|
+
)
|
|
74
|
+
self.assertEqual(
|
|
75
|
+
updated_entry.v_cache.numpy().flatten().tolist(), [7, 7, 0, 0, 0, 0, 7, 7]
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
def test_serialization(self):
|
|
79
|
+
class TestModel(torch.nn.Module):
|
|
80
|
+
|
|
81
|
+
def forward(self, kv: kv_utils.EKVCache) -> kv_utils.EKVCache:
|
|
82
|
+
updated_kv_entries = [
|
|
83
|
+
kv_utils.KVCacheEntry(
|
|
84
|
+
torch.zeros_like(entry.k_cache), torch.zeros_like(entry.v_cache)
|
|
85
|
+
)
|
|
86
|
+
for entry in kv.caches
|
|
87
|
+
]
|
|
88
|
+
return kv_utils.EKVCache(updated_kv_entries)
|
|
89
|
+
|
|
90
|
+
N = 1
|
|
91
|
+
HEAD_DIM = 2
|
|
92
|
+
NUM_QG = 1
|
|
93
|
+
KV_LEN = 4
|
|
94
|
+
config = self._get_test_config(
|
|
95
|
+
num_layers=N,
|
|
96
|
+
head_dim=HEAD_DIM,
|
|
97
|
+
num_query_groups=NUM_QG,
|
|
98
|
+
kv_cache_max_len=KV_LEN,
|
|
99
|
+
)
|
|
100
|
+
kv = kv_utils.EKVCache.from_model_config(config)
|
|
101
|
+
model = TestModel()
|
|
102
|
+
exported_program = torch.export.export(model, (kv,))
|
|
103
|
+
input_specs = exported_program.graph_signature.input_specs
|
|
104
|
+
self.assertEqual(len(input_specs), 2)
|
|
105
|
+
self.assertEqual(input_specs[0].arg.name, "kv_k_0")
|
|
106
|
+
self.assertEqual(input_specs[1].arg.name, "kv_v_0")
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
class TestExternalKVModels(unittest.TestCase):
|
|
110
|
+
|
|
111
|
+
def test_can_build_gemma(self):
|
|
112
|
+
gemma.define_and_run_2b(checkpoint_path=None, test_model=True)
|
|
113
|
+
|
|
114
|
+
def test_can_build_phi2(self):
|
|
115
|
+
phi2.define_and_run(checkpoint_path=None, test_model=True)
|
|
116
|
+
|
|
117
|
+
def test_can_build_tinyllama(self):
|
|
118
|
+
tiny_llama.define_and_run(checkpoint_path=None, test_model=True)
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
if __name__ == "__main__":
|
|
122
|
+
unittest.main()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ai-edge-torch-nightly
|
|
3
|
-
Version: 0.2.0.
|
|
3
|
+
Version: 0.2.0.dev20240720
|
|
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=CNDboRP4zQBpz2hznNCQWcQCARvNXUm3DMa1Dw_XXFg,106
|
|
|
2
2
|
ai_edge_torch/model.py,sha256=8Ba9ia7TCM_fciulw6qObmzdcxL3IaLQKDqpR7Lxp-Q,4440
|
|
3
3
|
ai_edge_torch/convert/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
|
|
4
4
|
ai_edge_torch/convert/conversion.py,sha256=StJHglvx6cii36oi8sj-tZda009e9UqR6ufZOZkP1SY,4137
|
|
5
|
-
ai_edge_torch/convert/conversion_utils.py,sha256=
|
|
5
|
+
ai_edge_torch/convert/conversion_utils.py,sha256=TA-fbRApU_wdZYg8VmQSGiH4sm70iITsLRBBi5vODTw,13813
|
|
6
6
|
ai_edge_torch/convert/converter.py,sha256=hSrW6A-kix9cjdD6CuLL7rseWrLKoV6GRy-iUSW_nZc,7875
|
|
7
7
|
ai_edge_torch/convert/to_channel_last_io.py,sha256=zo5tY3yDhY_EPCkrL1XSXs2uRFS8B4_qu08dSjNsUGk,2778
|
|
8
8
|
ai_edge_torch/convert/fx_passes/__init__.py,sha256=EPs4PSIDLuRH5EBETi6deaOvaaf_Q4xD3_9NVcR7x8o,2810
|
|
@@ -22,7 +22,7 @@ ai_edge_torch/convert/fx_passes/optimize_layout_transposes_pass/layout_partition
|
|
|
22
22
|
ai_edge_torch/convert/fx_passes/optimize_layout_transposes_pass/layout_partitioners/greedy.py,sha256=8uHJbIwPMTgeSfYVba163pkXSQkHLxFwar_8A1AhgAM,2279
|
|
23
23
|
ai_edge_torch/convert/fx_passes/optimize_layout_transposes_pass/layout_partitioners/min_cut.py,sha256=lklGxE1R32vsjFbhLLBDEFL4pfLi_iTgI9Ftb6Grezk,7156
|
|
24
24
|
ai_edge_torch/convert/test/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
|
|
25
|
-
ai_edge_torch/convert/test/test_convert.py,sha256=
|
|
25
|
+
ai_edge_torch/convert/test/test_convert.py,sha256=itOZDKsh0-0aoly1b1M72M179Yr2BJqtTe6ivueZSc4,12607
|
|
26
26
|
ai_edge_torch/convert/test/test_convert_composites.py,sha256=8UkdPtGkjgSVLCzB_rpM2FmwYuMyt6WE48umX_kr_Sg,7601
|
|
27
27
|
ai_edge_torch/convert/test/test_convert_multisig.py,sha256=kMaGnHe9ylfyU68qCifYcaGwJqyejKz--QQt9jS2oUA,4537
|
|
28
28
|
ai_edge_torch/convert/test/test_to_channel_last_io.py,sha256=I8c4ZG3v1vo0yxQYzLK_BTId4AOL9vadHGDtfCUZ4UI,2930
|
|
@@ -35,12 +35,22 @@ ai_edge_torch/debug/test/test_search_model.py,sha256=0guAEon5cvwBpPXk6J0wVOKj7TX
|
|
|
35
35
|
ai_edge_torch/experimental/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
|
|
36
36
|
ai_edge_torch/generative/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
|
|
37
37
|
ai_edge_torch/generative/examples/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
|
|
38
|
+
ai_edge_torch/generative/examples/experimental/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
|
|
39
|
+
ai_edge_torch/generative/examples/experimental/gemma/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
|
|
40
|
+
ai_edge_torch/generative/examples/experimental/gemma/convert_to_tflite.py,sha256=bW_KOj_3fcZAggfST3zHWcMcNJs70b0pld-vvauAOgo,3076
|
|
41
|
+
ai_edge_torch/generative/examples/experimental/gemma/gemma.py,sha256=u4DNsZRnN7whDoK8yQet9Yahb01ToVqTuFQmWV1__1g,6606
|
|
42
|
+
ai_edge_torch/generative/examples/experimental/phi/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
|
|
43
|
+
ai_edge_torch/generative/examples/experimental/phi/convert_to_tflite.py,sha256=sLU35tpQ-PEbhZbLfC1vSqM-HamKREVBpIoywWh9O3M,3036
|
|
44
|
+
ai_edge_torch/generative/examples/experimental/phi/phi2.py,sha256=zgxB2JSFAevyS28C6-wIBaQeeKTUejUJY4dnR4BqRBI,6150
|
|
45
|
+
ai_edge_torch/generative/examples/experimental/tiny_llama/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
|
|
46
|
+
ai_edge_torch/generative/examples/experimental/tiny_llama/convert_to_tflite.py,sha256=PChEhBotZ8k6GZiq9e_AYnn3RyhNIVm_U96QhVjx3jY,3126
|
|
47
|
+
ai_edge_torch/generative/examples/experimental/tiny_llama/tiny_llama.py,sha256=1vL0u6Pkd8SV8uei9BGzSAIokclT_RaE3K0IczoPfeI,6291
|
|
38
48
|
ai_edge_torch/generative/examples/gemma/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
|
|
39
49
|
ai_edge_torch/generative/examples/gemma/convert_to_tflite.py,sha256=UMEZGDGhFvAX4eT5KHAE1Xbxw-qtQWEMxgvB8cSH6wY,2531
|
|
40
|
-
ai_edge_torch/generative/examples/gemma/gemma.py,sha256=
|
|
50
|
+
ai_edge_torch/generative/examples/gemma/gemma.py,sha256=YyGGsgEByIg_tIysMBqaBztf_csthZIjah8mmH5o7UA,6144
|
|
41
51
|
ai_edge_torch/generative/examples/phi2/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
|
|
42
52
|
ai_edge_torch/generative/examples/phi2/convert_to_tflite.py,sha256=uF1A2EX8xYie30-T2Z7s1WZCtFhp5CEwRV8SCd7Umrc,2505
|
|
43
|
-
ai_edge_torch/generative/examples/phi2/phi2.py,sha256=
|
|
53
|
+
ai_edge_torch/generative/examples/phi2/phi2.py,sha256=KjfTrD2OBzOfq83-XvJ6ZhmXLuP_VqugSOwyj-M5YY4,5767
|
|
44
54
|
ai_edge_torch/generative/examples/stable_diffusion/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
|
|
45
55
|
ai_edge_torch/generative/examples/stable_diffusion/attention.py,sha256=Lo4Dq7a3Kg-lyH56iqGtqCo5UaClQHRCTDdNagXGTo8,3535
|
|
46
56
|
ai_edge_torch/generative/examples/stable_diffusion/clip.py,sha256=P-cUUQaQKGKV2p-7hvLJ--RpCIA7gk8WCDRgg0pNtd0,4331
|
|
@@ -58,15 +68,15 @@ ai_edge_torch/generative/examples/stable_diffusion/samplers/k_lms.py,sha256=iPYX
|
|
|
58
68
|
ai_edge_torch/generative/examples/stable_diffusion/samplers/sampler.py,sha256=5iRfU5MO6GR6K3WrdddIU_9U7ZZGEEb7zGKVY1WFl-8,1340
|
|
59
69
|
ai_edge_torch/generative/examples/t5/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
|
|
60
70
|
ai_edge_torch/generative/examples/t5/convert_to_tflite.py,sha256=7RwaZQaKhFt3zKAUbFjq95CSYhL1nd9BVSbSRNJp4-4,4529
|
|
61
|
-
ai_edge_torch/generative/examples/t5/t5.py,sha256=
|
|
71
|
+
ai_edge_torch/generative/examples/t5/t5.py,sha256=fVtJ0S8v2bMtvEuDqD6Orw7CTyXqnRIqZfKcz7DBeJc,21212
|
|
62
72
|
ai_edge_torch/generative/examples/t5/t5_attention.py,sha256=KaGzCAViNOpJIQbRF-ItouuVPqI9nroWRRGN-KFYKZs,8357
|
|
63
73
|
ai_edge_torch/generative/examples/test_models/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
|
|
64
74
|
ai_edge_torch/generative/examples/test_models/toy_model.py,sha256=Sf3ZMYv-iuMRKAKLow47qth8vTF1zl6i8TxJ9uT_StU,3885
|
|
65
|
-
ai_edge_torch/generative/examples/test_models/toy_model_with_external_kv_cache.py,sha256=
|
|
75
|
+
ai_edge_torch/generative/examples/test_models/toy_model_with_external_kv_cache.py,sha256=jmucKpWY_nHEOAh7G62IxpReNmrKWo4PxfELul_h9xQ,5796
|
|
66
76
|
ai_edge_torch/generative/examples/test_models/toy_model_with_kv_cache.py,sha256=lfYUiem_Pbn3vGgPx84BeI8n7rN3-1fImwCLm8Eo2U8,4853
|
|
67
77
|
ai_edge_torch/generative/examples/tiny_llama/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
68
78
|
ai_edge_torch/generative/examples/tiny_llama/convert_to_tflite.py,sha256=nT7Fh-f5ZdwaK3dPoCvZflpJ4fRHjLdFMjk1_uw3-b8,2559
|
|
69
|
-
ai_edge_torch/generative/examples/tiny_llama/tiny_llama.py,sha256=
|
|
79
|
+
ai_edge_torch/generative/examples/tiny_llama/tiny_llama.py,sha256=to9IlF-X_uIJvO-roZOW1ZMUhmkYbvFjc-tUVaQr6TE,5848
|
|
70
80
|
ai_edge_torch/generative/fx_passes/__init__.py,sha256=aXvYiaHDvETIrh0Q9DDZA_ZBiazGk80DT6nt7lLtC1o,1172
|
|
71
81
|
ai_edge_torch/generative/fx_passes/remove_sdpa_zero_mask_pass.py,sha256=BCAcc_OcEjvbaXQSbc8vlKeMad7E3gCA4BNsUdWRwBI,1966
|
|
72
82
|
ai_edge_torch/generative/layers/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
|
|
@@ -94,6 +104,7 @@ ai_edge_torch/generative/quantize/ai_edge_quantizer_glue/__init__.py,sha256=47DE
|
|
|
94
104
|
ai_edge_torch/generative/quantize/ai_edge_quantizer_glue/translate_recipe.py,sha256=iTNPrlubmq9ia7C3zHl50J2YEMsc4o33GwL5tr5VkkE,5229
|
|
95
105
|
ai_edge_torch/generative/test/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
|
|
96
106
|
ai_edge_torch/generative/test/loader_test.py,sha256=N88CbrLW7Q2x1EyurwdXQ6YjsA-ySQcPxpZH3QOGp-M,3317
|
|
107
|
+
ai_edge_torch/generative/test/test_experimental_ekv.py,sha256=qMR0r7Pr_t2bn-cyeA7Qw_Rl94H1NmFcqM2ua8gpDDw,4230
|
|
97
108
|
ai_edge_torch/generative/test/test_model_conversion.py,sha256=LsPTrLC1I4JW2GowTS3V9Eu257vLHr2Yj5f_qaFUX84,7589
|
|
98
109
|
ai_edge_torch/generative/test/test_quantize.py,sha256=QbF7LC9olJFGXqlAVGciac7xXc4rDtCSr71tTIYuqPk,5230
|
|
99
110
|
ai_edge_torch/generative/utilities/__init__.py,sha256=-_jxnnFnCgnTU4oTm4MnRsvL5lqhomBNdFBbqfmfHPo,720
|
|
@@ -114,8 +125,8 @@ ai_edge_torch/quantize/quant_config.py,sha256=eO9Ra160ITjQSyRBEGy6nNIVH3gYacSWDd
|
|
|
114
125
|
ai_edge_torch/testing/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
|
|
115
126
|
ai_edge_torch/testing/model_coverage/__init__.py,sha256=5P8J6Zk5YYtDvTBucFvB9NGSRI7Gw_24WnrbhXgycEE,765
|
|
116
127
|
ai_edge_torch/testing/model_coverage/model_coverage.py,sha256=kzIulTldq8R9E-lAZsvfSTvLu3FYEX7b9DyYM3qisXM,4485
|
|
117
|
-
ai_edge_torch_nightly-0.2.0.
|
|
118
|
-
ai_edge_torch_nightly-0.2.0.
|
|
119
|
-
ai_edge_torch_nightly-0.2.0.
|
|
120
|
-
ai_edge_torch_nightly-0.2.0.
|
|
121
|
-
ai_edge_torch_nightly-0.2.0.
|
|
128
|
+
ai_edge_torch_nightly-0.2.0.dev20240720.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
|
129
|
+
ai_edge_torch_nightly-0.2.0.dev20240720.dist-info/METADATA,sha256=xkXzcnmvTzJRRNOJ2c8JnWS1ZCofdlZiKsW5sa5sDyM,1745
|
|
130
|
+
ai_edge_torch_nightly-0.2.0.dev20240720.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
131
|
+
ai_edge_torch_nightly-0.2.0.dev20240720.dist-info/top_level.txt,sha256=5KXRaF2hwkApYxf7Y8y_tVb9aulGTlbOoNdbx1aKRkE,14
|
|
132
|
+
ai_edge_torch_nightly-0.2.0.dev20240720.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|