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.
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:
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 Family | Supported Packages |
|---|---|
| Neural Networks | TensorFlow 1 (1.14.0+) TensorFlow 2 (2.1.0+) PyTorch (1.4.0+) |
| Tree Ensembles | XGboost (1.1.0) scikit-learn (0.18.1) |
| Generalized Linear Models | scikit-learn (0.18.1) |
| Support Vector Machines | LIBSVM (3.22) scikit-learn (0.18.1) |
| Pipelines (pre- and post-processing) | scikit-learn (0.18.1) |
Updated over 4 years ago
