ai-edge-torch-nightly 0.2.0.dev20240703__py3-none-any.whl → 0.2.0.dev20240704__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/generative/examples/gemma/convert_to_tflite.py +1 -1
- ai_edge_torch/generative/examples/phi2/convert_to_tflite.py +1 -1
- ai_edge_torch/generative/examples/t5/convert_to_tflite.py +1 -1
- ai_edge_torch/generative/examples/test_models/toy_model.py +5 -2
- ai_edge_torch/generative/examples/tiny_llama/convert_to_tflite.py +1 -1
- ai_edge_torch/generative/quantize/ai_edge_quantizer_glue/translate_recipe.py +31 -47
- ai_edge_torch/generative/quantize/example.py +1 -1
- ai_edge_torch/generative/quantize/quant_recipes.py +2 -2
- ai_edge_torch/generative/test/test_quantize.py +13 -15
- {ai_edge_torch_nightly-0.2.0.dev20240703.dist-info → ai_edge_torch_nightly-0.2.0.dev20240704.dist-info}/METADATA +1 -1
- {ai_edge_torch_nightly-0.2.0.dev20240703.dist-info → ai_edge_torch_nightly-0.2.0.dev20240704.dist-info}/RECORD +14 -14
- {ai_edge_torch_nightly-0.2.0.dev20240703.dist-info → ai_edge_torch_nightly-0.2.0.dev20240704.dist-info}/LICENSE +0 -0
- {ai_edge_torch_nightly-0.2.0.dev20240703.dist-info → ai_edge_torch_nightly-0.2.0.dev20240704.dist-info}/WHEEL +0 -0
- {ai_edge_torch_nightly-0.2.0.dev20240703.dist-info → ai_edge_torch_nightly-0.2.0.dev20240704.dist-info}/top_level.txt +0 -0
|
@@ -50,7 +50,7 @@ def convert_gemma_to_tflite(
|
|
|
50
50
|
decode_token = torch.tensor([[0]], dtype=torch.long)
|
|
51
51
|
decode_input_pos = torch.tensor([0], dtype=torch.int64)
|
|
52
52
|
|
|
53
|
-
quant_config = quant_recipes.
|
|
53
|
+
quant_config = quant_recipes.full_int8_dynamic_recipe() if quantize else None
|
|
54
54
|
edge_model = (
|
|
55
55
|
ai_edge_torch.signature(
|
|
56
56
|
'prefill', pytorch_model, (prefill_tokens, prefill_input_pos)
|
|
@@ -48,7 +48,7 @@ def convert_phi2_to_tflite(
|
|
|
48
48
|
decode_token = torch.tensor([[0]], dtype=torch.long)
|
|
49
49
|
decode_input_pos = torch.tensor([0], dtype=torch.int64)
|
|
50
50
|
|
|
51
|
-
quant_config = quant_recipes.
|
|
51
|
+
quant_config = quant_recipes.full_int8_dynamic_recipe() if quantize else None
|
|
52
52
|
edge_model = (
|
|
53
53
|
ai_edge_torch.signature(
|
|
54
54
|
'prefill', pytorch_model, (prefill_tokens, prefill_input_pos)
|
|
@@ -101,7 +101,7 @@ def convert_t5_to_tflite_multisig(checkpoint_path: str):
|
|
|
101
101
|
# Pad with `-inf` for any tokens indices that aren't desired.
|
|
102
102
|
pad_mask = torch.zeros([seq_len], dtype=torch.float32)
|
|
103
103
|
hidden_states = torch.zeros((1, 512, 768), dtype=torch.float32)
|
|
104
|
-
quant_config = quant_recipes.
|
|
104
|
+
quant_config = quant_recipes.full_int8_dynamic_recipe()
|
|
105
105
|
|
|
106
106
|
edge_model = (
|
|
107
107
|
ai_edge_torch.signature(
|
|
@@ -70,7 +70,7 @@ class ToySingleLayerModel(torch.nn.Module):
|
|
|
70
70
|
return self.lm_head(x)
|
|
71
71
|
|
|
72
72
|
|
|
73
|
-
def
|
|
73
|
+
def get_model_config() -> cfg.ModelConfig:
|
|
74
74
|
attn_config = cfg.AttentionConfig(
|
|
75
75
|
num_heads=32, num_query_groups=4, rotary_percentage=1.0, enable_kv_cache=False
|
|
76
76
|
)
|
|
@@ -91,8 +91,11 @@ def define_and_run() -> None:
|
|
|
91
91
|
pre_ff_norm_config=norm_config,
|
|
92
92
|
final_norm_config=norm_config,
|
|
93
93
|
)
|
|
94
|
+
return config
|
|
95
|
+
|
|
94
96
|
|
|
95
|
-
|
|
97
|
+
def define_and_run() -> None:
|
|
98
|
+
model = ToySingleLayerModel(get_model_config())
|
|
96
99
|
idx = torch.unsqueeze(torch.arange(0, KV_CACHE_MAX_LEN), 0)
|
|
97
100
|
input_pos = torch.arange(0, KV_CACHE_MAX_LEN)
|
|
98
101
|
print('running an inference')
|
|
@@ -50,7 +50,7 @@ def convert_tiny_llama_to_tflite(
|
|
|
50
50
|
decode_token = torch.tensor([[0]], dtype=torch.long)
|
|
51
51
|
decode_input_pos = torch.tensor([0], dtype=torch.int64)
|
|
52
52
|
|
|
53
|
-
quant_config = quant_recipes.
|
|
53
|
+
quant_config = quant_recipes.full_int8_dynamic_recipe() if quantize else None
|
|
54
54
|
edge_model = (
|
|
55
55
|
ai_edge_torch.signature(
|
|
56
56
|
'prefill', pytorch_model, (prefill_tokens, prefill_input_pos)
|
|
@@ -26,12 +26,10 @@ _TensorQuantConfig = quantizer.qtyping.TensorQuantizationConfig
|
|
|
26
26
|
_OpQuantConfig = quantizer.qtyping.OpQuantizationConfig
|
|
27
27
|
|
|
28
28
|
_DEFAULT_REGEX_STR = '.*'
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
'transformer_blocks\[{}\]/ai_edge_torch.generative.layers.feed_forward'
|
|
34
|
-
)
|
|
29
|
+
_SINGULAR_TRANSFORMER_BLOCK_REGEX_STR = 'transformer_block'
|
|
30
|
+
_IDX_TRANSFORMER_BLOCKS_REGEX_STR = 'transformer_blocks\[{}\]'
|
|
31
|
+
_ATTENTION_REGEX_STR = 'ai_edge_torch.generative.layers.attention'
|
|
32
|
+
_FEEDFORWARD_REGEX_STR = 'ai_edge_torch.generative.layers.feed_forward'
|
|
35
33
|
_EMBEDDING_REGEX_STR = 'Embedding_tok_embedding'
|
|
36
34
|
_ANY_TWO_DIGITS_REGEX_STR = '\d{1,2}'
|
|
37
35
|
|
|
@@ -82,27 +80,20 @@ def _set_quant_config(
|
|
|
82
80
|
layer_recipe: quant_recipe.LayerQuantRecipe,
|
|
83
81
|
regex: str,
|
|
84
82
|
):
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
dtype=_get_dtype_from_dtype(layer_recipe.weight_dtype),
|
|
100
|
-
),
|
|
101
|
-
execution_mode=_get_execution_mode_from_mode(layer_recipe.mode),
|
|
102
|
-
),
|
|
103
|
-
algorithm_key=_get_algorithm_key_from_algorithm(layer_recipe.algorithm),
|
|
104
|
-
override_algorithm=True,
|
|
105
|
-
)
|
|
83
|
+
rm.add_quantization_config(
|
|
84
|
+
regex=regex,
|
|
85
|
+
operation_name=_OpName.ALL_SUPPORTED,
|
|
86
|
+
op_config=_OpQuantConfig(
|
|
87
|
+
weight_tensor_config=_TensorQuantConfig(
|
|
88
|
+
num_bits=_get_nbits_from_dtype(layer_recipe.weight_dtype),
|
|
89
|
+
symmetric=True,
|
|
90
|
+
channel_wise=_get_channelwise_from_granularity(layer_recipe.granularity),
|
|
91
|
+
dtype=_get_dtype_from_dtype(layer_recipe.weight_dtype),
|
|
92
|
+
),
|
|
93
|
+
execution_mode=_get_execution_mode_from_mode(layer_recipe.mode),
|
|
94
|
+
),
|
|
95
|
+
algorithm_key=_get_algorithm_key_from_algorithm(layer_recipe.algorithm),
|
|
96
|
+
)
|
|
106
97
|
|
|
107
98
|
|
|
108
99
|
def translate_to_ai_edge_recipe(
|
|
@@ -119,23 +110,31 @@ def translate_to_ai_edge_recipe(
|
|
|
119
110
|
if recipe.attention is not None:
|
|
120
111
|
if isinstance(recipe.attention, dict):
|
|
121
112
|
for idx, layer in recipe.attention.items():
|
|
122
|
-
_set_quant_config(
|
|
113
|
+
_set_quant_config(
|
|
114
|
+
rm,
|
|
115
|
+
layer,
|
|
116
|
+
f'{_IDX_TRANSFORMER_BLOCKS_REGEX_STR.format(idx)}/{_ATTENTION_REGEX_STR}',
|
|
117
|
+
)
|
|
123
118
|
else:
|
|
124
119
|
_set_quant_config(
|
|
125
120
|
rm,
|
|
126
121
|
recipe.attention,
|
|
127
|
-
|
|
122
|
+
f'{_SINGULAR_TRANSFORMER_BLOCK_REGEX_STR}/{_ATTENTION_REGEX_STR}',
|
|
128
123
|
)
|
|
129
124
|
|
|
130
125
|
if recipe.feedforward is not None:
|
|
131
126
|
if isinstance(recipe.feedforward, dict):
|
|
132
127
|
for idx, layer in recipe.feedforward.items():
|
|
133
|
-
_set_quant_config(
|
|
128
|
+
_set_quant_config(
|
|
129
|
+
rm,
|
|
130
|
+
layer,
|
|
131
|
+
f'{_IDX_TRANSFORMER_BLOCKS_REGEX_STR.format(idx)}/{_FEEDFORWARD_REGEX_STR}',
|
|
132
|
+
)
|
|
134
133
|
else:
|
|
135
134
|
_set_quant_config(
|
|
136
135
|
rm,
|
|
137
136
|
recipe.feedforward,
|
|
138
|
-
|
|
137
|
+
f'{_SINGULAR_TRANSFORMER_BLOCK_REGEX_STR}/{_FEEDFORWARD_REGEX_STR}',
|
|
139
138
|
)
|
|
140
139
|
|
|
141
140
|
return rm.get_quantization_recipe()
|
|
@@ -144,21 +143,6 @@ def translate_to_ai_edge_recipe(
|
|
|
144
143
|
def quantize_model(
|
|
145
144
|
model: bytearray, recipe: quantizer.recipe_manager.ModelQuantizationRecipe
|
|
146
145
|
) -> bytearray:
|
|
147
|
-
|
|
148
|
-
tmp_model_path = '/tmp/tmp.tflite'
|
|
149
|
-
tmp_recipe_path = '/tmp/recipe.json'
|
|
150
|
-
with open(tmp_model_path, 'wb') as fp:
|
|
151
|
-
fp.write(model)
|
|
152
|
-
with open(tmp_recipe_path, 'w') as rp:
|
|
153
|
-
rp.write(json.dumps(recipe))
|
|
154
|
-
|
|
155
|
-
qt = quantizer.Quantizer(tmp_model_path, tmp_recipe_path)
|
|
146
|
+
qt = quantizer.Quantizer(bytearray(model), recipe)
|
|
156
147
|
result = qt.quantize()
|
|
157
|
-
|
|
158
|
-
# TODO(b/336599483): Remove tempfile and use bytearray instead
|
|
159
|
-
import os
|
|
160
|
-
|
|
161
|
-
os.remove(tmp_model_path)
|
|
162
|
-
os.remove(tmp_recipe_path)
|
|
163
|
-
|
|
164
148
|
return result.quantized_model
|
|
@@ -31,7 +31,7 @@ def main():
|
|
|
31
31
|
input_pos = torch.arange(0, 10)
|
|
32
32
|
|
|
33
33
|
# Create a quantization recipe to be applied to the model
|
|
34
|
-
quant_config = quant_recipes.
|
|
34
|
+
quant_config = quant_recipes.full_int8_dynamic_recipe()
|
|
35
35
|
print(quant_config)
|
|
36
36
|
|
|
37
37
|
# Convert with quantization
|
|
@@ -21,7 +21,7 @@ ai_edge_torch/generative/layers/model_config.py:ModelConfig.
|
|
|
21
21
|
|
|
22
22
|
Typical usage example:
|
|
23
23
|
|
|
24
|
-
quant_config = quant_recipes.
|
|
24
|
+
quant_config = quant_recipes.full_int8_dynamic_recipe()
|
|
25
25
|
edge_model = ai_edge_torch.convert(
|
|
26
26
|
model, (tokens, input_pos), quant_config=quant_config
|
|
27
27
|
)
|
|
@@ -32,7 +32,7 @@ from ai_edge_torch.generative.quantize import quant_recipe_utils
|
|
|
32
32
|
from ai_edge_torch.quantize import quant_config
|
|
33
33
|
|
|
34
34
|
|
|
35
|
-
def
|
|
35
|
+
def full_int8_dynamic_recipe() -> quant_config.QuantConfig:
|
|
36
36
|
return quant_config.QuantConfig(
|
|
37
37
|
generative_recipe=quant_recipe.GenerativeQuantRecipe(
|
|
38
38
|
default=quant_recipe_utils.create_layer_quant_int8_dynamic(),
|
|
@@ -19,7 +19,7 @@ from parameterized import parameterized
|
|
|
19
19
|
import torch
|
|
20
20
|
|
|
21
21
|
import ai_edge_torch
|
|
22
|
-
from ai_edge_torch.generative.examples.test_models import
|
|
22
|
+
from ai_edge_torch.generative.examples.test_models import toy_model # NOQA
|
|
23
23
|
from ai_edge_torch.generative.quantize import quant_recipe
|
|
24
24
|
from ai_edge_torch.generative.quantize import quant_recipe_utils
|
|
25
25
|
from ai_edge_torch.generative.quantize import quant_recipes
|
|
@@ -93,35 +93,33 @@ class TestVerifyRecipes(unittest.TestCase):
|
|
|
93
93
|
class TestQuantizeConvert(unittest.TestCase):
|
|
94
94
|
"""Test conversion with quantization."""
|
|
95
95
|
|
|
96
|
-
def
|
|
96
|
+
def _attention_int8_dynamic_recipe() -> quant_config.QuantConfig:
|
|
97
97
|
return quant_config.QuantConfig(
|
|
98
98
|
generative_recipe=quant_recipe.GenerativeQuantRecipe(
|
|
99
|
-
attention=
|
|
99
|
+
attention=quant_recipe_utils.create_layer_quant_int8_dynamic(),
|
|
100
100
|
)
|
|
101
101
|
)
|
|
102
102
|
|
|
103
|
-
def
|
|
103
|
+
def _feedforward_int8_dynamic_recipe() -> quant_config.QuantConfig:
|
|
104
104
|
return quant_config.QuantConfig(
|
|
105
105
|
generative_recipe=quant_recipe.GenerativeQuantRecipe(
|
|
106
|
-
feedforward=
|
|
106
|
+
feedforward=quant_recipe_utils.create_layer_quant_int8_dynamic(),
|
|
107
107
|
)
|
|
108
108
|
)
|
|
109
109
|
|
|
110
110
|
@parameterized.expand(
|
|
111
111
|
[
|
|
112
|
-
(quant_recipes.full_fp16_recipe(), 0.
|
|
113
|
-
(quant_recipes.
|
|
114
|
-
(
|
|
115
|
-
(
|
|
112
|
+
(quant_recipes.full_fp16_recipe(), 0.65),
|
|
113
|
+
(quant_recipes.full_int8_dynamic_recipe(), 0.47),
|
|
114
|
+
(_attention_int8_dynamic_recipe(), 0.89),
|
|
115
|
+
(_feedforward_int8_dynamic_recipe(), 0.72),
|
|
116
116
|
]
|
|
117
117
|
)
|
|
118
118
|
def test_quantize_convert_toy_sizes(self, quant_config, expected_compression):
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
[10], dtype=torch.int64
|
|
124
|
-
)
|
|
119
|
+
config = toy_model.get_model_config()
|
|
120
|
+
pytorch_model = toy_model.ToySingleLayerModel(config)
|
|
121
|
+
idx = torch.unsqueeze(torch.arange(0, 100), 0)
|
|
122
|
+
input_pos = torch.arange(0, 100)
|
|
125
123
|
|
|
126
124
|
quantized_model = ai_edge_torch.convert(
|
|
127
125
|
pytorch_model, (idx, input_pos), quant_config=quant_config
|
|
@@ -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.dev20240704
|
|
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
|
|
@@ -36,10 +36,10 @@ ai_edge_torch/experimental/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrK
|
|
|
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
38
|
ai_edge_torch/generative/examples/gemma/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
|
|
39
|
-
ai_edge_torch/generative/examples/gemma/convert_to_tflite.py,sha256=
|
|
39
|
+
ai_edge_torch/generative/examples/gemma/convert_to_tflite.py,sha256=UMEZGDGhFvAX4eT5KHAE1Xbxw-qtQWEMxgvB8cSH6wY,2531
|
|
40
40
|
ai_edge_torch/generative/examples/gemma/gemma.py,sha256=1lZfXGHmbII4rFu0U2B9NzlJCRhphxtmQtkCHQ39_uw,5935
|
|
41
41
|
ai_edge_torch/generative/examples/phi2/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
|
|
42
|
-
ai_edge_torch/generative/examples/phi2/convert_to_tflite.py,sha256=
|
|
42
|
+
ai_edge_torch/generative/examples/phi2/convert_to_tflite.py,sha256=uF1A2EX8xYie30-T2Z7s1WZCtFhp5CEwRV8SCd7Umrc,2505
|
|
43
43
|
ai_edge_torch/generative/examples/phi2/phi2.py,sha256=PMhKC6JCAMYSj2F3UmWHWK4rTcXD-B6PuehaoDccRqk,5562
|
|
44
44
|
ai_edge_torch/generative/examples/stable_diffusion/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
|
|
45
45
|
ai_edge_torch/generative/examples/stable_diffusion/attention.py,sha256=Lo4Dq7a3Kg-lyH56iqGtqCo5UaClQHRCTDdNagXGTo8,3535
|
|
@@ -57,15 +57,15 @@ ai_edge_torch/generative/examples/stable_diffusion/samplers/k_euler_ancestral.py
|
|
|
57
57
|
ai_edge_torch/generative/examples/stable_diffusion/samplers/k_lms.py,sha256=iPYX9ZSaxwSak2KI44j6TEr_g4pdxS3xpka4u0trjbo,2788
|
|
58
58
|
ai_edge_torch/generative/examples/stable_diffusion/samplers/sampler.py,sha256=5iRfU5MO6GR6K3WrdddIU_9U7ZZGEEb7zGKVY1WFl-8,1340
|
|
59
59
|
ai_edge_torch/generative/examples/t5/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
|
|
60
|
-
ai_edge_torch/generative/examples/t5/convert_to_tflite.py,sha256=
|
|
60
|
+
ai_edge_torch/generative/examples/t5/convert_to_tflite.py,sha256=7RwaZQaKhFt3zKAUbFjq95CSYhL1nd9BVSbSRNJp4-4,4529
|
|
61
61
|
ai_edge_torch/generative/examples/t5/t5.py,sha256=L6YrVzUEzP-Imb8W28LdukFGrx1aWSzz1kyYK_9RFZM,21087
|
|
62
62
|
ai_edge_torch/generative/examples/t5/t5_attention.py,sha256=rkMwi-NJGBXHm5S57Rsj1LbcoVdyRkS7GmIBuU6F_2E,8274
|
|
63
63
|
ai_edge_torch/generative/examples/test_models/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
|
|
64
|
-
ai_edge_torch/generative/examples/test_models/toy_model.py,sha256=
|
|
64
|
+
ai_edge_torch/generative/examples/test_models/toy_model.py,sha256=Sf3ZMYv-iuMRKAKLow47qth8vTF1zl6i8TxJ9uT_StU,3885
|
|
65
65
|
ai_edge_torch/generative/examples/test_models/toy_model_with_external_kv_cache.py,sha256=zwCmCnhr-vhBwHqv9i7xMasdBGVNqAGxZvWsncsJn58,5543
|
|
66
66
|
ai_edge_torch/generative/examples/test_models/toy_model_with_kv_cache.py,sha256=lfYUiem_Pbn3vGgPx84BeI8n7rN3-1fImwCLm8Eo2U8,4853
|
|
67
67
|
ai_edge_torch/generative/examples/tiny_llama/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
68
|
-
ai_edge_torch/generative/examples/tiny_llama/convert_to_tflite.py,sha256=
|
|
68
|
+
ai_edge_torch/generative/examples/tiny_llama/convert_to_tflite.py,sha256=nT7Fh-f5ZdwaK3dPoCvZflpJ4fRHjLdFMjk1_uw3-b8,2559
|
|
69
69
|
ai_edge_torch/generative/examples/tiny_llama/tiny_llama.py,sha256=IFRLPG9wz_aLl_zV_6CETCjSM03ukA6bZqqyDLVACuw,5651
|
|
70
70
|
ai_edge_torch/generative/fx_passes/__init__.py,sha256=aXvYiaHDvETIrh0Q9DDZA_ZBiazGk80DT6nt7lLtC1o,1172
|
|
71
71
|
ai_edge_torch/generative/fx_passes/remove_sdpa_zero_mask_pass.py,sha256=IehLwFNwa0C9fnk1pmNmyfuAwwWbuwdyKy46BSqNVdI,1948
|
|
@@ -84,18 +84,18 @@ ai_edge_torch/generative/layers/unet/blocks_2d.py,sha256=H45wsXA6iJi_Mjd66NiQrh7
|
|
|
84
84
|
ai_edge_torch/generative/layers/unet/builder.py,sha256=NmJiZ2-e1wbv9jnvI3VCyUJlONV5ZAOz-RTc7ipAZ5U,1872
|
|
85
85
|
ai_edge_torch/generative/layers/unet/model_config.py,sha256=FrIO-CR8aRIV2i8aFqom_4S7WCEDLMyYwo6U0oFyn7A,9097
|
|
86
86
|
ai_edge_torch/generative/quantize/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
|
|
87
|
-
ai_edge_torch/generative/quantize/example.py,sha256=
|
|
87
|
+
ai_edge_torch/generative/quantize/example.py,sha256=Oy-Ss1oKXMu5RVOGt8QiUwKtrHEfhbVjTXXjxPcOqDA,1536
|
|
88
88
|
ai_edge_torch/generative/quantize/quant_attrs.py,sha256=n1Fm8BFC8gJa_oiwwAOOghJyHtOXYZ4q-5ZRy4pHrIw,1957
|
|
89
89
|
ai_edge_torch/generative/quantize/quant_recipe.py,sha256=Y8zahKw7b_h7ajPaJZVef4jG-MoqImRCpVSbFtV_i24,5139
|
|
90
90
|
ai_edge_torch/generative/quantize/quant_recipe_utils.py,sha256=-vd6Qp0BdXJVKg4f0_hhwbKOi3QPIAPVqyXnJ-ZnISQ,1915
|
|
91
|
-
ai_edge_torch/generative/quantize/quant_recipes.py,sha256=
|
|
91
|
+
ai_edge_torch/generative/quantize/quant_recipes.py,sha256=4OdKES9BhofzFoHut4qPVh-3ndVL9fu-BNOEEZc_2xE,1781
|
|
92
92
|
ai_edge_torch/generative/quantize/supported_schemes.py,sha256=FjdycEOvxRgBmQdZVufetPvkDoD7rUowIOSKV9oV5Kk,1418
|
|
93
93
|
ai_edge_torch/generative/quantize/ai_edge_quantizer_glue/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
94
|
-
ai_edge_torch/generative/quantize/ai_edge_quantizer_glue/translate_recipe.py,sha256=
|
|
94
|
+
ai_edge_torch/generative/quantize/ai_edge_quantizer_glue/translate_recipe.py,sha256=iTNPrlubmq9ia7C3zHl50J2YEMsc4o33GwL5tr5VkkE,5229
|
|
95
95
|
ai_edge_torch/generative/test/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
|
|
96
96
|
ai_edge_torch/generative/test/loader_test.py,sha256=N88CbrLW7Q2x1EyurwdXQ6YjsA-ySQcPxpZH3QOGp-M,3317
|
|
97
97
|
ai_edge_torch/generative/test/test_model_conversion.py,sha256=LsPTrLC1I4JW2GowTS3V9Eu257vLHr2Yj5f_qaFUX84,7589
|
|
98
|
-
ai_edge_torch/generative/test/test_quantize.py,sha256=
|
|
98
|
+
ai_edge_torch/generative/test/test_quantize.py,sha256=TxZwe2cCTfwq9t2thBuYiLdp5Xu2cspCbQgziZ3Oo7k,5269
|
|
99
99
|
ai_edge_torch/generative/utilities/__init__.py,sha256=-_jxnnFnCgnTU4oTm4MnRsvL5lqhomBNdFBbqfmfHPo,720
|
|
100
100
|
ai_edge_torch/generative/utilities/loader.py,sha256=Hs92478j1g4jQGvbdP1aWvOy907HjwqQZE-NFy6HELo,11326
|
|
101
101
|
ai_edge_torch/generative/utilities/stable_diffusion_loader.py,sha256=7ChqrnthD7I-Be6vkRvYTRhbGQ3tqMbikLpjY5HpSzE,30890
|
|
@@ -114,8 +114,8 @@ ai_edge_torch/quantize/quant_config.py,sha256=eO9Ra160ITjQSyRBEGy6nNIVH3gYacSWDd
|
|
|
114
114
|
ai_edge_torch/testing/__init__.py,sha256=hHLluseD2R0Hh4W6XZRIXY_dRQeYudjsrKGf6LZz65g,671
|
|
115
115
|
ai_edge_torch/testing/model_coverage/__init__.py,sha256=5P8J6Zk5YYtDvTBucFvB9NGSRI7Gw_24WnrbhXgycEE,765
|
|
116
116
|
ai_edge_torch/testing/model_coverage/model_coverage.py,sha256=EIyKz-HY70DguWuSrJal8LpYXQ5ZSEUf3ZrVl7jikFM,4286
|
|
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.
|
|
117
|
+
ai_edge_torch_nightly-0.2.0.dev20240704.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
|
118
|
+
ai_edge_torch_nightly-0.2.0.dev20240704.dist-info/METADATA,sha256=DbANuyw0pYE-vq-W-4FVRF74JxmePY4R_imax8GmIT4,1745
|
|
119
|
+
ai_edge_torch_nightly-0.2.0.dev20240704.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
120
|
+
ai_edge_torch_nightly-0.2.0.dev20240704.dist-info/top_level.txt,sha256=5KXRaF2hwkApYxf7Y8y_tVb9aulGTlbOoNdbx1aKRkE,14
|
|
121
|
+
ai_edge_torch_nightly-0.2.0.dev20240704.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|