官网
MNN 轻量级高性能推理引擎
-
通用性 - 支持TensorFlow、Caffe、ONNX等主流模型格式,支持CNN、RNN、GAN等常用网络。
-
高性能 - 极致优化算子性能,全面支持CPU、GPU、NPU,充分发挥设备算力。
-
易用性 - 转换、可视化、调试工具齐全,能方便地部署到移动设备和各种嵌入式设备中。
环境要求
- cmake(建议使用3.10或以上版本)、
- protobuf(使用3.0或以上版本)
- gcc(使用4.9或以上版本)
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中的选项:
- MNN_DEBUG
默认关闭,关闭时,不保留符号,开启优化。
- MNN_OPENMP
默认开启,关闭后,禁用openmp多线程优化。
- MNN_OPENCL
默认关闭,开启后,编译OpenCL部分,可以通过指定MNN_FORWARD_OPENCL利用GPU进行推理。
- MNN_OPENGL
默认关闭,开启后,编译OpenGL部分,可以通过指定MNN_FORWARD_OPENGL利用GPU进行推理。
- MNN_VULKAN
默认关闭,开启后,编译Vulkan部分,可以通过指定MNN_FORWARD_VULKAN利用GPU进行推理。
- MNN_METAL
默认关闭,开启后,编译Metal部分,可以通过指定MNN_FORWARD_METAL利用GPU进行推理,仅限iOS或macOS上开启。
- MNN_ARM82
默认关闭,开启后,编译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;
3. 编译
准备工作
(可选,修改 MNN Schema 后需要)
cd /path/to/MNN
./schema/generate.sh
./tools/script/get_model.sh # 可选,模型仅demo工程需要
本地编译
mkdir build && cd build && cmake .. && make -j8
编译完成后本地出现MNN的动态库。
MNN是一个由阿里巴巴开发的轻量级、高性能的深度学习推理引擎,支持多种模型格式如TensorFlow、Caffe和ONNX,以及CNN、RNN、GAN等网络。它优化了算子性能,兼容多种硬件平台,并提供了便捷的转换、调试和部署工具。要安装MNN,需要先安装cmake、protobuf等依赖,然后通过git clone获取源码,使用cmake进行编译配置,最后进行编译和安装。

被折叠的 条评论
为什么被折叠?



