当前位置: 首页 > article >正文

阿里巴巴开源移动端多模态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%。
多功能性
  • 支持 TensorflowCaffeONNXTorchscripts,并支持常见的神经网络,如 CNNRNNGANTransformer
  • 支持具有多输入或多输出的 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:不支持
架构 / 精度常规FP16BF16Int8
CPUNativeBCBB
x86/x64-SSE4.1ABBA
x86/x64-AVX2SBBA
x86/x64-AVX512SBBS
ARMv7aSS (ARMv8.2)SS
ARMv8SS (ARMv8.2)S(ARMv8.6)S
GPUOpenCLASCS
VulkanAACA
MetalASCS
CUDAASCA
NPUCoreMLACCC
HIAIACCC
NNAPIBBCB

News 🔥

[2025/05/12] android app 支持 qwen2.5 omni 3b and 7b

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码:https://github.com/alibaba/MNN/

http://www.lryc.cn/news/2379000.html

相关文章:

  • 【漫话机器学习系列】256.用 k-NN 填补缺失值
  • React组件(一):生命周期
  • 金格iWebOffice控件在新版谷歌Chrome中不能加载了怎么办?
  • 实验6分类汇总
  • 如何通过交流沟通实现闭环思考模式不断实现自身强效赋能-250517
  • Python 3.11详细安装步骤(包含安装包)Python 3.11详细图文安装教程
  • [深度解析] 服务器内存(RAM)演进之路(2025):DDR5 vs HBM vs CXL 内存技术与选型指南
  • C语言输入函数对比解析
  • 【Java-EE进阶】SpringBoot针对某个IP限流问题
  • 一个指令,让任意 AI 快速生成思维导图
  • 随言随语(十二):盖章
  • FPGA图像处理(六)------ 图像腐蚀and图像膨胀
  • Spring三级缓存的作用与原理详解
  • LVDS系列12:Xilinx Ultrascale系可编程输入延迟(二)
  • ARM (Attention Refinement Module)
  • 国产免费工作流引擎star 6.5k,Warm-Flow升级1.7.2(新增案例和修复缺陷)
  • 前端二进制数据指南:从 ArrayBuffer 到高级流处理
  • 如何选择高性价比的 1T 服务器租用服务​
  • 一个可拖拉实现列表排序的WPF开源控件
  • AI-02a5a6.神经网络-与学习相关的技巧-批量归一化
  • SVGPlay:一次 CodeBuddy 主动构建的动画工具之旅
  • 自己手写tomcat项目
  • 2025年渗透测试面试题总结-安恒[实习]安全工程师(题目+回答)
  • 生成对抗网络(Generative Adversarial Networks ,GAN)
  • 六、磁盘划分与磁盘配额
  • 在WSL中的Ubuntu发行版上安装Anaconda、CUDA、CUDNN和TensorRT
  • 小刚说C语言刷题—1230蝴蝶结
  • 代码随想录算法训练营第60期第三十九天打卡
  • 计算机网络体系结构深度解析:从理论到实践的全面梳理
  • Qwen2.5-VL模型sft微调和使用vllm部署