其他模块编译
模型转换工具
相关编译选项
MNN_BUILD_CONVERTER
是否编译模型转换工具MNN_BUILD_TORCH
是否支持TorchScript模型转换,MacOS下需要安装pytorch,Linux下会下载libtorch
编译命令
cmake .. -DMNN_BUILD_CONVERTER=ON -DMNN_BUILD_TORCH=ON
编译产物
MNNConvert
模型转换工具TestConvertResult
模型转换正确性测试工具,Windows下没有此产物,用MNNConvert
对应功能替代TestPassManager
模型转换工具测试用例MNNDump2Json
模型转换为JsonMNNRevert2Buffer
Json转换为模型OnnxClip
Onnx模型裁剪工具
训练框架
相关编译选项
MNN_BUILD_TRAIN
是否编译训练框架MNN_BUILD_TRAIN_MINI
对于移动端/嵌入式设备,建议设置MNN_BUILD_TRAIN_MINI=ON
,不编译内置的Dataset
,Models
,这部分在移动端/嵌入式设备上一般有其他解决方案MNN_USE_OPENCV
部分PC上的demo有用到,与Dataset处理相关
编译命令
mkdir build && cd build cmake .. -DMNN_BUILD_TRAIN=ON -DMNN_USE_OPENCV=ON make -j4
编译产物
MNNTrain
训练框架库runTrainDemo.out
运行训练框架demo的入口程序transformer
训练模型转换器,将推理用的MNN模型转换为执行训练的MNN模型extractForInfer
从执行训练的MNN模型中提取参数,对应更新推理用的MNN模型
生成式模型
相关编译选项
MNN_BUILD_DIFFUSION
是否编译扩散模型推理示例MNN_BUILD_LLM
是否编译大语言模型推理引擎MNN_SUPPORT_TRANSFORMER_FUSE
是否支持transformer
相关的融合算子,主要加速transformer模型
编译命令
编译扩散模型推理示例
mkdir build && cd build cmake .. -DMNN_BUILD_OPENCV=ON -DMNN_IMGCODECS=ON -DMNN_BUILD_DIFFUSION=ON -DMNN_SUPPORT_TRANSFORMER_FUSE=ON make -j4
编译大语言模型推理引擎
mkdir build && cd build cmake .. -DMNN_BUILD_LLM=ON -DMNN_SUPPORT_TRANSFORMER_FUSE=ON make -j4
编译产物
libllm.so
大语言模型推理库llm_demo
大语言模型推理示例程序diffusion_demo
扩散模型示例程序
测试工具
相关编译选项
MNN_BUILD_TOOL
是否编译测试工具
编译命令
mkdir build && cd build cmake .. -DMNN_BUILD_TOOL=ON make -j4
编译产物
GetMNNInfo
获取MNN模型信息ModuleBasic.out
使用V3 API对模型执行基础推理测试SequenceModuleTest.out
测试Sequence模型推理MNNV2Basic.out
使用V2 API对模型执行基础推理测试mobilenetTest.out
测试mobilenet模型推理backendTest.out
测试模型在指定后端上执行的结果是否与CPU一致modelCompare.out
原始模型与量化模型推理结果比较testModel.out
给定输入输出测试模型推理正确性testModel_expr.out
给定输入输出测试模型推理正确性testModelWithDescribe.out
给定输入输出和shape描述测试模型推理正确性getPerformance.out
获取当前设备的CPU性能checkInvalidValue.out
检测输出目录里的数据timeProfile.out
测试模型在指定后端上执行的时间,并获取每层的执行时间占比testTrain.out
测试训练功能checkDir.out
测试两个文件夹是否一致checkFile.out
测试两个文件是否一致winogradExample.out
winograd示例fuseTest
测试 GPU 自定义算子的功能,目前仅支持 Vulkan Buffer 模式GpuInterTest.out
测试 GPU 内存输入的功能,目前仅支持 OpenCL Buffer 模式与 OpenGL texture 模式,编译时许打开 MNN_OPENCL 与 MNN_OPENGLLoRA
将LorA权重添加到模型权重中
Benchmark工具
相关编译选项
MNN_BUILD_BENCHMARK
是否编译Benchmark工具
编译命令
mkdir build && cd build cmake .. -DMNN_BUILD_BENCHMARK=ON make -j4
编译产物
benchmark.out
benchmark工具benchmarkExprModels.out
表达式构图模型测试benchmark工具
模型量化工具
相关编译选项
MNN_BUILD_QUANTOOLS
是否编译模型量化工具
编译命令
mkdir build && cd build cmake .. -DMNN_BUILD_QUANTOOLS=ON make -j4
编译产物
quantized.out
模型量化工具
评估工具
相关编译选项
MNN_EVALUATION
是否编译图片分类结果评估工具
编译命令
mkdir build && cd build cmake .. -DMNN_EVALUATION=ON make -j4
编译产物
classficationTopkEval.out
图片分类结果评估工具
MNN OpenCV库
相关编译选项
MNN_BUILD_OPENCV
是否编译OpenCV函数接口MNN_IMGCODECS
是否编译OpenCV图像解码器MNN_OPENCV_TEST
是否编译OpenCV单元测试MNN_OPENCV_BENCH
是否编译OpenCV性能测试
编译命令
mkdir build && cd build cmake .. -DMNN_BUILD_OPENCV=ON -DMNN_IMGCODECS=ON -DMNN_OPENCV_TEST=ON -DMNN_OPENCV_BENCH=ON make -j4
编译产物
libMNNOpenCV.so
MNN OpenCV函数库opencv_test
MNN OpenCV单元测试opencv_bench
MNN OpenCV性能测试
示例工程
相关编译选项
MNN_BUILD_DEMO
是否编译MNN Demo
编译命令
mkdir build && cd build cmake .. -DMNN_BUILD_DEMO=ON make -j4
编译产物
pictureRecognition.out
V2接口(Session)图片识别示例pictureRecognition_module.out
V3接口(Module)图片识别示例pictureRecognition_batch.out
自定义batchsize图片识别示例multithread_imgrecog.out
多线程图片识别示例pictureRotate.out
图片旋转示例multiPose.out
姿态检测示例segment.out
图像实例分割示例expressDemo.out
表达式接口推理示例expressMakeModel.out
使用表达式构建模型示例transformerDemo.out
Transformer模型示例rasterDemo.out
Raster示例nluDemo.out
nlu模型示例mergeInplaceForCPU
将模型中可以Inplace计算的算子改成Inplace计算,可以减少内存占用,但限定CPU后端运行
单元测试
相关编译选项
MNN_BUILD_TEST
是否编译MNN单元测试
编译命令
mkdir build && cd build cmake .. -DMNN_BUILD_TEST=ON make -j4
编译产物
run_test.out
单元测试程序