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.

Files changed (23) hide show
  1. ai_edge_torch/convert/conversion_utils.py +39 -18
  2. ai_edge_torch/convert/test/test_convert.py +106 -0
  3. ai_edge_torch/generative/examples/experimental/__init__.py +14 -0
  4. ai_edge_torch/generative/examples/experimental/gemma/__init__.py +14 -0
  5. ai_edge_torch/generative/examples/experimental/gemma/convert_to_tflite.py +87 -0
  6. ai_edge_torch/generative/examples/experimental/gemma/gemma.py +195 -0
  7. ai_edge_torch/generative/examples/experimental/phi/__init__.py +14 -0
  8. ai_edge_torch/generative/examples/experimental/phi/convert_to_tflite.py +84 -0
  9. ai_edge_torch/generative/examples/experimental/phi/phi2.py +184 -0
  10. ai_edge_torch/generative/examples/experimental/tiny_llama/__init__.py +14 -0
  11. ai_edge_torch/generative/examples/experimental/tiny_llama/convert_to_tflite.py +89 -0
  12. ai_edge_torch/generative/examples/experimental/tiny_llama/tiny_llama.py +185 -0
  13. ai_edge_torch/generative/examples/gemma/gemma.py +6 -2
  14. ai_edge_torch/generative/examples/phi2/phi2.py +5 -2
  15. ai_edge_torch/generative/examples/t5/t5.py +5 -2
  16. ai_edge_torch/generative/examples/test_models/toy_model_with_external_kv_cache.py +42 -27
  17. ai_edge_torch/generative/examples/tiny_llama/tiny_llama.py +6 -2
  18. ai_edge_torch/generative/test/test_experimental_ekv.py +122 -0
  19. {ai_edge_torch_nightly-0.2.0.dev20240718.dist-info → ai_edge_torch_nightly-0.2.0.dev20240720.dist-info}/METADATA +1 -1
  20. {ai_edge_torch_nightly-0.2.0.dev20240718.dist-info → ai_edge_torch_nightly-0.2.0.dev20240720.dist-info}/RECORD +23 -12
  21. {ai_edge_torch_nightly-0.2.0.dev20240718.dist-info → ai_edge_torch_nightly-0.2.0.dev20240720.dist-info}/LICENSE +0 -0
  22. {ai_edge_torch_nightly-0.2.0.dev20240718.dist-info → ai_edge_torch_nightly-0.2.0.dev20240720.dist-info}/WHEEL +0 -0
  23. {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
- print("running an inference")
160
- print(model.forward(tokens, input_pos))
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.dev20240718
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=PKXIlSCU-8DhppNBh9ICDNUlEOpV0HgCbt85jDVe3rA,13394
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=h0vOffr8saDQRkiXljNWDZ17EBjnS4xAtxd8DxETleY,9081
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=1lZfXGHmbII4rFu0U2B9NzlJCRhphxtmQtkCHQ39_uw,5935
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=PMhKC6JCAMYSj2F3UmWHWK4rTcXD-B6PuehaoDccRqk,5562
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=L6YrVzUEzP-Imb8W28LdukFGrx1aWSzz1kyYK_9RFZM,21087
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=zwCmCnhr-vhBwHqv9i7xMasdBGVNqAGxZvWsncsJn58,5543
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=IFRLPG9wz_aLl_zV_6CETCjSM03ukA6bZqqyDLVACuw,5651
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.dev20240718.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
118
- ai_edge_torch_nightly-0.2.0.dev20240718.dist-info/METADATA,sha256=r8YZWPZEhL5gi1oIR9sDZppTSZIuxeHH5isLO4NiSj8,1745
119
- ai_edge_torch_nightly-0.2.0.dev20240718.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
120
- ai_edge_torch_nightly-0.2.0.dev20240718.dist-info/top_level.txt,sha256=5KXRaF2hwkApYxf7Y8y_tVb9aulGTlbOoNdbx1aKRkE,14
121
- ai_edge_torch_nightly-0.2.0.dev20240718.dist-info/RECORD,,
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,,