onnxruntime/docs/how-to/mobile/using-nnapi-coreml-with-ort-mobile.md
Scott McKay 9e8d795344
Update ORT Mobile documentation (#7874)
* Update ORT Mobile documentation for both the pre-built package and custom build usage
Add info on pre-built package and CoreML EP
Refer to operator kernels and contrib ops documentation in github so we can point to the version specific content
Tweak some aspects like not specifying nav_order in places (items sort alphabetically by default)

* merge previous unmerged ios doc updates

* Address PR comments

* Minor tweaks

* Address PR comments

Co-authored-by: Guoyu Wang <wanggy@outlook.com>
2021-06-01 21:21:41 -07:00

2.4 KiB

title parent grand_parent nav_order
Enabling NNAPI or CoreML Execution Providers Deploy ONNX Runtime Mobile How to 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 the instructions 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