13
13
import executorch .exir as exir
14
14
15
15
import torch
16
- from coremltools .optimize .torch .quantization .quantization_config import (
17
- LinearQuantizerConfig ,
18
- QuantizationScheme ,
19
- )
20
16
21
17
from executorch .backends .apple .coreml .compiler import CoreMLBackend
22
18
23
19
from executorch .backends .apple .coreml .partition import CoreMLPartitioner
24
- from executorch .backends .apple .coreml .quantizer import CoreMLQuantizer
25
20
from executorch .devtools .etrecord import generate_etrecord
26
21
from executorch .exir import to_edge
27
22
28
23
from executorch .exir .backend .backend_api import to_backend
29
- from torch .ao .quantization .quantize_pt2e import convert_pt2e , prepare_pt2e
30
24
31
25
from torch .export import export
32
26
@@ -81,13 +75,6 @@ def parse_args() -> argparse.ArgumentParser:
81
75
parser .add_argument ("--generate_etrecord" , action = argparse .BooleanOptionalAction )
82
76
parser .add_argument ("--save_processed_bytes" , action = argparse .BooleanOptionalAction )
83
77
84
- parser .add_argument (
85
- "--quantize" ,
86
- action = argparse .BooleanOptionalAction ,
87
- required = False ,
88
- help = "Quantize CoreML model" ,
89
- )
90
-
91
78
args = parser .parse_args ()
92
79
return args
93
80
@@ -123,10 +110,9 @@ def export_lowered_module_to_executorch_program(lowered_module, example_inputs):
123
110
return exec_prog
124
111
125
112
126
- def save_executorch_program (exec_prog , model_name , compute_unit , quantize ):
113
+ def save_executorch_program (exec_prog , model_name , compute_unit ):
127
114
buffer = exec_prog .buffer
128
- data_type = "quantize" if quantize else "fp"
129
- filename = f"{ model_name } _coreml_{ compute_unit } _{ data_type } .pte"
115
+ filename = f"{ model_name } _coreml_{ compute_unit } .pte"
130
116
print (f"Saving exported program to { filename } " )
131
117
with open (filename , "wb" ) as file :
132
118
file .write (buffer )
@@ -182,22 +168,6 @@ def main():
182
168
if args .use_partitioner :
183
169
model .eval ()
184
170
exir_program_aten = torch .export .export (model , example_inputs )
185
- if args .quantize :
186
- quantization_config = LinearQuantizerConfig .from_dict (
187
- {
188
- "global_config" : {
189
- "quantization_scheme" : QuantizationScheme .affine ,
190
- "activation_dtype" : torch .quint8 ,
191
- "weight_dtype" : torch .qint8 ,
192
- "weight_per_channel" : True ,
193
- }
194
- }
195
- )
196
-
197
- quantizer = CoreMLQuantizer (quantization_config )
198
- model = prepare_pt2e (model , quantizer ) # pyre-fixme[6]
199
- model (* example_inputs )
200
- exir_program_aten = convert_pt2e (model )
201
171
202
172
edge_program_manager = exir .to_edge (exir_program_aten )
203
173
edge_copy = copy .deepcopy (edge_program_manager )
@@ -219,9 +189,7 @@ def main():
219
189
example_inputs ,
220
190
)
221
191
222
- save_executorch_program (
223
- exec_program , args .model_name , args .compute_unit , args .quantize
224
- )
192
+ save_executorch_program (exec_program , args .model_name , args .compute_unit )
225
193
generate_etrecord (f"{ args .model_name } _coreml_etrecord.bin" , edge_copy , exec_program )
226
194
227
195
if args .save_processed_bytes and lowered_module is not None :
0 commit comments