# Build for macOS-arm64 - [Build for macOS-arm64](#build-for-macos-arm64) - [Install Toolchains](#install-toolchains) - [Install Dependencies](#install-dependencies) - [Install Dependencies for Model Converter](#install-dependencies-for-model-converter) - [Install Dependencies for SDK](#install-dependencies-for-sdk) - [Install Inference Engines for MMDeploy](#install-inference-engines-for-mmdeploy) - [Build MMDeploy](#build-mmdeploy) - [Build Model Converter](#build-model-converter) - [Install Model Converter](#install-model-converter) - [Build SDK and Demo](#build-sdk-and-demo) ## Install Toolchains - cmake ``` brew install cmake ``` - clang install Xcode or Command Line Tools ``` xcode-select --install ``` ## Install Dependencies ### Install Dependencies for Model Converter Please refer to [get_started](../get_started.md) to install conda. ```bash # install pytorch & mmcv-full conda install pytorch==1.9.0 torchvision==0.10.0 -c pytorch pip install mmcv-full==1.6.0 -f https://download.openmmlab.com/mmcv/dist/cpu/torch1.9.0/index.html ``` ### Install Dependencies for SDK You can skip this chapter if you are only interested in the model converter.
NAME INSTALLATION
OpenCV
(>=3.0)

brew install opencv
### Install Inference Engines for MMDeploy Both MMDeploy's model converter and SDK share the same inference engines. You can select you interested inference engines and do the installation by following the given commands. This document focus on Core ML. The installation of ONNX Runtime, ncnn and TorchScript is similar to the linux platform, please refer to the document [linux-x86_64](linux-x86_64.md) for installation. The TorchScript model is used as the IR in the conversion process of the Core ML model. In order to support the custom operator in some models like detection models in mmdet, libtorch needs to be installed.
NAME PACKAGE INSTALLATION
Core ML coremltools

pip install coremltools==6.0b2
TorchScript libtorch 1. Libtorch doesn't provide prebuilt arm library for macOS, so you need to compile it yourself. Please note that the version of libtorch must be consistent with the version of pytorch.
2. Take LibTorch 1.9.0 as an example. You can install it like this:

git clone -b v1.9.0 --recursive https://github.com/pytorch/pytorch.git
cd pytorch
mkdir build && cd build
cmake .. \
    -DCMAKE_BUILD_TYPE=Release \
    -DPYTHON_EXECUTABLE=`which python` \
    -DCMAKE_INSTALL_PREFIX=install \
    -DDISABLE_SVE=ON # low version like 1.9.0 of pytorch need DISABLE_SVE option
make -j4 && make install
export Torch_DIR=$(pwd)/install/share/cmake/Torch
## Build MMDeploy ```bash cd /the/root/path/of/MMDeploy export MMDEPLOY_DIR=$(pwd) ``` ### Build Model Converter - **Core ML** Core ML uses torchscript as IR, to convert models in some codebases like mmdet, you need to compile torchscript custom operators - **torchscript** custom operators ```bash cd ${MMDEPLOY_DIR} mkdir -p build && cd build cmake -DMMDEPLOY_TARGET_BACKENDS=coreml -DTorch_DIR=${Torch_DIR} .. make -j4 && make install ``` Please check [cmake build option](cmake_option.md). ### Install Model Converter ```bash # You should use `conda install` to install the grpcio in requirements/runtime.txt conda install grpcio ``` ```bash cd ${MMDEPLOY_DIR} pip install -v -e . ``` **Note** - Some dependencies are optional. Simply running `pip install -e .` will only install the minimum runtime requirements. To use optional dependencies, install them manually with `pip install -r requirements/optional.txt` or specify desired extras when calling `pip` (e.g. `pip install -e .[optional]`). Valid keys for the extras field are: `all`, `tests`, `build`, `optional`. ### Build SDK and Demo The following shows an example of building an SDK using Core ML as the inference engine. - cpu + Core ML ```Bash cd ${MMDEPLOY_DIR} mkdir -p build && cd build cmake .. \ -DMMDEPLOY_BUILD_SDK=ON \ -DMMDEPLOY_BUILD_EXAMPLES=ON \ -DMMDEPLOY_BUILD_SDK_PYTHON_API=ON \ -DMMDEPLOY_TARGET_DEVICES=cpu \ -DMMDEPLOY_TARGET_BACKENDS=coreml \ -DTorch_DIR=${Torch_DIR} make -j4 && make install ```