From 30c7fffbab8f8b38d9731f050c42363d5a2714bd Mon Sep 17 00:00:00 2001 From: Scott McKay Date: Wed, 2 Dec 2020 09:12:36 +1000 Subject: [PATCH] Expand the documentation on using compiling EPs with a minimal build (#5893) * Expand the documentation on using compiling EPs with a minimal build to call out a 'simple' option that is easier to use. Provide more background on what happens to help users choose the best option for them. Tweak conversion script to be noisier about attempted usage of 'all' optimization level. Co-authored-by: manashgoswami --- ...untime_Mobile_NNAPI_perf_considerations.md | 111 ++++++++++++++++++ docs/ONNX_Runtime_for_Mobile_Platforms.md | 79 +++++-------- docs/images/mnist_optimization.png | Bin 0 -> 56520 bytes docs/images/mnist_optimization_with_nnapi.png | Bin 0 -> 24274 bytes docs/images/nnapi_aware_ort_format_model.png | Bin 0 -> 21743 bytes tools/python/convert_onnx_models_to_ort.py | 2 + 6 files changed, 143 insertions(+), 49 deletions(-) create mode 100644 docs/ONNX_Runtime_Mobile_NNAPI_perf_considerations.md create mode 100644 docs/images/mnist_optimization.png create mode 100644 docs/images/mnist_optimization_with_nnapi.png create mode 100644 docs/images/nnapi_aware_ort_format_model.png diff --git a/docs/ONNX_Runtime_Mobile_NNAPI_perf_considerations.md b/docs/ONNX_Runtime_Mobile_NNAPI_perf_considerations.md new file mode 100644 index 0000000000..3c3c0360cf --- /dev/null +++ b/docs/ONNX_Runtime_Mobile_NNAPI_perf_considerations.md @@ -0,0 +1,111 @@ +# ONNX Runtime Mobile: Performance Considerations When Using NNAPI + +ONNX Runtime Mobile with the NNAPI Execution Provider (EP) can be used to execute ORT format models on Android platforms using NNAPI. This document explains the details of how different optimizations affect performance, and provides some suggestions for performance testing with ORT format models. + +Please review the introductory details for [using NNAPI with ONNX Runtime Mobile](ONNX_Runtime_for_Mobile_Platforms.md#Using-NNAPI-with-ONNX-Runtime-Mobile) first. + + +## 1. ONNX Model Optimization Example + +ONNX Runtime applies optimizations to the ONNX model to improve inferencing performance. These optimizations occur prior to exporting an ORT format model. See the [graph optimization](ONNX_Runtime_Graph_Optimizations.md) documentation for further details of the available optimizations. + +It is important to understand how the different optimization levels affect the nodes in the model, as this will determine how much of the model can be executed using NNAPI. + +*Basic* + +The _basic_ optimizations remove redundant nodes and perform constant folding. Only ONNX operators are used by these optimizations when modifying the model. + +*Extended* + +The _extended_ optimizations replace one or more standard ONNX operators with custom internal ONNX Runtime operators to boost performance. Each optimization has a list of EPs that it is valid for. It will only replace nodes that are assigned to that EP, and the replacement node will be executed using the same EP. + +*Layout* + +_Layout_ optimizations are hardware specific, and should not be used when creating ORT format models. + +### Outcome of optimizations when creating an optimized ORT format model + +Below is an example of the changes that occur in _basic_ and _extended_ optimizations when applied to the MNIST model with only the CPU EP enabled. The optimization level is specified when creating the ORT format model using `convert_onnx_models_to_ort.py`. + + - At the _basic_ level we combine the Conv and Add nodes (the addition is done via the 'B' input to Conv), we combine the MatMul and Add into a single Gemm node (the addition is done via the 'C' input to Gemm), and constant fold to remove one of the Reshape nodes. + - `python /tools/python/convert_onnx_models_to_ort.py --optimization_level basic /dir_with_mnist_onnx_model` + - At the _extended_ level we additionally fuse the Conv and Relu nodes using the internal ONNX Runtime FusedConv operator. + - `python /tools/python/convert_onnx_models_to_ort.py --optimization_level extended /dir_with_mnist_onnx_model` + +Changes to nodes from basic and extended optimizations. + +### Outcome of executing an optimized ORT format model using the NNAPI EP + +If the NNAPI EP is registered at runtime, it is given an opportunity to select the nodes in the loaded model that it can execute. When doing so it will group as many nodes together as possible to minimize the overhead of copying data between the CPU and NNAPI to execute the nodes. Each group of nodes can be considered as a sub-graph. The more nodes in each sub-graph, and the fewer sub-graphs, the better the performance will be. + +For each sub-graph, the NNAPI EP will create an [NNAPI model](https://developer.android.com/ndk/guides/neuralnetworks#model) that replicates the processing of the original nodes. It will create a function that executes this NNAPI model and performs any required data copies between CPU and NNAPI. ONNX Runtime will replace the original nodes in the loaded model with a single node that calls this function. + +If the NNAPI EP is not registered, or can not process a node, the node will be executed using the CPU EP. + +Below is an example for the MNIST model comparing what happens to the ORT format models at runtime if the NNAPI EP is registered. + +As the _basic_ level optimizations result in a model that only uses ONNX operators, the NNAPI EP is able to handle the majority of the model as NNAPI can execute the Conv, Relu and MaxPool nodes. This is done with a single NNAPI model as all the nodes NNAPI can handle are connected. We would expect performance gains from using NNAPI with this model, as the overhead of the device copies between CPU and NNAPI for a single NNAPI node is likely to be exceeded by the time saved executing multiple operations at once using NNAPI. + +The _extended_ level optimizations introduce the custom FusedConv nodes, which the NNAPI EP ignores as it will only take nodes that are using ONNX operators that NNAPI can handle. This results in two nodes using NNAPI, each handling a single MaxPool operation. The performance of this model is likely to be adversely affected, as the overhead of the device copies between CPU and NNAPI (which are required before and after each of the two NNAPI nodes) is unlikely to be exceeded by the time saved executing a single MaxPool operation each time using NNAPI. Better performance may be obtainable by not registering the NNAPI EP so that all nodes in the model are executed using the CPU EP. + +Changes to nodes by NNAPI EP depending on the optimization level the model was created with. + +## 2. Initial Performance Testing + +The best optimization settings will differ by model. Some models may perform better with NNAPI, some models may not. As the performance will be model specific you must performance test to determine the best combination for your model. + +It is suggested to run performance tests: + - with NNAPI enabled and an ORT format model created with _basic_ level optimization + - with NNAPI disabled and an ORT format model created with _extended_ level optimization + +For most scenarios it is expected that one of these two approaches will yield the best performance. + +If using an ORT format model with _basic_ level optimizations and NNAPI yields equivalent or better performance, it _may_ be possible to further improve performance by creating an NNAPI-aware ORT format model. The difference with this model is that the _extended_ optimizations are applied to nodes that can not be executed using NNAPI. Whether any nodes fall into this category is model dependent. + +## 3. Creating an NNAPI-aware ORT format model + +An NNAPI-aware ORT format model will keep all nodes from the ONNX model that can be executed using NNAPI, and allow _extended_ optimizations to be applied to any remaining nodes. + +For our MNIST model that would mean that after the _basic_ optimizations are applied, the nodes in the red shading are kept as-is, and nodes in the green shading could have _extended_ optimizations applied to them. + +Show nodes that are preserved as NNAPI can execute them, and nodes that are considered by extended optimizations. + +To create an NNAPI-aware ORT format model please follow these steps. + +1. Create a 'full' build of ONNX Runtime with the NNAPI EP by [building ONNX Runtime from source](https://github.com/microsoft/onnxruntime/blob/master/BUILD.md#start-baseline-cpu). + + This build can be done on any platform, as the NNAPI EP can be used to create the ORT format model without the Android NNAPI library as there is no model execution in this process. When building add `--use_nnapi --build_shared_lib --build_wheel` to the build flags if any of those are missing. + + Do NOT add the --minimal_build` flag. + - Windows : + ``` + \build.bat --config RelWithDebInfo --use_nnapi --build_shared_lib --build_wheel --parallel + ``` + + - Linux: + ``` + /build.sh --config RelWithDebInfo --use_nnapi --build_shared_lib --build_wheel --parallel + ``` + + - **NOTE** if you have previously done a minimal build you will need to run `git reset --hard` to make sure any operator kernel exclusions are reversed prior to performing the 'full' build. If you do not, you may not be able to load the ONNX format model due to missing kernels. + +2. Install the python wheel from the build output directory. + + - Windows : This is located in `build/Windows///dist/.whl`. + + - Linux : This is located in `build/Linux//dist/.whl`. + + The package name will differ based on your platform, python version, and build parameters. `` is the value from the `--config` parameter from the build command. + ``` + pip install -U build\Windows\RelWithDebIfo\RelWithDebIfo\dist\onnxruntime_noopenmp-1.5.2-cp37-cp37m-win_amd64.whl + ``` + +3. Create an NNAPI-aware ORT format model by running `convert_onnx_models_to_ort.py` as per the [standard instructions](ONNX_Runtime_for_Mobile_Platforms.md#Create-ORT-format-model-and-configuration-file-with-required-operators), with NNAPI enabled (`--use_nnapi`), and the optimization level set to _extended_ (`--optimization_level extended`). This will allow extended level optimizations to run on any nodes that NNAPI can not handle. + + ``` + python /tools/python/convert_onnx_models_to_ort.py --use_nnapi --optimization_level extended /models + ``` + + The python package from your 'full' build with NNAPI enabled must be installed for `--use_nnapi` to be a valid option + +This model can be used with [a minimal build that includes the NNAPI EP](ONNX_Runtime_for_Mobile_Platforms.md#Create-a-minimal-build-for-Android-with-NNAPI-support). \ No newline at end of file diff --git a/docs/ONNX_Runtime_for_Mobile_Platforms.md b/docs/ONNX_Runtime_for_Mobile_Platforms.md index a320f9052a..0cb4d2df4b 100644 --- a/docs/ONNX_Runtime_for_Mobile_Platforms.md +++ b/docs/ONNX_Runtime_for_Mobile_Platforms.md @@ -21,11 +21,9 @@ Once you have cloned the repository, perform the following steps to create a min We will use a helper python script to convert ONNX format models into ORT format models, and to create the configuration file for use with the minimal build. This will require the standard ONNX Runtime python package to be installed. - - - Install the ONNX Runtime nightly python package from https://test.pypi.org/project/ort-nightly/ - - e.g. `pip install -i https://test.pypi.org/simple/ ort-nightly` + - Install the ONNX Runtime python package from https://pypi.org/project/onnxruntime/. Version 1.5.2 or later is required. + - `pip install onnxruntime` - ensure that any existing ONNX Runtime python package was uninstalled first, or use `-U` with the above command to upgrade an existing package - - using the nightly package is temporary until ONNX Runtime version 1.5 is released - Copy all the ONNX models you wish to convert and use with the minimal build into a directory - Convert the ONNX models to ORT format - `python /tools/python/convert_onnx_models_to_ort.py ` @@ -42,7 +40,8 @@ Running `'python /tools/python/convert_onnx_models_to_ort.p You will need to build ONNX Runtime from source to reduce the included operator kernels and other aspects of the binary. -See [here](https://github.com/microsoft/onnxruntime/blob/master/BUILD.md#start-baseline-cpu) for the general ONNX Runtime build instructions. +See [here](https://github.com/microsoft/onnxruntime/blob/master/BUILD.md#start-baseline-cpu) for the general ONNX Runtime build instructions. + #### Binary size reduction options: @@ -55,8 +54,8 @@ The follow options can be used to reduce the build size. Enable all options that - Enable minimal build (`--minimal_build`) - A minimal build will ONLY support loading and executing ORT format models. - RTTI is disabled by default in this build, unless the Python bindings (`--build_wheel`) are enabled. - - If you wish to enable a compiling execution provider such as NNAPI specify `--minimal_build extended`. - - See [here](#Enabling-Execution-Providers-that-compile-kernels-in-a-minimal-build) for more information + - If you wish to enable execution providers that compile kernels such as NNAPI specify `--minimal_build extended`. + - See [here](#Using-NNAPI-with-ONNX-Runtime-Mobile) for more information about using NNAPI with ONNX Runtime Mobile on Android platforms - Disable exceptions (`--disable_exceptions`) - Disables support for exceptions in the build. @@ -121,50 +120,32 @@ so.add_session_config_entry('session.load_model_format', 'ORT') session = onnxruntime.InferenceSession(, so) ``` -## Advanced Usage -### Enabling Execution Providers that compile kernels in a minimal build +## Using NNAPI with ONNX Runtime Mobile -It is possible to enable execution providers that compile kernels in a minimal build. -Currently the NNAPI execution provider is the only execution provider that has support for running in a minimal build. +Using the NNAPI Execution Provider on Android platforms is now supported by ONNX Runtime Mobile. A minimal build targeting Android with NNAPI support must be created. An ORT format model that only uses ONNX operators is also recommended as a starting point. -#### Create NNAPI aware ORT format model - - Create a 'full' (i.e. no usage of the `--minimal_build` flag) build of ONNX Runtime with NNAPI enabled - - **NOTE** do this prior to creating the minimal build - - the process for creating a minimal build will exclude operators that may be needed to load the ONNX model and create the ORT format model - - if you have previously done a minimal build, run `git reset --hard` to make sure any operator kernel exclusions are reversed - - we can not use the ONNX Runtime prebuilt package as NNAPI is not enabled in it - - the 'full' build can be done on any platform - - you do NOT need to create an Android build of ONNX Runtime in order to create an ORT format model that is optimized for usage with NNAPI. - - when the NNAPI execution provider is enabled on non-Android platforms it can only specify which nodes can be assigned to NNAPI. it can NOT be used to execute the model. - - perform a standard build as per the [common build instructions](https://github.com/microsoft/onnxruntime/blob/master/BUILD.md#common-build-instructions), and add `--use_nnapi --build_shared_lib --build_wheel` to the build flags if any of those are missing - - Install the python wheel from the build output directory - - this is located in `build/Windows///dist/.whl` on Windows, or `build/Linux//dist/.whl` on Linux. - - `` is the value from the `--config` parameter from the build command (e.g. Release) - - the package name will differ based on your platform, python version, and build parameters - - e.g. `pip install -U build\Windows\Release\Release\dist\onnxruntime-1.5.2-cp37-cp37m-win_amd64.whl` - - Create an ORT format model by running `tools\python\convert_onnx_models_to_ort.py` as per the above instructions, with the addition of the `--use_nnapi` parameter - - the python package from your 'full' build with NNAPI enabled must be installed for `--use_nnapi` to be a valid option - - this will preserve all the nodes that can be assigned to NNAPI, as well as setup the ability to fallback to CPU execution if NNAPI is not available at runtime, or if NNAPI can not run all the nodes due to device limitations. +For a more in-depth analysis of the performance considerations when using NNAPI with an ORT format model please see [ONNX Runtime Mobile: Performance Considerations When Using NNAPI](ONNX_Runtime_Mobile_NNAPI_perf_considerations.md). -The generated ORT format model can be used on all platforms, however there is an important caveat: - - Basic optimization such as constant folding run prior to the NNAPI execution provider being asked to nominate the nodes it can handle. These optimizations will be included in the ORT format model - - Any potential extended optimizations on nodes that the NNAPI execution provider claims will not occur - - these are optimizations that involve custom non-ONNX operators - - e.g. custom ONNX Runtime FusedConv operator that combines a Conv node and activation node (e.g. Relu) - - Depending on the model, and how many of these potential extended optimizations are prevented, there may be some performance loss if the NNAPI execution provider is not available (e.g. running on a non-Android platform), or does not claim the same set of nodes at runtime - - whether there is any performance loss, and/or whether there is significant performance loss, is model dependent - - please test to ascertain what works best for your scenarios - - you may want to generate one NNAPI aware ORT format model, and one generic ORT format model +### Limit ORT format model to ONNX operators -*Side note:* If losing the extended optimizations is not a concern, you can simply generate an ORT format model that can be used with NNAPI using the default ONNX Runtime package. Specify `--optimization_level basic` instead of `--use_nnapi` when running `tools\python\convert_onnx_models_to_ort.py`. This will mean all nodes that NNAPI could potentially will handle remain available, and at runtime the NNAPI execution provider can take them. +The NNAPI Execution Provider is only able to execute ONNX operators using NNAPI. When creating the ORT format model it is recommended to limit the optimization level to 'basic' so that custom internal ONNX Runtime operators are not added by the 'extended' optimizations. This will ensure that the maximum number of nodes can be executed using NNAPI. See the [graph optimization](ONNX_Runtime_Graph_Optimizations.md) documentation for details on the optimization levels. -#### Create the minimal build with NNAPI support -NOTE: A minimal build with full NNAPI support can only be for the Android platform. -See [these](https://github.com/microsoft/onnxruntime/blob/master/BUILD.md#Android-NNAPI-Execution-Provider) instructions for details on creating an Android build with NNAPI included. +To limit the optimization level when creating the ORT format models using `tools\python\convert_onnx_models_to_ort.py` as per the above [instructions](#1-Create-ORT-format-model-and-configuration-file-with-required-operators), add `--optimization_level basic` to the arguments. + - e.g. `python /tools/python/convert_onnx_models_to_ort.py --optimization_level basic /models` - - Follow the [above](#2-Create-the-minimal-build) instructions to create the minimal build, with the following changes: - - Add `--minimal_build extended` to enable the support for execution providers that compile kernels in the minimal build. - - Add `--use_nnapi` to include NNAPI in the build +### Create a minimal build for Android with NNAPI support + +For NNAPI to be used on Android with ONNX Runtime Mobile, the NNAPI Execution Provider must be included in the minimal build. + +First, read the general instructions for [creating an Android build with NNAPI included](https://github.com/microsoft/onnxruntime/blob/master/BUILD.md#Android-NNAPI-Execution-Provider). These provide details on setting up the components required to create an Android build of ONNX Runtime, such as the Android NDK. + +Once you have all the necessary components setup, follow the instructions to [create the minimal build](#2-Create-the-minimal-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 needed by the NNAPI Execution Provider. + - Add `--use_nnapi` to include the NNAPI Execution Provider in the build + - Windows example: + `.\build.bat --config RelWithDebInfo --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 ` + - Linux example: + `./build.sh --config RelWithDebInfo --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 ` ## Limitations @@ -173,11 +154,11 @@ A minimal build has the following limitations currently: - Model must be converted to ORT format - No support for runtime optimizations - Optimizations should be performed prior to conversion to ORT format + - Execution providers that statically register kernels (e.g. ONNX Runtime CPU Execution Provider) are supported by default - Limited support for runtime partitioning (assigning nodes in a model to specific execution providers) - - Execution providers that will be used at runtime MUST be enabled when creating the ORT format model - - Execution providers that statically register kernels are supported by default (e.g. ORT CPU Execution Provider) - - Execution providers that compile nodes are optionally supported, and nodes they create will be correctly partitioned - - currently this is limited to the NNAPI execution provider + - Execution providers that statically register kernels and will be used at runtime MUST be enabled when creating the ORT format model + - Execution providers that compile nodes are optionally supported, and nodes they create will be correctly partitioned at runtime + - currently this is limited to the NNAPI Execution Provider - No support for custom operators We do not currently offer backwards compatibility guarantees for ORT format models, as we will be expanding the capabilities in the short term and may need to update the internal format in an incompatible manner to accommodate these changes. You may need to regenerate the ORT format models to use with a future version of ONNX Runtime. Once the feature set stabilizes we will provide backwards compatibility guarantees. diff --git a/docs/images/mnist_optimization.png b/docs/images/mnist_optimization.png new file mode 100644 index 0000000000000000000000000000000000000000..ea7a00872ae0599d959ae1e50c0668c236f952ae GIT binary patch literal 56520 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 literal 0 HcmV?d00001 diff --git a/docs/images/mnist_optimization_with_nnapi.png b/docs/images/mnist_optimization_with_nnapi.png new file mode 100644 index 0000000000000000000000000000000000000000..fca7ad669a1361c96b964503759c10cf9ff6acaa GIT binary patch literal 24274 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%0D-@{- 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 literal 0 HcmV?d00001 diff --git a/tools/python/convert_onnx_models_to_ort.py b/tools/python/convert_onnx_models_to_ort.py index 84e05315fe..7dc3b95a0f 100644 --- a/tools/python/convert_onnx_models_to_ort.py +++ b/tools/python/convert_onnx_models_to_ort.py @@ -98,6 +98,8 @@ def _get_optimization_level(level): return ort.GraphOptimizationLevel.ORT_ENABLE_EXTENDED if level == 'all': # all optimizations, including NCHWc (which has hardware specific logic) + print('WARNING: Enabling layout optimizations is not recommended unless the ORT format model will be executed ' + 'on the same hardware used to create the model.') return ort.GraphOptimizationLevel.ORT_ENABLE_ALL raise ValueError('Invalid optimization level of ' + level)