Introduction

Use coremltools to convert models from third-party libraries to Core ML.

Core ML is an Apple framework to integrate machine learning models into your app.

Use the coremltools Python package to convert models from third-party training libraries such as TensorFlow and PyTorch to Core ML. You can then use Core ML to integrate the models into your app.

966

Core ML provides a unified representation for all models. Your app uses Core ML APIs and user data to make predictions, and to fine-tune models, all on the user’s device. Running a model strictly on the user’s device removes any need for a network connection, which helps keep the user’s data private and your app responsive.

Core ML optimizes on-device performance by leveraging the CPU, GPU, and Apple Neural Engine (ANE) while minimizing its memory footprint and power consumption.

Additional resources

  • The Machine Learning page provides educational material, tutorials, guides, and documentation for Apple developers.
  • The WWDC session videos are a great place to start if you are new to machine learning technology and Core ML.
  • The Core ML documentation walks you through the first steps in developing an app with a machine learning model.
  • Try out coremltools in your browser with Binder: Binder

What is coremltools?

The coremltools Python package is the primary way to convert third-party models to Core ML.

With coremltools, you can do the following:

  • Convert trained models from libraries and frameworks such as TensorFlow and PyTorch to the Core ML Model Package.
  • Read, write, and optimize Core ML models.
  • Verify conversion/creation in macOS by making predictions using Core ML.

Supported libraries and frameworks

You can convert trained models from the following libraries and frameworks to Core ML:

Model FamilySupported Packages
Neural NetworksTensorFlow 1 (1.14.0+)
TensorFlow 2 (2.1.0+)
PyTorch (1.4.0+)
Tree EnsemblesXGboost (1.1.0)
scikit-learn (0.18.1)
Generalized Linear Modelsscikit-learn (0.18.1)
Support Vector MachinesLIBSVM (3.22)
scikit-learn (0.18.1)
Pipelines (pre- and post-processing)scikit-learn (0.18.1)