From 7e74895201236bb7373806e3087193864c8e968a Mon Sep 17 00:00:00 2001 From: Poyuan Jeng Date: Wed, 27 Nov 2024 17:31:36 +0800 Subject: [PATCH 01/10] add MTK ci --- .ci/scripts/build-mediatek-sdk.sh | 22 ++++++++++++++++++++ .ci/scripts/setup-mediatek-deps.sh | 33 ++++++++++++++++++++++++++++++ .ci/scripts/test_model.sh | 24 ++++++++++++++++++++++ 3 files changed, 79 insertions(+) create mode 100755 .ci/scripts/build-mediatek-sdk.sh create mode 100755 .ci/scripts/setup-mediatek-deps.sh diff --git a/.ci/scripts/build-mediatek-sdk.sh b/.ci/scripts/build-mediatek-sdk.sh new file mode 100755 index 00000000000..81e64b241ce --- /dev/null +++ b/.ci/scripts/build-mediatek-sdk.sh @@ -0,0 +1,22 @@ +#!/bin/bash +# Copyright (c) Meta Platforms, Inc. and affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. + +set -eux + +build_neuron_backend() { + echo "Start building neuron backend." + export ANDROID_NDK=/opt/ndk + export MEDIATEK_SDK_ROOT=/tmp/neuropilot + export NEURON_BUFFER_ALLOCATOR_LIB=${MEDIATEK_SDK_ROOT}/libneuron_buffer_allocator.so + export EXECUTORCH_ROOT="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/../.." && pwd)" + + + cd ${EXECUTORCH_ROOT} + ./backends/mediatek/scripts/mtk_build.sh +} + +build_neuron_backend diff --git a/.ci/scripts/setup-mediatek-deps.sh b/.ci/scripts/setup-mediatek-deps.sh new file mode 100755 index 00000000000..a1b5cb935c3 --- /dev/null +++ b/.ci/scripts/setup-mediatek-deps.sh @@ -0,0 +1,33 @@ +#!/bin/bash +# Copyright (c) Meta Platforms, Inc. and affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. + +set -eux + +MEDIATEK_INSTALLATION_DIR=/tmp/neuropilot +EXECUTORCH_ROOT="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/../.." && pwd)" + +install_neuropilot() { + echo "Start installing neuropilot." + mkdir -p "${MEDIATEK_INSTALLATION_DIR}" + + # curl -Lo /tmp/neuropilot-express-sdk-8.0.4-build20241016.tar.gz "https://s3.ap-southeast-1.amazonaws.com/mediatek.neuropilot.com/8c1ff4e4-4256-47ed-9e24-67818b4cc4b9.gz" + echo "Finishing downloading neuropilot sdk." + tar zxvf /tmp/neuropilot-express-sdk-8.0.4-build20241016.tar.gz --strip-components=1 --directory "${MEDIATEK_INSTALLATION_DIR}" + echo "Finishing unzip neuropilot sdk." + + # Print the content for manual verification + ls -lah "${MEDIATEK_INSTALLATION_DIR}" +} + +setup_neuropilot() { + pip3 install -r ${EXECUTORCH_ROOT}/backends/mediatek/requirements.txt + pip3 install ${MEDIATEK_INSTALLATION_DIR}/mtk_neuron-8.2.13-py3-none-linux_x86_64.whl + pip3 install ${MEDIATEK_INSTALLATION_DIR}/mtk_converter-8.9.1_public_packages/mtk_converter-8.9.1+public-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl +} + +install_neuropilot +setup_neuropilot diff --git a/.ci/scripts/test_model.sh b/.ci/scripts/test_model.sh index 0727eecf770..6c1d4db9f6b 100755 --- a/.ci/scripts/test_model.sh +++ b/.ci/scripts/test_model.sh @@ -206,6 +206,24 @@ test_model_with_mps() { EXPORTED_MODEL=$(find "." -type f -name "${MODEL_NAME}*.pte" -print -quit) } +test_model_with_mediatek() { + if [[ "${MODEL_NAME}" == "dl3" ]]; then + EXPORT_SCRIPT=deeplab_v3 + elif [[ "${MODEL_NAME}" == "mv3" ]]; then + EXPORT_SCRIPT=mobilenet_v3 + elif [[ "${MODEL_NAME}" == "mv2" ]]; then + EXPORT_SCRIPT=mobilenet_v2 + elif [[ "${MODEL_NAME}" == "ic4" ]]; then + EXPORT_SCRIPT=inception_v4 + elif [[ "${MODEL_NAME}" == "ic3" ]]; then + EXPORT_SCRIPT=inception_v3 + fi + + "${PYTHON_EXECUTABLE}" -m examples.mediatek.model_export_scripts.${EXPORT_SCRIPT} -d /tmp/tiny_imagenet -a ${EXPORT_SCRIPT} + EXPORTED_MODEL=$(find "./${EXPORT_SCRIPT}" -type f -name "*.pte" -print -quit) +} + + if [[ "${BACKEND}" == "portable" ]]; then echo "Testing ${MODEL_NAME} with portable kernels..." test_model @@ -239,6 +257,12 @@ elif [[ "${BACKEND}" == "xnnpack" ]]; then if [[ $? -eq 0 ]]; then prepare_artifacts_upload fi +elif [[ "${BACKEND}" == "mediatek" ]]; then + echo "Testing ${MODEL_NAME} with mediatek..." + test_model_with_mediatek + if [[ $? -eq 0 ]]; then + prepare_artifacts_upload + fi else set +e if [[ "${BACKEND}" == *"quantization"* ]]; then From 07b351435ed7745c1a3066f2c53768e8e910a6b9 Mon Sep 17 00:00:00 2001 From: neuropilot-captain Date: Wed, 25 Dec 2024 20:26:36 +0800 Subject: [PATCH 02/10] Add test --- .ci/scripts/setup-mediatek-deps.sh | 8 +++++++- .ci/scripts/test_model.sh | 2 +- .github/workflows/pull.yml | 4 +++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/.ci/scripts/setup-mediatek-deps.sh b/.ci/scripts/setup-mediatek-deps.sh index a1b5cb935c3..c930a58d99e 100755 --- a/.ci/scripts/setup-mediatek-deps.sh +++ b/.ci/scripts/setup-mediatek-deps.sh @@ -14,7 +14,7 @@ install_neuropilot() { echo "Start installing neuropilot." mkdir -p "${MEDIATEK_INSTALLATION_DIR}" - # curl -Lo /tmp/neuropilot-express-sdk-8.0.4-build20241016.tar.gz "https://s3.ap-southeast-1.amazonaws.com/mediatek.neuropilot.com/8c1ff4e4-4256-47ed-9e24-67818b4cc4b9.gz" + curl -Lo /tmp/neuropilot-express-sdk-8.0.4-build20241016.tar.gz "https://s3.ap-southeast-1.amazonaws.com/mediatek.neuropilot.com/8c1ff4e4-4256-47ed-9e24-67818b4cc4b9.gz" echo "Finishing downloading neuropilot sdk." tar zxvf /tmp/neuropilot-express-sdk-8.0.4-build20241016.tar.gz --strip-components=1 --directory "${MEDIATEK_INSTALLATION_DIR}" echo "Finishing unzip neuropilot sdk." @@ -29,5 +29,11 @@ setup_neuropilot() { pip3 install ${MEDIATEK_INSTALLATION_DIR}/mtk_converter-8.9.1_public_packages/mtk_converter-8.9.1+public-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl } +setup_calibration_data() { + curl -Lo /tmp/imagenette2-160.tgz https://s3.amazonaws.com/fast-ai-imageclas/imagenette2-160.tgz + tar zxvf /tmp/imagenette2-160.tgz --strip-components=1 --directory "${MEDIATEK_INSTALLATION_DIR}" +} + install_neuropilot setup_neuropilot +setup_calibration_data diff --git a/.ci/scripts/test_model.sh b/.ci/scripts/test_model.sh index 3efa41fa521..ed8abc80080 100755 --- a/.ci/scripts/test_model.sh +++ b/.ci/scripts/test_model.sh @@ -219,7 +219,7 @@ test_model_with_mediatek() { EXPORT_SCRIPT=inception_v3 fi - "${PYTHON_EXECUTABLE}" -m examples.mediatek.model_export_scripts.${EXPORT_SCRIPT} -d /tmp/tiny_imagenet -a ${EXPORT_SCRIPT} + "${PYTHON_EXECUTABLE}" -m examples.mediatek.model_export_scripts.${EXPORT_SCRIPT} -d /tmp/neuropilot/train -a ${EXPORT_SCRIPT} EXPORTED_MODEL=$(find "./${EXPORT_SCRIPT}" -type f -name "*.pte" -print -quit) } diff --git a/.github/workflows/pull.yml b/.github/workflows/pull.yml index 5941ab52e7f..4ae4829665d 100644 --- a/.github/workflows/pull.yml +++ b/.github/workflows/pull.yml @@ -521,4 +521,6 @@ jobs: CONDA_ENV=$(conda env list --json | jq -r ".envs | .[-1]") conda activate "${CONDA_ENV}" - # placeholder for mediatek to add more tests + bash .ci/scripts/setup-mediatek-deps.sh + bash .ci/scripts/build-mediatek-sdk.sh + bash .ci/scripts/test_model.sh "mv3" "buck2" "mediatek" From 63750074d8b870751c0deb07613c9ee3dece6726 Mon Sep 17 00:00:00 2001 From: Poyuan Jeng Date: Wed, 5 Feb 2025 15:30:26 +0800 Subject: [PATCH 03/10] Fix install package version --- .ci/scripts/setup-mediatek-deps.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci/scripts/setup-mediatek-deps.sh b/.ci/scripts/setup-mediatek-deps.sh index c930a58d99e..bcdc94aaab6 100755 --- a/.ci/scripts/setup-mediatek-deps.sh +++ b/.ci/scripts/setup-mediatek-deps.sh @@ -26,7 +26,7 @@ install_neuropilot() { setup_neuropilot() { pip3 install -r ${EXECUTORCH_ROOT}/backends/mediatek/requirements.txt pip3 install ${MEDIATEK_INSTALLATION_DIR}/mtk_neuron-8.2.13-py3-none-linux_x86_64.whl - pip3 install ${MEDIATEK_INSTALLATION_DIR}/mtk_converter-8.9.1_public_packages/mtk_converter-8.9.1+public-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + pip3 install ${MEDIATEK_INSTALLATION_DIR}/mtk_converter-8.9.1_public_packages/mtk_converter-8.9.1+public-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl } setup_calibration_data() { From 10ec29fc3c15dfb25b2e06949eed9bfeaab0e3c0 Mon Sep 17 00:00:00 2001 From: Poyuan Jeng Date: Thu, 27 Feb 2025 12:33:59 +0800 Subject: [PATCH 04/10] Add to run install android script --- .ci/scripts/setup-mediatek-deps.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.ci/scripts/setup-mediatek-deps.sh b/.ci/scripts/setup-mediatek-deps.sh index bcdc94aaab6..5454bcaf463 100755 --- a/.ci/scripts/setup-mediatek-deps.sh +++ b/.ci/scripts/setup-mediatek-deps.sh @@ -23,6 +23,12 @@ install_neuropilot() { ls -lah "${MEDIATEK_INSTALLATION_DIR}" } +install_android() { + copy ../docker/common/install_android.sh install_android.sh + ./install_android.sh + rm install_android.sh +} + setup_neuropilot() { pip3 install -r ${EXECUTORCH_ROOT}/backends/mediatek/requirements.txt pip3 install ${MEDIATEK_INSTALLATION_DIR}/mtk_neuron-8.2.13-py3-none-linux_x86_64.whl @@ -34,6 +40,7 @@ setup_calibration_data() { tar zxvf /tmp/imagenette2-160.tgz --strip-components=1 --directory "${MEDIATEK_INSTALLATION_DIR}" } +install_android install_neuropilot setup_neuropilot setup_calibration_data From da6648a2da6d5831987c460886a7c33da164d88e Mon Sep 17 00:00:00 2001 From: Poyuan Jeng Date: Wed, 5 Mar 2025 09:53:45 +0800 Subject: [PATCH 05/10] fix typo --- .ci/scripts/setup-mediatek-deps.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.ci/scripts/setup-mediatek-deps.sh b/.ci/scripts/setup-mediatek-deps.sh index 5454bcaf463..a5636b6ced9 100755 --- a/.ci/scripts/setup-mediatek-deps.sh +++ b/.ci/scripts/setup-mediatek-deps.sh @@ -24,8 +24,8 @@ install_neuropilot() { } install_android() { - copy ../docker/common/install_android.sh install_android.sh - ./install_android.sh + cp ${EXECUTORCH_ROOT}/.ci/docker/common/install_android.sh install_android.sh + ANDROID_NDK_VERSION=r27b ./install_android.sh rm install_android.sh } From 6cc833a90ed3cc4d1178ac1f067e9b68859e1219 Mon Sep 17 00:00:00 2001 From: Poyuan Jeng Date: Thu, 27 Mar 2025 13:58:37 +0800 Subject: [PATCH 06/10] remove android setup --- .ci/scripts/setup-mediatek-deps.sh | 7 ------- 1 file changed, 7 deletions(-) diff --git a/.ci/scripts/setup-mediatek-deps.sh b/.ci/scripts/setup-mediatek-deps.sh index a5636b6ced9..bcdc94aaab6 100755 --- a/.ci/scripts/setup-mediatek-deps.sh +++ b/.ci/scripts/setup-mediatek-deps.sh @@ -23,12 +23,6 @@ install_neuropilot() { ls -lah "${MEDIATEK_INSTALLATION_DIR}" } -install_android() { - cp ${EXECUTORCH_ROOT}/.ci/docker/common/install_android.sh install_android.sh - ANDROID_NDK_VERSION=r27b ./install_android.sh - rm install_android.sh -} - setup_neuropilot() { pip3 install -r ${EXECUTORCH_ROOT}/backends/mediatek/requirements.txt pip3 install ${MEDIATEK_INSTALLATION_DIR}/mtk_neuron-8.2.13-py3-none-linux_x86_64.whl @@ -40,7 +34,6 @@ setup_calibration_data() { tar zxvf /tmp/imagenette2-160.tgz --strip-components=1 --directory "${MEDIATEK_INSTALLATION_DIR}" } -install_android install_neuropilot setup_neuropilot setup_calibration_data From fa1da75a6defa4392aeaeb581a5b79fba4d80952 Mon Sep 17 00:00:00 2001 From: neuropilot-captain Date: Tue, 10 Jun 2025 17:37:29 +0800 Subject: [PATCH 07/10] Set python path and update for Express SDK --- .ci/scripts/setup-mediatek-deps.sh | 11 +++++++---- .ci/scripts/test_model.sh | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/.ci/scripts/setup-mediatek-deps.sh b/.ci/scripts/setup-mediatek-deps.sh index bcdc94aaab6..f93a319e11a 100755 --- a/.ci/scripts/setup-mediatek-deps.sh +++ b/.ci/scripts/setup-mediatek-deps.sh @@ -14,19 +14,22 @@ install_neuropilot() { echo "Start installing neuropilot." mkdir -p "${MEDIATEK_INSTALLATION_DIR}" - curl -Lo /tmp/neuropilot-express-sdk-8.0.4-build20241016.tar.gz "https://s3.ap-southeast-1.amazonaws.com/mediatek.neuropilot.com/8c1ff4e4-4256-47ed-9e24-67818b4cc4b9.gz" + curl -Lo /tmp/neuropilot-express.tar.gz "https://s3.ap-southeast-1.amazonaws.com/mediatek.neuropilot.com/06302508-4c94-4bf2-9789-b0ee44e83e27.gz" echo "Finishing downloading neuropilot sdk." - tar zxvf /tmp/neuropilot-express-sdk-8.0.4-build20241016.tar.gz --strip-components=1 --directory "${MEDIATEK_INSTALLATION_DIR}" + tar zxvf /tmp/neuropilot-express.tar.gz --strip-components=1 --directory "${MEDIATEK_INSTALLATION_DIR}" echo "Finishing unzip neuropilot sdk." + # Copy NP header + cp ${MEDIATEK_INSTALLATION_DIR}/api/NeuronAdapter.h ${EXECUTORCH_ROOT}/backends/mediatek/runtime/include/api/ + # Print the content for manual verification ls -lah "${MEDIATEK_INSTALLATION_DIR}" } setup_neuropilot() { pip3 install -r ${EXECUTORCH_ROOT}/backends/mediatek/requirements.txt - pip3 install ${MEDIATEK_INSTALLATION_DIR}/mtk_neuron-8.2.13-py3-none-linux_x86_64.whl - pip3 install ${MEDIATEK_INSTALLATION_DIR}/mtk_converter-8.9.1_public_packages/mtk_converter-8.9.1+public-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + pip3 install ${MEDIATEK_INSTALLATION_DIR}/mtk_neuron-8.2.19-py3-none-linux_x86_64.whl + pip3 install ${MEDIATEK_INSTALLATION_DIR}/mtk_converter-8.13.0_public_packages/mtk_converter-8.13.0+public-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl } setup_calibration_data() { diff --git a/.ci/scripts/test_model.sh b/.ci/scripts/test_model.sh index 0f495fbd077..38a354eddf0 100755 --- a/.ci/scripts/test_model.sh +++ b/.ci/scripts/test_model.sh @@ -257,7 +257,7 @@ test_model_with_mediatek() { EXPORT_SCRIPT=inception_v3 fi - "${PYTHON_EXECUTABLE}" -m examples.mediatek.model_export_scripts.${EXPORT_SCRIPT} -d /tmp/neuropilot/train -a ${EXPORT_SCRIPT} + PYTHONPATH=examples/mediatek/ "${PYTHON_EXECUTABLE}" -m examples.mediatek.model_export_scripts.${EXPORT_SCRIPT} -d /tmp/neuropilot/train -a ${EXPORT_SCRIPT} EXPORTED_MODEL=$(find "./${EXPORT_SCRIPT}" -type f -name "*.pte" -print -quit) } From b6dd2567020e709960895fa1ec4043c73805c81a Mon Sep 17 00:00:00 2001 From: neuropilot-captain Date: Wed, 11 Jun 2025 14:00:34 +0800 Subject: [PATCH 08/10] Install executorch --- .github/workflows/pull.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/pull.yml b/.github/workflows/pull.yml index 5945fa7cf92..ed029228a99 100644 --- a/.github/workflows/pull.yml +++ b/.github/workflows/pull.yml @@ -705,6 +705,8 @@ jobs: CONDA_ENV=$(conda env list --json | jq -r ".envs | .[-1]") conda activate "${CONDA_ENV}" + ./install_requirements.sh --use-pt-pinned-commit + bash .ci/scripts/setup-mediatek-deps.sh bash .ci/scripts/build-mediatek-sdk.sh bash .ci/scripts/test_model.sh "mv3" "buck2" "mediatek" From 6d61dd83be8b86935e759df938fdacc2b220acc1 Mon Sep 17 00:00:00 2001 From: neuropilot-captain Date: Wed, 11 Jun 2025 14:33:57 +0800 Subject: [PATCH 09/10] Install executorch --- .github/workflows/pull.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pull.yml b/.github/workflows/pull.yml index ed029228a99..2cc5f18f1e8 100644 --- a/.github/workflows/pull.yml +++ b/.github/workflows/pull.yml @@ -706,10 +706,11 @@ jobs: conda activate "${CONDA_ENV}" ./install_requirements.sh --use-pt-pinned-commit + ./install_executorch.sh - bash .ci/scripts/setup-mediatek-deps.sh - bash .ci/scripts/build-mediatek-sdk.sh - bash .ci/scripts/test_model.sh "mv3" "buck2" "mediatek" + PYTHON_EXECUTABLE=python bash .ci/scripts/setup-mediatek-deps.sh + PYTHON_EXECUTABLE=python bash .ci/scripts/build-mediatek-sdk.sh + PYTHON_EXECUTABLE=python bash .ci/scripts/test_model.sh "mv3" "buck2" "mediatek" # placeholder for mediatek to add more tests test-openvino-linux: From 85d24265eb1af33b264059ef96559c6ab5c2d1fc Mon Sep 17 00:00:00 2001 From: neuropilot-captain Date: Wed, 11 Jun 2025 15:08:15 +0800 Subject: [PATCH 10/10] Install Executorch --- .github/workflows/pull.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pull.yml b/.github/workflows/pull.yml index 2cc5f18f1e8..df254b7f409 100644 --- a/.github/workflows/pull.yml +++ b/.github/workflows/pull.yml @@ -705,8 +705,8 @@ jobs: CONDA_ENV=$(conda env list --json | jq -r ".envs | .[-1]") conda activate "${CONDA_ENV}" - ./install_requirements.sh --use-pt-pinned-commit - ./install_executorch.sh + source .ci/scripts/utils.sh + install_executorch "--use-pt-pinned-commit" PYTHON_EXECUTABLE=python bash .ci/scripts/setup-mediatek-deps.sh PYTHON_EXECUTABLE=python bash .ci/scripts/build-mediatek-sdk.sh