def convert_model()

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}")