MediaTek backend empowers ExecuTorch to speed up PyTorch models on edge devices that equips with MediaTek Neuron Processing Unit (NPU). This document offers a step-by-step guide to set up the build environment for the MediaTek ExecuTorch libraries.
The examples provided in this repository are tested and supported on the following MediaTek chip:
- MediaTek Dimensity 9300 (D9300)
Before you begin, ensure you have the following prerequisites installed and configured:
- Download Buck2: Obtain Buck2 from the official releases page.
- Add to PATH: Extract the downloaded file and add the directory to your system's
$PATH
environment variable.export PATH=<path_to_buck>:$PATH
- Download Android NDK: Acquire the Android NDK version 26.3.11579264 from the Android developer site.
- Set NDK Path: Ensure that the
$ANDROID_NDK
environment variable is set to the path where the NDK is located.export ANDROID_NDK=<path_to_android_ndk>
Download NeuroPilot Express SDK from MediaTek's NeuroPilot portal:
libneuronusdk_adapter.mtk.so
: This universal SDK contains the implementation required for executing target-dependent code on the MediaTek chip.libneuron_buffer_allocator.so
: This utility library is designed for allocating DMA buffers necessary for model inference.mtk_converter-8.8.0.dev20240723+public.d1467db9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
: This library preprocess the model into a MediaTek representation.mtk_neuron-8.2.2-py3-none-linux_x86_64.whl
: This library converts the model to binaries.- Copy
NeuronAdapter.h
underbackends/mediatek/runtime/include/api/
.
Follow the steps below to setup your build environment:
-
Setup ExecuTorch Environment: Refer to the Setting up ExecuTorch guide for detailed instructions on setting up the ExecuTorch environment.
-
Setup MediaTek Backend Environment
- Install the dependent libs. Ensure that you are inside backends/mediatek/ directory
pip3 install -r requirements.txt
- Install the two .whl downloaded from NeuroPilot Portal
pip3 install mtk_neuron-8.2.2-py3-none-linux_x86_64.whl pip3 install mtk_converter-8.8.0.dev20240723+public.d1467db9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Set evironment variables for building backend
export NEURON_BUFFER_ALLOCATOR_LIB=<path_to_buffer_allocator>
-
Navigate to
scripts/
directory. -
Build MediaTek Backend: Once the prerequisites are in place, run the
mtk_build.sh
script to start the build process, MediaTek backend will be built undercmake-android-out/backends/
aslibneuron_backend.so
./mtk_build.sh
-
Push MediaTek universal SDK and MediaTek backend to the device: push
libneuronusdk_adapter.mtk.so
andlibneuron_backend.so
to the phone and export it to the$LD_LIBRARY_PATH
environment variable before executing ExecuTorch with MediaTek backend.export LD_LIBRARY_PATH=<path_to_usdk>:<path_to_neuron_backend>:$LD_LIBRARY_PATH
Please refer to executorch/examples/mediatek/
for export and execution examples of various of models.