Conversion Options
This section describes conversion options to use with convert()
that are specific to ML programs and neural network models:
- New Conversion Options: Learn about recently released conversion options.
- Model Input and Output Types: Control the type of the inputs and outputs for the converted Core ML model.
- Image Input and Output: Set the input and output types to use images, and apply image preprocessing.
- Classifiers: Make classifier models with embedded class labels for the Vision framework.
- Flexible Input Shapes: Convert models that have flexible input shapes, which are common in fully convolutional models or dynamic
seq2seq
models. - Composite Operators: Create operators that build on other basic operators.
- Custom Operators: Create custom implementations of operators in Swift.
- Graph Passes: Control which graph passes to run and the order of the graph passes.
New Conversion Options
You can use the Unified Conversion API to convert a TensorFlow or PyTorch model to the Core ML model format as either a neural network or an ML program. The following are the newest conversion options.
Convert to ML Program or Neural Network
To set the type of the model representation produced by the converter. use either the minimum_deployment_target
parameter or the convert_to
parameter with convert()
.
The converter produces an ML program if the target is >=
iOS15
, macOS12
, watchOS8
, or tvOS15
, or if convert_to
is set to ‘mlprogram’
; otherwise it produces a neural network.
If neither the minimum_deployment_target
nor the convert_to
parameter is specified, the converter produces a neural network with as minimum of a deployment target as possible.
To learn about the differences between neural networks and ML programs, see ML Programs.
Set the Compute Precision for an ML Program
For ML programs, coremltools produces a model with float 16 precision by default. You can override the default precision by using the compute_precision
parameter. For details, see Set the ML program precision.
Pick the Compute Units for Execution
The converter picks the default optimized path for fast execution while loading the model. The default setting (ComputeUnit.ALL
) uses all compute units available, including the Apple Neural Engine (ANE), the CPU, and the graphics processing unit (GPU).
However, you may find it useful, especially for debugging, to specify the actual compute units when converting or loading a model by using the compute_units
parameter. For details, see Set the compute units.
Input and Output Type Options
Starting in iOS 16 and macOS 13, you can use float 16 MLMultiarrays
for model inputs and outputs, and if you are using grayscale image types, you can now specify a new grayscale float 16 type. You can also specify an ImageType
for input and for output with convert()
. The new float 16 types help eliminate extra casts at inputs and outputs for models that execute in float 16 precision.
For details, see Model Input and Output types. For image-specific options see Image Input and Output.
Updated over 1 year ago