Skip to content

Releases: apple/coremltools

coremltools 3.3

07 Feb 20:01
6263635
Compare
Choose a tag to compare

Release Notes

Bug Fixes

  • Add support for converting Softplus layer in coremltools.
  • Fix in gelu and layer norm fusion pass.
  • Simplified build & CI setup.
  • Fixed critical numpy

coremltools 3.2

17 Jan 04:40
65cf611
Compare
Choose a tag to compare

This release includes new op conversion supports, bug fixes, and improved graph optimization passes.

Install/upgrade to the latest coremltools with pip install --upgrade coremltools.

More details can be found in neural-network-guide.md.

coremltools 3.1

01 Nov 22:23
0b45246
Compare
Choose a tag to compare

Changes:

  • Add support for TensorFlow 2.x file format (.h5, SavedModel, and concrete functions).
  • Add support for several new ops, such as AddV2, FusedBatchNormV3.
  • Bug fixes in the Tensorflow converter's op fusion graph pass.

Known Issues:

  • tf.keras model conversion supported only with TensorFlow 2
  • Currently, there are issues while invoking the TensorFlow 2.x model conversion in Python 2.x.
  • Currently, there are issues while converting tf.keras graphs that contain recurrent layers.

coremltools 3.0

04 Oct 19:31
97be3f4
Compare
Choose a tag to compare

Release coremltools 3.0

We are very excited about the release of coremltools 3 and for Core ML release notes to become a fixture, increasing the issues resolved and features added. In this document, we give you an overview of the features and issues that were resolved in the most recent release. The issues can also be found on the project boards of each respective repository (for example, coremltools). The labels will also indicate the type of issue.

In addition to the features and improvements introduced in this release, there have been some changes within the repository. There are now issue templates to help specify the type of issue whether its a bug, feature request or question. and help us triage quickly. There is also a new document, contributing.md which contains guidelines for community engagement.

coremltools 3.0

We are happy to announce the official release of coremltools 3 which aligns with Core ML 3. It includes a new version of the .mlmodel specification (version 4) which brings with it support for:

  • Updatable models - Neural Network and KNN
  • More dynamic and expressive neural networks - approx. 100 more layers added compared to Core ML 2
  • Dynamic control flows
  • Nearest neighbor classifiers
  • Recommenders
  • Linked models
  • Sound analysis preprocessing
  • Runtime adjustable parameters for on-device update

This version of coremltools also includes a new converter path for TensorFlow models. The tfcoreml converter has been updated to include this new path to convert to specification 4 which can handle control flow and cyclic tensor flow graphs.

Control flow example can be found here.

Updatable Models

Core ML 3 supports an on-device update of models. Version 4 of the .mlmodel specification can encapsulate all the necessary parameters for a model update. Nearest neighbor, neural networks and pipeline models can all be made updatable.
Updatable neural networks support the training of convolution and fully connected layer weights (with back-propagation through many other layers types). Categorical cross-entropy and mean squared error losses are available along with stochastic gradient descent and Adam optimizers.
See examples of how to convert and create updatable models.
See the MLUpdateTask API reference for how to update a model from within an app.

Neural Networks

  • Support for new layers in Core ML 3 added to the NeuralNetworkBuilder
    • Exact rank mapping of multi dimensional array inputs
    • Control Flow related layers (branch, loop, range, etc.)
    • Element-wise unary layers (ceil, floor, sin, cos, gelu, etc.)
    • Element-wise binary layers with broadcasting (addBroadcastable, multiplyBroadcastable, etc)
    • Tensor manipulation layers (gather, scatter, tile, reverse, etc.)
    • Shape manipulation layers (squeeze, expandDims, getShape, etc.)
    • Tensor creation layers (fillDynamic, randomNormal, etc.)
    • Reduction layers (reduceMean, reduceMax, etc.)
    • Masking / Selection Layers (whereNonZero, lowerTriangular, etc.)
    • Normalization layers (layerNormalization)
    • For a full list of supported layers in Core ML 3, check out Core ML specification documentation or NeuralNetwork.proto.
  • Support conversion of recurrent networks from TensorFlow

coremltools 3.0 beta 6 release

11 Sep 00:57
ecdb9a4
Compare
Choose a tag to compare
Pre-release
Merge pull request #444 from aseemw/dev/coremltools_3_0_release

3.0b6 release

coremltools 3.0b beta release

05 Jun 03:41
22088dd
Compare
Choose a tag to compare
Pre-release

This is the first beta release of coremltools 3 which aligns with the preview of Core ML 3. It includes a new version of the .mlmodel specification which brings with it support for:

  • Updatable models
  • More dynamic and expressive neural networks
  • Nearest neighbor classifiers
  • Recommenders
  • Linked models
  • Sound analysis preprocessing
  • Runtime adjustable parameters

This release also enhances and introduces the following converters and utilities:

  • Keras converter
    • Adds support for converting training details using respect_trainable flag
  • Scikit converter
    • Nearest neighbor classifier conversion
  • NeuralNetworkBuilder
    • Support for all new layers introduced in CoreML 3
    • Support for adding update details such as marking layers updatable, specifying a loss function and providing an optimizer
  • KNearestNeighborsClassifierBuilder (new)
    • Newly added to support simple programatic construction of nearest neighbor classifiers
  • Tensorflow (new)
    • A new tensorflow converter with improved graph transformation capabilities and support for version 4 of the .mlmodel specification
    • This is used by the new tfcoreml beta converter package as well. Try it out with pip install tfcoreml==0.4.0b1

