onnxruntime/docs/tutorials/mobile/using-nnapi-coreml-with-ort-mobile.md
2021-11-18 11:00:48 -08:00

2.4 KiB

title parent grand_parent nav_order
Enabling NNAPI or CoreML Execution Providers Deploy ONNX Runtime Mobile Tutorials 6

Using NNAPI and CoreML with ONNX Runtime Mobile

  • Usage of NNAPI on Android platforms is via the NNAPI Execution Provider (EP).
  • Usage of CoreML on iOS and macOS platforms is via the CoreML EP.

The pre-built ONNX Runtime Mobile package includes the NNAPI EP on Android, and the CoreML EP on iOS.

If performing a custom build of ONNX Runtime, support for the NNAPI EP or CoreML EP must be enabled when building.

Create a minimal build with NNAPI EP or CoreML EP support

Please see Build for Android and Build for iOS for setting up the Android or iOS environment required to build. The Android build can be cross-compiled on Windows or Linux. The iOS/macOS build must be performed on a mac machine.

Once you have all the necessary components setup, follow the instructions to create the custom build, with the following changes:

  • Replace --minimal_build with --minimal_build extended to enable support for execution providers that dynamically create kernels at runtime, which is required by the NNAPI EP and CoreML EP.
  • Add --use_nnapi to include the NNAPI EP in the build
  • Add --use_coreml to include the CoreML EP in the build
Example build commands with the NNAPI EP enabled:
  • Windows example: <ONNX Runtime repository root>.\build.bat --config MinSizeRel --android --android_sdk_path D:\Android --android_ndk_path D:\Android\ndk\21.1.6352462\ --android_abi arm64-v8a --android_api 29 --cmake_generator Ninja --minimal_build extended --use_nnapi --disable_ml_ops --disable_exceptions --build_shared_lib --skip_tests --include_ops_by_config <config file from model conversion>
  • Linux example: <ONNX Runtime repository root>./build.sh --config MinSizeRel --android --android_sdk_path /Android --android_ndk_path /Android/ndk/21.1.6352462/ --android_abi arm64-v8a --android_api 29 --minimal_build extended --use_nnapi --disable_ml_ops --disable_exceptions --build_shared_lib --skip_tests --include_ops_by_config <config file from model conversion>

Next: Limitations