
手机本地跑多模态大模型MNN Chat 从安装到源码的完整拆解【免费下载链接】MNNMNN: A blazing-fast, lightweight inference engine battle-tested by Alibaba, powering high-performance on-device LLMs and Edge AI.项目地址: https://gitcode.com/GitHub_Trending/mn/MNN在手机上装好 MNN Chat再从内置市场挑一个模型聊天、看图、听音、画图全部在设备内完成。这款端侧多模态大模型应用由 MNN-LLM 推理引擎驱动权重与对话记录不离开设备断网也能用。本文按先跑起来、再看代码的顺序展开前半部分覆盖安装、使用与模型市场后半部分逐层拆开编译参数、引擎配置、采样策略和 PC 侧 API 的验证方法。30 秒看懂 MNN Chat一句话定位MNN-LLM 引擎 Android 壳应用四模态端侧推理。维度说明项目定位全功能多模态大模型 Android 应用底层引擎MNN-LLM仓库内 transformers/llm/engine运行位置全程设备本地无云端推理支持模态文生文、图生文含视频输入、音转文、文生图扩散模型最低系统Android 8.0minSdk 26targetSdk 35仅 arm64-v8a已验证设备OnePlus 13、小米 14 Ultra⚠️ 旧入口project/android/apps/MnnLlmApp/下的 README.md 已变更为迁移提示页应用更名为 MNN Chat主页迁移到 apps/Android/MnnLlmChat/README.md后续版本与文档一律以新主页为准。从安装到第一次对话两条获取路径下官方 APK或自己从源码编译。方式一官方 APK。README.md 的 Releases 章节按版本列出下载入口文件命名形如mnn_chat_0_8_3.apk。当前版本为 0.8.3versionCode 830。方式二源码构建。完整流程见编译手册一节。装好之后的操作路径很短打开应用进入模型市场浏览或按标签、供应商筛选点击下载等待进度走完支持按系统语言自动选择默认下载源按钮变为对话后即可与模型交互支持图片、音频附件输入侧边栏保存历史会话可随时回看或继续。设备要求要先看清楚。官方 README 明确标注当前版本仅在 OnePlus 13 和小米 14 Ultra 上完成测试。大模型对硬件要求高低配设备可能出现推理缓慢、卡顿甚至无法运行官方不承诺其他机型的稳定性。工程配置也印证了这一取向app/build.gradle 中abiFilters只保留arm64-v8aCMake 参数开启了-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZESONNDK r27 的 16KB 页大小支持minSdk 26、compileSdk 35。遇到问题建议直接提 issue。能力清单能聊天、能看图、能听音、能画图按用户能做什么逐条看每条末尾给出源码落点。文生文。通用对话、代码生成、数学推理。对话主流程由 C 会话层承载JNI 入口与流式输出缓冲都在这里app/src/main/cpp/llm_session.cpp。图生文。视觉理解支持单图、多图smolvlm-video 系列还支持视频输入。视频帧的解码与处理实现在 app/src/main/cpp/video/ 目录视觉开关则由编译参数LLM_SUPPORT_VISIONtrue与模型配置is_visual共同决定。音转文。语音识别与实时语音通话ASR TTS0.6.8 版本引入。音频理解依赖编译参数LLM_SUPPORT_AUDIOtrue、MNN_BUILD_AUDIOtrue合成侧由独立模块 apps/frameworks/mnn_tts 提供。文生图。基于扩散模型另有 Sana 图像编辑模型0.7.7 引入。两个会话文件分别是 diffusion_session.cpp 与 sana_session.cpp对应 Kotlin 层的DiffusionSession、SanaSession类。速度表现官方 README 声明。CPU 基准上MNN-LLM 预填充速度相比 llama.cpp 提升 8.6 倍、相比 fastllm 提升 20.5 倍解码速度分别快 2.3 倍与 8.9 倍。GPU 侧结论更复杂Qwen2-7B 短提示词场景因 MLC-LLM 的对称量化优势略有落后其余对比中预填充最快可比 llama.cpp 快 25.3 倍、解码快 7.1 倍相对 MLC-LLM 提升 2.8 倍与 1.7 倍。以下动图为 Android 上 qwen-7b 的推理速度直观对比隐私。全部推理在设备内完成模型权重与聊天记录不上行任何外部服务器这是架构层面的设计不是可选项。选模型市场配置、双下载源与热更新模型市场的行为由一个 JSON 驱动model_market.json当前version为 22Kotlin 侧的ModelMarketViewModel、ModelMarketAdapter、FilterDialogFragment负责解析与渲染。配置分四块tagTranslations能力标签的中文映射如Vision→图像理解、Audio→音频理解、ImageGen→文生图、Think→深度思考、Chat→对话quickFilterTags顶部快捷筛选共 8 项Think、NPU、Vision、ImageGen、Audio、AudioGen、Code、VideovendorOrder供应商展示顺序20 家Qwen、DeepSeek、Gemma、LFM、Smol、stability.ai、Llama、FastVLM、MiMo、ERNIE、Baichuan、Phi、MobileLLM、TinyLlama、THUDM、InternLM、01.AI、Hunyuan、MiniCPM、Lingshumodels模型条目数组每条含modelName、tags、categories、sources、min_app_version、size_gb、file_size等字段。双下载源。同一模型通常同时给出 HuggingFace 与 ModelScope 两个仓库地址sources字段例如gemma-4-E2B-it-MNN对应taobao-mnn/...HuggingFace与MNN/...ModelScope。除这两个源外0.3.0 起还支持 modelers.cn。首次安装若系统语言为中文默认走 ModelScope0.5.1 修复/明确的行为。热更新。0.6.8 起远程模型内容变化时无需删除旧模型即可增量更新。下载进度回调onDownloadProgress、更新标记onDownloadHasUpdate统一由ModelDownloadManager管理回归验证方法见验证与排障一节。编译手册环境准备、CMake 参数逐个讲、一键安装先备环境再按顺序执行三段命令克隆仓库、编译 MNN 运行库、构建并安装应用。环境。Android StudioNDK 版本须与 app/build.gradle 的ndkVersion一致当前为27.2.12479018另需导出 NDK 根路径环境变量。克隆仓库git clone https://gitcode.com/GitHub_Trending/mn/MNN编译 MNN 运行库。build_64.sh 是 Android 通用构建脚本基于$ANDROID_NDK的 cmake 工具链默认 arm64-v8a、c_staticSTL、最低 API 21、Release 编译最后执行make -j4。README 给出的完整调用如下命令行追加的参数会覆盖脚本默认值例如把默认的MNN_USE_LOGCATfalse打开cd project/android mkdir build_64 cd build_64 ../build_64.sh -DMNN_LOW_MEMORYtrue -DMNN_CPU_WEIGHT_DEQUANT_GEMMtrue -DMNN_BUILD_LLMtrue -DMNN_SUPPORT_TRANSFORMER_FUSEtrue -DMNN_ARM82true -DMNN_USE_LOGCATtrue -DMNN_OPENCLtrue -DLLM_SUPPORT_VISIONtrue -DMNN_BUILD_OPENCVtrue -DMNN_IMGCODECStrue -DLLM_SUPPORT_AUDIOtrue -DMNN_BUILD_AUDIOtrue -DMNN_BUILD_DIFFUSIONON -DMNN_SEP_BUILDOFF -DCMAKE_SHARED_LINKER_FLAGS-Wl,-z,max-page-size16384 -DCMAKE_INSTALL_PREFIX. make install各参数含义参数名照抄作用重写CMake 参数作用MNN_LOW_MEMORYtrue低内存模式重排权重存储布局压低推理时的内存峰值MNN_CPU_WEIGHT_DEQUANT_GEMMtrueCPU 反量化矩阵乘低比特权重在 GEMM 时即时还原不必常驻全精度副本MNN_BUILD_LLMtrue编入 LLM 推理模块对应transformers/llm/engineMNN_SUPPORT_TRANSFORMER_FUSEtrueTransformer 子图融合把反复出现的结构合并减少算子调度开销MNN_ARM82true打开 ARMv8.2 指令集启用 fp16 半精度计算路径MNN_USE_LOGCATtrue日志改道 Android logcat方便真机调试MNN_OPENCLtrue编译 OpenCL GPU 后端LLM_SUPPORT_VISIONtrueLLM 引擎加载视觉编码器图/视频问答由此开启MNN_BUILD_OPENCVtrue编入内置 OpenCV 图像处理MNN_IMGCODECStrue图片编解码支持读入各类格式素材LLM_SUPPORT_AUDIOtrueLLM 引擎支持音频输入模型MNN_BUILD_AUDIOtrue编译音频处理相关能力MNN_BUILD_DIFFUSIONON扩散模型文生图推理MNN_SEP_BUILDOFF不做分离式构建产物以整体库形态链接CMAKE_SHARED_LINKER_FLAGS-Wl,-z,max-page-size16384共享库按 16KB 页对齐适配 16KB page 新内核设备CMAKE_INSTALL_PREFIX.产物装进当前构建目录供应用工程引用构建并安装应用。运行库装好后回到应用目录执行 installDebug.shcd ../../../apps/Android/MnnLlmChat ./installDebug.sh脚本内只有两条命令./gradlew assembleStandardDebug adb install app/build/outputs/apk/standard/debug/app-standard-debug.apk即打包standard渠道的 Debug 包再推送到已连接设备。build.gradle 里值得留意的配置标识applicationId com.alibaba.mnnllm.androidnamespace相同release 变体追加.release后缀包名变为com.alibaba.mnnllm.android.release渠道store维度分standard与googleplay两个 flavor后者versionNameSuffix .gp签名依赖KEYSTORE_FILE、KEYSTORE_PASSWORD、KEY_ALIAS、KEY_PASSWORD环境变量免压缩noCompress列出weight、part1~part10、mnn、bin、jar、mdl、msc、mv、txt、json、md避免 APK 打包阶段压缩大体积模型文件可选开关-PENABLE_FIREBASEtrue且存在google-services.json时才启用 Firebase Crashlytics-PADD_BUILTINtrue时预构建阶段下载内置模型并生成市场配置。引擎内幕配置层、策略层、应用层三层结构自上而下拆开看Kotlin 会话层管生命周期C 配置层管加载什么、怎么跑采样层管下一个 token 怎么选。配置层llmconfig.hpp。LlmConfig既可解析llm_config.json也兼容直接传.mnn路径的旧用法。关键字段分五组模型文件llm_model默认llm.mnn、llm_weight默认llm.mnn.weight、visual_model、audio_model、tokenizer_file默认tokenizer.txt以及 talker、code_predictor、speech_decoder 等语音合成子模型路径生成参数max_all_tokens默认 2048、max_new_tokens默认 512、reuse_kv、prompt_cache、ignore_eos后端参数backend_type默认cpu、thread_num默认 4、precision默认low、power、memory多模态部分可通过mllm子配置单独覆盖内存与模板use_mmap、use_cached_mmap、mmap_size默认 1024、kvcache_mmap——这就是 README 所说 mmap 加速加载的落点提示词模板组如system_prompt_template默认值为 Qwen3 风格的 system\n%s【免费下载链接】MNNMNN: A blazing-fast, lightweight inference engine battle-tested by Alibaba, powering high-performance on-device LLMs and Edge AI.项目地址: https://gitcode.com/GitHub_Trending/mn/MNN创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考