资讯动态

在手机上用 MNN Chat 跑本地多模态大模型:从安装到调优的实战指南

发布时间:2026/10/16 3:50:18 来源:尧图企业网站定制
在手机上用 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/MNNMNN ChatMnnLlmChat是 MNN 官方维护的 Android 应用把文本、图像、音频、文生图四类模型装进同一个 App全部推理由 MNN-LLM 引擎在设备端完成。当前版本 0.8.3versionCode 830模型市场内置 159 个模型条目聊天记录不离开手机。适合想在真机上 10 分钟内跑通本地 LLM、并能一路看到引擎层实现的朋友。它解决了什么端侧跑 LLM 卡在三个真实痛点上项目对每个都给出了落点明确的解法内存装不下7B 级权重动辄几个 GB普通手机连装载都困难。解法是低比特量化权重在矩阵乘时即时反量化再配合 mmap 混合存储让操作系统把权重文件当内存按需映射不必一次性全读进 RAMtransformers/llm/engine/src/llmconfig.hpp中use_mmap、mmap_size键位控制行为。官方口径Android CPU 上 prefill 是 llama.cpp 的 8.6 倍、fastllm 的 20.5 倍。解码速度慢通用推理框架在移动端吃不到硬件红利。解法是针对 ARM 手写的计算路径包括 Armv8.2 fp16 与 Transformer 算子融合构建参数-DMNN_ARM82true、-DMNN_SUPPORT_TRANSFORMER_FUSEtrue。官方口径解码速度是 llama.cpp 的 2.3 倍、fastllm 的 8.9 倍。数据不能出设备所有推理在设备本地完成模型权重与聊天记录均不上传外部服务器隐私由架构层面保证而不是靠策略声明。先跑起来APK 直装与源码构建两条路最省事的直装路径apps/Android/MnnLlmChat/README.md的 Releases 章节列着每个版本的 APK 入口当前版本文件名为mnn_chat_0_8_3.apk下载后直接安装。源码构建路径需要 Android Studio 与 NDK版本必须与app/build.gradle的ndkVersion一致当前 27.2.12479018。完整命令export ANDROID_NDK${YOUR_NDK_ROOT} git clone https://gitcode.com/GitHub_Trending/mn/MNN cd MNN/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 cd ../../../apps/Android/MnnLlmChat ./installDebug.shmake install会把 MNN、MNN_LLM、MNN_Audio、MNN_Diffusion 等运行库装进 build_64 供应用工程引用installDebug.sh只做两件事./gradlew assembleStandardDebug打 standard 渠道 Debug 包再adb install app/build/outputs/apk/standard/debug/app-standard-debug.apk装到设备。跑通后的首次使用打开应用进模型市场按标签或供应商筛选目标模型点下载等进度跑完按钮变「对话」即开聊历史会话收在侧边栏随时回看。环境红线与踩坑官方声明当前版本只在OnePlus 13和小米 14 Ultra上完成测试低配设备可能推理缓慢、不稳定甚至跑不起来其他设备稳定性不作保证。minSdk 26Android 8.0、targetSdk 35、compileSdk 35app/build.gradle。NDK 版本锁定27.2.12479018与 build.gradle 不一致会直接编不过。abiFilters只打包arm64-v8a32 位与老架构机型不在支持范围。已启用 NDK r27 的 16KB 页支持CMake 参数ANDROID_SUPPORT_FLEXIBLE_PAGE_SIZESON链接器参数-Wl,-z,max-page-size16384适配 16KB 页新内核设备。版本演进的拐点回看一句话带过0.1 首个公开版就带模型搜索下载、对话与 stable-diffusion-v1-5 文生图0.2.2 引入 mmap 加速模型加载0.6.8 加入 ASRTTS 实时语音通话与远端模型热更新0.8.2.2 刷新 CPU LinearAttention 与 Arm82 fp16 优化路径。最常改的 5 个参数行为旋钮集中在模型目录的llm_config.json应用设置页暴露了其中一部分sampler type、最大生成 Token 等参数作用取值或默认值temperature生成随机度越低越确定0.8采样器默认topP只在累积概率 90% 的前缀里挑词0.9max_new_tokens限制单次生成 token 数512thread_numCPU 计算线程数4precision计算精度档位影响内存与速度取舍low完整的键位后端、内存、mmap、提示词模板、投机解码等分组都定义在 transformers/llm/engine/src/llmconfig.hpp。怎么判定调到位了应用内置 benchmark 页会给出 prefill 与 decode 的总耗时0.4.3 版本起支持显示模型下载完成后按钮文案应变为「对话」、状态文本显示文件大小如 626.72 MB、且不含「(有更新可用)」字样日志侧可执行adb -s YOUR_DEVICE_ID logcat -d | grep onDownloadProgress确认下载链路事件在正常回调。完整回归流程见 docs/mobile_use.md。⚡ 它凭什么快量化、mmap 与 fp16 路径四条优化路径各一句话点破原理和效果低比特量化权重低比特存储、矩阵乘时即时反量化内存与带宽占用同时下降。mmap 混合存储权重文件由操作系统按需映射不必一次性读进 RAM模型加载速度明显提升。Armv8.2 fp16 路径支持 ARMv8.2 的芯片走半精度计算0.8.2.2 起随内置运行库刷新。CPU LinearAttention 专用路径线性注意力算子不再退回通用实现长序列场景省掉回退开销。官方口径的完整数字Android CPU 上 prefill 是 llama.cpp 的 8.6 倍、fastllm 的 20.5 倍解码分别是 2.3 倍与 8.9 倍对比对象为 qwen-7bGPU 侧 prefill 最高 25.3 倍于 llama.cpp、解码 7.1 倍对比 MLC-LLM 则是 2.8 倍与 1.7 倍——不过 Qwen2-7B 配短提示词时由于 MLC-LLM 采用对称量化MNN-LLM 略有落后。方法学细节见论文MNN-LLM: A Generic Inference Engine for Fast Large Language Model Deployment on Mobile Devices。配置集中在一处LlmConfig类既能加载llm_config.json也兼容旧的.mnn模型文件用法应用侧的加载链路是LlmSession.kt的load()先合并拆分的大权重文件再用ModelConfig.loadMergedConfig把默认配置与模型自定义配置合到一起。所以改行为优先改模型目录里的llm_config.json不用动代码。接进你的工作流PC 调用手机上的模型应用在手机侧暴露 HTTP API默认 8080 端口。三种接入方式方式命令适用场景局域网直连python3 test_api.py --host 192.168.1.23 --port 8080 --test all手机与电脑同一局域网不想建隧道adb forwardadb forward tcp:8080 tcp:8080后执行python3 test_api.py --adb-forward --host 127.0.0.1 --port 8080 --test all想打本机回环地址 127.0.0.1Claude 客户端对接设ANTHROPIC_BASE_URLhttp://手机局域网IP:8080与ANTHROPIC_API_KEY已有 Anthropic 协议客户端复用/v1/messages端点规则只有一条不走 adb forward 时禁用127.0.0.1必须填手机局域网 IP。回归验证用应用根目录的test_api.py--test all一次覆盖 models、chat、stream 三类用例规则文档在 api_access_from_pc.md。继续深挖的三个位置transformers/llm/engine引擎本体回答「凭什么快」。src/llm.cpp是主推理流程src/sampler.cpp与src/sampler.hpp实现采样器与多阶段混合管线。apps/Android/MnnLlmChat完整应用工程回答「怎么串起来」。Kotlin 层LlmSession、DiffusionSession、SanaSession与app/src/main/cpp/下的llm_session.cpp、diffusion_session.cpp、sana_session.cpp一一对应文生文、图生文、音频、文生图因此共存于同一进程。MNN 引擎架构看整张执行链路时回答「推理请求从哪走到哪」。【免费下载链接】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),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