阿里巴巴开源移动端多模态LLM工具——MNN
MNN 是一个高效且轻量级的深度学习框架。它支持深度学习模型的推理和训练,并在设备端的推理和训练方面具有行业领先的性能。目前,MNN 已集成到阿里巴巴集团的 30 多个应用中,如淘宝、天猫、优酷、钉钉、闲鱼等,覆盖了直播、短视频拍摄、搜索推荐、以图搜货、互动营销、权益发放、安全风控等 70 多个使用场景。此外,MNN 还被用于嵌入式设备,如物联网。
MNN-LLM 是一个基于 MNN 引擎开发的大型语言模型运行时解决方案。该项目的使命是将 LLM 模型部署在每个人的本地平台上(手机/PC/物联网)。它支持流行的大型语言模型,如千问、百川、智谱、LLAMA 等。
MNN-Diffusion 是一个基于 MNN 引擎开发的稳定扩散模型运行时解决方案。该项目的使命是在每个人的平台上本地部署稳定扩散模型。
在阿里巴巴内部,MNN作为Walle系统中的计算容器基础模块,Walle系统是首个端到端、通用且大规模的设备-云协同机器学习生产系统,该系统已在顶级系统会议OSDI’22上发表。MNN的关键设计原则和广泛的基准测试结果(与TensorFlow、TensorFlow Lite、PyTorch、PyTorch Mobile、TVM的对比)可以在OSDI论文中找到。基准测试的脚本和说明放在“/benchmark”路径下。
主要特点
轻量级
- 针对设备进行优化,无依赖项,可轻松部署到移动设备和各种嵌入式设备。
- iOS 平台:armv7+arm64 平台的静态库大小约为 12MB,链接的可执行文件大小增加约为 2M。
- Android 平台:核心 so 文件大小约为 800KB(armv7a - c++_shared)。
- 使用 MNN_BUILD_MINI 可以将包大小减少约 25%,但限制了固定模型输入大小。
- 支持 FP16 / Int8 量化,可以将模型大小减少 50%-70%。
多功能性
- 支持
Tensorflow
、Caffe
、ONNX
、Torchscripts
,并支持常见的神经网络,如CNN
、RNN
、GAN
、Transformer
。 - 支持具有多输入或多输出的 AI 模型,各种维度格式,动态输入,控制流。
- MNN 支持近似全量的 AI 模型操作符。转换器支持 178 个
Tensorflow
操作符,52 个Caffe
操作符,163 个Torchscripts
操作符,158 个ONNX
操作符。 - 支持 iOS 8.0+、Android 4.3+ 以及具有 POSIX 接口的嵌入式设备。
- 支持多设备混合计算。目前支持 CPU 和 GPU。
高性能
- 通过大量优化的汇编代码实现核心计算,以充分利用 ARM / x64 CPU。
- 使用 Metal / OpenCL / Vulkan 支持移动设备上的 GPU 推理。
- 使用 CUDA 和 tensorcore 支持 NVIDIA GPU,以获得更好的性能。
- 卷积和转置卷积算法高效且稳定。Winograd 卷积算法广泛用于更好地处理对称卷积,如 3x3、4x4、5x5、6x6、7x7。
- 支持 FP16 半精度计算的新架构 ARM v8.2 速度提升两倍。使用 sdot 和 VNNI 的 ARM v8.2 速度提升 2.5 倍。
支持的架构/精度MNN如下所示:
- S:支持且运行良好,深度优化,推荐使用
- A:支持且运行良好,可以使用
- B:支持但有bug或未优化,不推荐使用
- C:不支持
架构 / 精度 | 常规 | FP16 | BF16 | Int8 | |
---|---|---|---|---|---|
CPU | Native | B | C | B | B |
x86/x64-SSE4.1 | A | B | B | A | |
x86/x64-AVX2 | S | B | B | A | |
x86/x64-AVX512 | S | B | B | S | |
ARMv7a | S | S (ARMv8.2) | S | S | |
ARMv8 | S | S (ARMv8.2) | S(ARMv8.6) | S | |
GPU | OpenCL | A | S | C | S |
Vulkan | A | A | C | A | |
Metal | A | S | C | S | |
CUDA | A | S | C | A | |
NPU | CoreML | A | C | C | C |
HIAI | A | C | C | C | |
NNAPI | B | B | C | B |
News 🔥
[2025/05/12] android app 支持 qwen2.5 omni 3b and 7b
代码:https://github.com/alibaba/MNN/