通用性 - 支持TensorFlow、Caffe、ONNX等主流模型格式,支持CNN、RNN、GAN等常用网络。
高性能 - 极致优化算子性能,全面支持CPU、GPU、NPU,充分发挥设备算力。
易用性 - 转换、可视化、调试工具齐全,能方便地部署到移动设备和各种嵌入式设备中。
- apt-get install cmake gcc
- git clone https://github.com/google/protobuf.git
- cd protobuf
- git submodule update --init --recursive
- ./autogen.sh
- ./configure
- make
- make check
- sudo make install
- sudo ldconfig # refresh shared library cache.
1. 下载
git clone https://github.com/alibaba/MNN
2. 编译选项
使用cmake编译时,可以修改CMakeLists.txt中的选项:
默认关闭,关闭时,不保留符号,开启优化。
默认开启,关闭后,禁用openmp多线程优化。
默认关闭,开启后,编译OpenCL部分,可以通过指定MNN_FORWARD_OPENCL利用GPU进行推理。
默认关闭,开启后,编译OpenGL部分,可以通过指定MNN_FORWARD_OPENGL利用GPU进行推理。
默认关闭,开启后,编译Vulkan部分,可以通过指定MNN_FORWARD_VULKAN利用GPU进行推理。
默认关闭,开启后,编译Metal部分,可以通过指定MNN_FORWARD_METAL利用GPU进行推理,仅限iOS或macOS上开启。
默认关闭,开启后,编译Arm8.2部分,用Arm8.2+扩展指令集实现半精度浮点计算(fp16)和int8(sdot)加速
使用Arm82+扩展指令的方法如下:
- // 创建session需要的配置
- MNN::ScheduleConfig config;
- // 选择Backend
- config.type = MNN_FORWARD_CPU;
- // 线程数
- config.numThread = 2;
- // 配置相应的Backend
- BackendConfig backendConfig;
- // 选择低精度
- backendConfig.precision = BackendConfig::Precision_Low;
- config.backendConfig = &backendConfig;
准备工作
(可选,修改 MNN Schema 后需要)
- cd /path/to/MNN
- ./schema/generate.sh
- ./tools/script/get_model.sh # 可选,模型仅demo工程需要
本地编译
mkdir build && cd build && cmake .. && make -j8
编译完成后本地出现MNN的动态库。