MNN 3.1.0 发布:移动端大模型应用与性能全面升级
项目简介
MNN 是阿里巴巴开源的一款轻量级、高性能的深度学习推理引擎,特别针对移动端和边缘计算设备进行了优化。作为一款跨平台的深度学习框架,MNN 支持 Android、iOS、Linux、macOS 和 Windows 等多个平台,能够高效运行各种深度学习模型,包括近年来兴起的大语言模型(LLM)和扩散模型(Diffusion Model)。
3.1.0 版本核心更新
移动端大模型应用落地
本次更新的最大亮点是正式推出了面向移动设备的大模型应用:
-
Android 平台:新增了完整的 LLM/Diffusion 大模型应用,开发者可以直接集成到 Android 项目中,实现本地化的大模型推理能力。
-
iOS 平台:同步推出了 iOS 版本的大模型应用,为苹果生态开发者提供了便捷的大模型集成方案。
这些应用的发布标志着 MNN 在大模型移动端部署领域迈出了重要一步,使开发者能够在资源受限的移动设备上高效运行复杂的大模型。
多模态大模型支持扩展
3.1.0 版本显著增强了对多模态大模型的支持:
- 新增支持 Qwen2-VL、Qwen2-Audio 和 Qwen2.5-VL 等多模态模型的导出和运行
- 支持 DeepSeek-R1-1.5B-Qwen 和 DeepSeek-R1-7B-Qwen 等模型
这些更新使 MNN 能够处理更丰富的输入模态,包括视觉、语音等多模态数据,为开发更智能的跨模态应用提供了基础。
性能优化与技术创新
LLM 推理性能提升
-
CPU 多线程优化:进一步优化了 LLM 在 CPU 上的多线程性能,提升了整体推理速度。
-
Prefill 阶段优化:针对 CPU 上的 prefill 阶段进行了专门优化,使 1024 token 输入和 512 token 输入的 prefill 性能达到相近水平。
-
GPU 后端增强:
- 优化了 OpenCL AutoTuning 耗时,避免首次推理耗时过长
- Metal/OpenCL 后端支持 fp16 的 scale/bias 和对称量化优化
- 新增 LLM 加速选项,在 precision=low 时自动启用 fp16 优化
根据实测数据,在小米14设备上运行千问2.5-7B-Int4-128模型(输入512 token),3.1.0版本相比3.0.0版本有显著性能提升。
内存与计算优化
-
内存管理改进:
- LLM-CPU 支持 mmap 文件缓存,二次加载模型时避免内存重排
- OpenCL 降低非对齐情况下申请的内存大小
- 重构 ConvTranspose3D 为 ConvTranspose2D,大幅减少内存占用
-
计算效率提升:
- 将 Convolution3D 转换为 Convolution2D,降低耗时和内存占用
- 优化 Conv3D 的 im2col 实现,减少 region 数量
- Vulkan Image 分支性能优化,在8Gen系列芯片上与OpenCL持平,中低端设备提升30%
开发者工具与功能增强
模型开发与调试
-
LLM 单步执行支持:新增单步执行功能,便于开发者调试和优化模型推理过程。
-
采样算法扩展:丰富了采样算法的支持,提供更多推理策略选择。
-
概率输出功能:LLM 导出模型时支持输出历史 Token 的概率值,便于模型分析和调优。
跨平台支持改进
-
Pymnn 无 numpy 依赖:现在可以在没有 numpy 的环境下安装 Pymnn,降低了部署门槛。
-
数字人 KV Cache 回溯:新增对 KV Cache 回溯的支持,提升数字人模型推理效率。
-
OpenCL 大模型分块计算:支持大模型分块计算,避免渲染卡顿问题。
问题修复与稳定性提升
本次更新修复了多个关键问题,包括:
-
精度问题:修复了 Arm v8 架构下 Debug 和 Release 模式 layernorm 计算的微小误差。
-
功能异常:
- 修复 LLM Lora 分离加载模式的误差问题
- 修正 NNAPI 中 Binary 不支持 relu fuse 的问题
- 解决 Onnx Cast 算子输出 fp16 时报错问题
-
内存问题:
- 修复 GPU 模型串联运行时内存访问越界
- 解决 ConvTranspose CPU 内存占用过大问题
-
工具问题:修复离线量化工具和 MNN CV 处理中的错误。
技术架构演进
-
内存共享方案升级:OpenCL 内存共享方案切换为 HardwareBuffer,提升内存管理效率。
-
计算图优化:持续优化计算图转换和算子融合策略,提升整体推理效率。
-
量化支持增强:完善8bit量化支持,修复相关导出问题。
总结
MNN 3.1.0 版本在移动端大模型应用落地、多模态支持、性能优化和开发者体验等方面都取得了显著进展。特别是移动端大模型应用的发布,为开发者提供了开箱即用的解决方案,大大降低了在移动设备上部署大模型的技术门槛。
在性能方面,通过对 CPU、GPU 各个后端的持续优化,MNN 在各种硬件平台上都能提供高效的推理能力。同时,新增的调试和分析功能也为开发者优化模型性能提供了更多工具支持。
随着人工智能应用向边缘设备迁移的趋势加速,MNN 作为一款轻量级、高性能的推理引擎,将持续为移动端和边缘计算场景提供强大的技术支持。3.1.0 版本的发布,标志着 MNN 在大模型时代的技术布局又向前迈进了一步。
kernelopenEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。C065
MiniMax-M2.1从多语言软件开发自动化到复杂多步骤办公流程执行,MiniMax-M2.1 助力开发者构建下一代自主应用——全程保持完全透明、可控且易于获取。Python00
kylin-wayland-compositorkylin-wayland-compositor或kylin-wlcom(以下简称kywc)是一个基于wlroots编写的wayland合成器。 目前积极开发中,并作为默认显示服务器随openKylin系统发布。 该项目使用开源协议GPL-1.0-or-later,项目中来源于其他开源项目的文件或代码片段遵守原开源协议要求。C01
PaddleOCR-VLPaddleOCR-VL 是一款顶尖且资源高效的文档解析专用模型。其核心组件为 PaddleOCR-VL-0.9B,这是一款精简却功能强大的视觉语言模型(VLM)。该模型融合了 NaViT 风格的动态分辨率视觉编码器与 ERNIE-4.5-0.3B 语言模型,可实现精准的元素识别。Python00
GLM-4.7GLM-4.7上线并开源。新版本面向Coding场景强化了编码能力、长程任务规划与工具协同,并在多项主流公开基准测试中取得开源模型中的领先表现。 目前,GLM-4.7已通过BigModel.cn提供API,并在z.ai全栈开发模式中上线Skills模块,支持多模态任务的统一规划与协作。Jinja00
agent-studioopenJiuwen agent-studio提供零码、低码可视化开发和工作流编排,模型、知识库、插件等各资源管理能力TSX0130
Spark-Formalizer-X1-7BSpark-Formalizer 是由科大讯飞团队开发的专用大型语言模型,专注于数学自动形式化任务。该模型擅长将自然语言数学问题转化为精确的 Lean4 形式化语句,在形式化语句生成方面达到了业界领先水平。Python00