This release also adds Python 3.7 support for coremltools

Updatable Models

Core ML 3 supports on-device update of models. Version 4 of the .mlmodel specification can encapsulate all the necessary parameters for a model update. Nearest neighbor, neural networks and pipeline models can all be made updatable.

Updatable neural networks support training of convolution and fully connected layer weights (with back-propagation through many other layers types). Categorical cross entropy and mean squared error losses are available along with stochastic gradient descent and Adam optimizers.

See examples of how to convert and create updatable models

See the MLUpdateTask API reference for how update a model from within an app.

Neural Networks

  • Support for new layers in Core ML 3 added to the NeuralNetworkBuilder
    • Exact rank mapping of multi dimensional array inputs
    • Control Flow related layers (branch, loop, range, etc.)
    • Element-wise unary layers (ceil, floor, sin, cos, gelu, etc.)
    • Element-wise binary layers with broadcasting (addBroadcastable, multiplyBroadcastable, etc)
    • Tensor manipulation layers (gather, scatter, tile, reverse, etc.)
    • Shape manipulation layers (squeeze, expandDims, getShape, etc.)
    • Tensor creation layers (fillDynamic, randomNormal, etc.)
    • Reduction layers (reduceMean, reduceMax, etc.)
    • Masking / Selection Layers (whereNonZero, lowerTriangular, etc.)
    • Normalization layers (layerNormalization)
    • For a full list of supported layers in Core ML 3, check out CoreML specification documentation (NeuralNetwork.proto).
  • Support conversion of recurrent networks from TensorFlow

Known Issues

coremltools 3.0b1

  • Converting a Keras model that uses mean squared error for the loss function will not create a valid model. A workaround is to set respect_trainable to False (the default) when converting and then manually add the loss function.

Core ML 3 Developer Beta 1

  • The default number of epochs encoded in model is not respected and may run for 0 epochs, immediately returning without training.
    • Workaround: Explicitly supply epochs via MLModelConfiguration updateParameters using MLParameterKey.epochs even if you want to use the default value encoded in the model.
  • Loss returned by the ADAM optimizer is not correct
  • Some updatable pipeline models containing a static neural network sub-model can intermittently fail to update with the error: “Attempting to hash an MLFeatureValue that is not an image or multi array”. This error will surface in task.error as part of MLUpdateContext passed to the provided completion handler.
    • Workaround: Retry model update by creating a new update task with the same training data.
  • Some of the new neural network layers may result in an error when the model is run on a non-CPU compute device.
    • Workaround: restrict computation to CPU with MLModelConfiguration computeUnits
  • Enumerated shape flexibility, when used with Neural network inputs with 'exact_rank' mapping (i.e. rank 5 disabled), may result in an error during prediction.
    • Workaround: use range shape flexibility

coremltools 2.1.0

03 Feb 23:44
13c064e
Compare
Choose a tag to compare
Merge pull request #322 from aseemw/dev/release_2.1

Update version to 2.1

coremltools 2.0

20 Sep 22:40
aebd6b3
Compare
Choose a tag to compare
  • Support for quantizing Neural Network models (1-8 bits)
  • Support for specifying flexible shapes for model inputs
  • Added NN builder support for new neural network layers: resize_bilinear, crop_resize
  • Added utilities for visualizing and printing summary of neural network models
  • Miscellaneous fixes

coremltools 0.8

02 Feb 23:10
10b2abe
Compare
Choose a tag to compare
  • Adds Python 3.5 and 3.6 support
  • Fixed compatibility with Keras 2.1.3
  • Support for xgboost 0.7
  • Fixes: when 1D convolution output is directly fed by flatten layer, Keras converter gives a wrong output shape
  • Fixes: Index range bug in keras converter function "make_output_layers()"
  • Adds custom activation function support in Keras 2 converter
  • Miscellaneous documentation fixes

coremltools-0.7.0

05 Dec 00:14
c0fe24f
Compare
Choose a tag to compare

Neural Networks

  • Half precision weights
    • New to .mlmodel specification version 2
    • Supported by macOS 10.13.2, iOS 11.2, watchOS 4.2, tvOS 11.2
    • WeightParams can now be specified in half precision (float16)
    • New float16 conversion utility function can convert existing models with neural networks to half precision by calling coremltools.utils.convert_neural_network_spec_weights_to_fp16
    • Can also pass in a flag in keras or caffe converter functions during model conversion time to convert models to half precision
    • See: https://developer.apple.com/documentation/coreml/reducing_the_size_of_your_core_ml_app
  • Custom Layers

Visualization

  • Visualize model specification with: coremltools.utils.visualize_spec

Python 3

  • Conversion for most model types work in Python 3.
  • No predictions: #37
  • Converting Caffe models does not work: #79
  • To use in Python 3, you must build from source.

Misc

  • Support grayscale image outputs in python predictions
  • Bug fixes