Files
2026-07-13 13:33:03 +08:00

73 lines
2.0 KiB
Bash
Executable File

#!/bin/bash
set -e
usage() {
echo "Usage: $0 --mnn-tag MNN_TAG [--torch-tag TORCH_TAG]"
echo -e "\t--mnn_tag mnn git tag"
echo -e "\t--torch-tag torch git tag"
exit 1
}
while getopts ":h-:" opt; do
case "$opt" in
-)
case "$OPTARG" in
mnn-tag) MNN_TAG=${!OPTIND} ; OPTIND=$(( $OPTIND + 1 )) ;;
torch-tag) TORCH_TAG=${!OPTIND} ; OPTIND=$(( $OPTIND + 1 )) ;;
*) usage ;;
esac ;;
h|? ) usage ;;
esac
done
# Convert onnx -> mnn/pt/ptlite/pb/tflite
rm -rf onnx-pytorch
git clone --depth 1 --branch feature/mobilenetv2_bert_support https://github.com/yutianhang/onnx-pytorch.git
python -m pip uninstall -y onnx-pytorch
pushd onnx-pytorch
python -m pip install -r requirements.txt
python -m pip install .
popd
python -m pip install onnx_tf tensorflow==2.7.0 tensorflow-probability==0.15.0 onnx
#MNN_REPO=https://github.com/alibaba/MNN.git
MNN_REPO=git@gitlab.alibaba-inc.com:AliNN/AliNNPrivate.git
if [ -z "$MNN_TAG" ]; then
echo "MNNConvert need MNN git repo tag --mnn-tag MNN_TAG"
exit 1
fi
if [ ! -d MNN ] || ([ "$(cd MNN && git describe --tags)" != "$MNN_TAG" ] && [[ "$(cd MNN && git rev-parse HEAD)" != "${MNN_TAG}"* ]]); then
rm -rf MNN
set +e
git clone --depth 1 --branch $MNN_TAG $MNN_REPO MNN
set -e
if [ ! -d MNN ]; then
git clone $MNN_REPO MNN
pushd MNN
git checkout $MNN_TAG
popd
fi
fi
if [ ! -f MNN/build_converter/MNNConvert ]; then
pushd MNN
rm -rf build_converter && mkdir build_converter && pushd build_converter
cmake -DMNN_BUILD_CONVERTER=ON ..
make -j
popd
popd
fi
if [ ! -d pytorch ] || [ "$(cd pytorch && git describe --tags)" != "$TORCH_TAG" ]; then
rm -rf pytorch
git clone --depth 1 --branch $TORCH_TAG https://github.com/pytorch/pytorch.git
pushd pytorch
git submodule sync --recursive
git submodule update --init --recursive
popd
fi
python -m pip uninstall -y torch
pushd pytorch
USE_PYTORCH_METAL=ON USE_VULKAN=ON python setup.py install
popd
python convert.py --modeldir models