in src/exporters/coreml/__main__.py [0:0]
def convert_model(preprocessor, model, model_coreml_config, args, use_past=False, seq2seq=None):
coreml_config = model_coreml_config(model.config, use_past=use_past, seq2seq=seq2seq)
compute_units = ComputeUnit.ALL
if args.compute_units == "cpu_and_gpu":
compute_units = ComputeUnit.CPU_AND_GPU
elif args.compute_units == "cpu_only":
compute_units = ComputeUnit.CPU_ONLY
elif args.compute_units == "cpu_and_ne":
compute_units = ComputeUnit.CPU_AND_NE
mlmodel = export(
preprocessor,
model,
coreml_config,
quantize=args.quantize,
compute_units=compute_units,
)
filename = args.output
if seq2seq == "encoder":
filename = filename.parent / ("encoder_" + filename.name)
elif seq2seq == "decoder":
filename = filename.parent / ("decoder_" + filename.name)
filename = filename.as_posix()
mlmodel.save(filename)
if args.atol is None:
args.atol = coreml_config.atol_for_validation
if not _is_macos() or _macos_version() < (12, 0):
logger.info("Skipping model validation, requires macOS 12.0 or later")
else:
# Run validation on CPU
mlmodel = MLModel(filename, compute_units=ComputeUnit.CPU_ONLY)
validate_model_outputs(coreml_config, preprocessor, model, mlmodel, args.atol)
logger.info(f"All good, model saved at: {filename}")