@@ -13,6 +13,11 @@ Refer to `Tensorflow quantization-aware training <https://github.com/tensorflow/
After pre-training model using float point, estimate output range of each activation layer using sample inputs.
.. note::
`quantize_weights` and `quantize_nodes` should not be specified when using `TransformGraph` tool if using MACE quantization.
Quantization-aware training
----------------------------
It is recommended that developers fine tune the fixed-point model, as experiments show that by this way accuracy could be improved, especially for lightweight
...
...
@@ -69,6 +74,41 @@ MACE provides tools to do statistics with following steps:
`quantize` to `1` and `quantize_range_file` to the overall_range file path in yaml config).
.. note::
Supported devices
-----------------
MACE supports running quantized models on ARM CPU and other acceleration devices, e.g., Qualcomm Hexagon DSP, MediaTek APU.
ARM CPU is ubiquitous, which can speed up most of edge devices. However, AI specialized devices may run much faster
than ARM CPU, and in the meantime consume much lower power. Headers and libraries of these devices can be found in `third_party`
directory.
`quantize_weights` and `quantize_nodes` should not be specified when using `TransformGraph` tool if using MACE quantization.
* **To run models on Hexagon DSP, users should**
1. Make sure SOCs of the phone is manufactured by Qualcomm and has HVX supported.
2. Make sure the phone disables secure boot (once enabled, cannot be reversed, so you probably can only get that type
phones from manufacturers). This can be checked by executing the following command.
.. code-block:: sh
adb shell getprop ro.boot.secureboot
The return value should be 0.
3. Root the phone.
4. Sign the phone by using testsig provided by Qualcomm. (Download Qualcomm Hexagon SDK first, plugin the phone to PC,
run scripts/testsig.py)
5. Push `third_party/nnlib/v6x/libhexagon_nn_skel.so` to `/system/vendor/lib/rfsa/adsp/`. You can check
`docs/feature_matrix.html` in Hexagon SDK to make sure which version to use.
Then, there you go, you can run Mace on Hexagon DSP. This indeed seems like a whole lot of work to do. Well, the good news
is that starting in the SM8150 family(some devices with old firmware may still not work), signature-free dynamic
module offload is enabled on cDSP. So, steps 2-4 can be skipped. This can be achieved by calling `SetHexagonToUnsignedPD()`
before creating MACE engine.
* **To run models on MediaTek APU, users should**
1. Make sure SOCs of the phone is manufactured by MediaTek and has APU supported.
2. Push `third_party/apu/mtxxxx/libapu-platform.so` to `/vendor/lib64/`.