Files
2026-07-13 13:33:03 +08:00

6.8 KiB
Raw Permalink Blame History

MNNLLM iOS Application

View English Documentation

介绍

本项目是一个基于MNN引擎,支持本地大模型多模态对话的iOS应用。

纯本地运行,隐私性强。当模型下载到本地之后,所有的对话都将在本地进行,不会有任何网络上传处理。

功能:

  1. 本地模型
    • 本地已下载模式展示
    • 支持自定义置顶
  2. 模型市场
    • 获取 MNN 支持的模型列表
    • 模型管理,支持下载和删除模型
      • 支持切换 Hugging Face、 ModelScope 和 Modeler 下载源
    • 模型搜索,支持关键词搜索、标签搜索
  3. 基准测试
    • 支持自动化基准测试,输出Prefill speed、 Decode Speed 和 Memory Usage等信息
    • 支持文本、图片和音频的批量测试
  4. 多模态聊天对话:支持完整的Markdown格式输出
    • 文本到文本
    • 语音到文本(支持 Omni 模型的语音输出)
    • 图片到文本,图片可以拍摄输入或从图库中选择
    • 视频到文本,支持视频输入处理
    • Sana Diffusion:支持动漫风格迁移(比如吉卜力风格)
  5. 模型配置
    • 支持配置 mmap
    • 支持配置 sampling strategy
    • 支持配置 diffusion 设置
    • 支持配置后端类型(CPU/Metal
    • 支持配置精度(低/普通/高)
    • 支持配置线程数
    • 支持配置多模态 Prompt API
    • 支持配置 Omni 模型的音频输出
  6. 对话历史
    • 支持模型对话历史列表,还原历史对话场景

视频介绍

image

点击这里下载原分辨率介绍视频

应用预览图

Text To Text Image To Text Audio To Text Model Fliter
Text To Text Image To Text Audio To Text Audio To Text
Local Model Model Market Benckmark History
Model List History History History

此外,本应用支持 DeepSeek 带think模式端侧使用:

deepThink

如何构建并使用

  1. 下载仓库代码:

    git clone https://github.com/alibaba/MNN.git
    
  2. 编译 MNN.framework:

    sh package_scripts/ios/buildiOS.sh "
    -DMNN_ARM82=ON
    -DMNN_LOW_MEMORY=ON
    -DMNN_SUPPORT_TRANSFORMER_FUSE=ON
    -DMNN_BUILD_LLM=ON
    -DMNN_CPU_WEIGHT_DEQUANT_GEMM=ON
    -DMNN_METAL=ON
    -DMNN_BUILD_DIFFUSION=ON
    -DMNN_OPENCL=OFF
    -DMNN_SEP_BUILD=OFF
    -DLLM_SUPPORT_AUDIO=ON
    -DMNN_BUILD_AUDIO=ON
    -DLLM_SUPPORT_VISION=ON
    -DMNN_BUILD_OPENCV=ON
    -DMNN_IMGCODECS=ON
    -DMNN_BUILD_LLM_OMNI=ON
    "
    
  3. 拷贝 framework 到 iOS 项目中

    mv MNN-iOS-CPU-GPU/Static/MNN.framework apps/iOS/MNNLLMChat
    

    确保 Link Binary With Libraried 中包含 MNN.framework,和其他三个 Framework。

    deepThink

    如果没有包含,可以手动添加 MNN.framework:

    deepThink deepThink
  4. 修改 iOS 签名并编译项目

    cd apps/iOS/MNNLLMChat
    open MNNLLMiOS.xcodeproj
    

    在 Xcode 项目属性中 Signing & Capabilities > Team 输入自己的账号和Bundle Identifier

    signing

    等待 Swift Package 下载完成之后,进行编译使用。

注意

iPhone 因为内存有限,建议使用7B以及以下的模型,避免内存不足导致的崩溃。

本地调试

本地调试模型非常简单,只需要将模型文件拖动到LocalModel文件夹下,然后运行项目即可:

  1. 首先在 huggingface 或者 modelscope 下载 MNN 相关的模型

    image
  2. 将下载之后的模型文件夹拖动到项目中 LocalModel 文件夹下

  3. 如果是根目录模型,可以进行配置:

进入ModelListViewModel.swift的配置,比如是否支持思考:

// MARK: Config the Local Model here
let modelName = "Qwen3-0.6B-MNN-Inside" // 模型名称
let localModel = ModelInfo(
    modelName: modelName,
    tags: [
        // MARK: if you know that model support think, uncomment the line
        // NSLocalizedString("tag.deepThinking", comment: "Deep thinking tag for local model"), // 是否支持 think
            NSLocalizedString("tag.localModel", comment: "Local model inside the app")],
    categories: ["Local Models"],
    vendor: "Local",
    sources: ["local": "bundle_root/\(modelName)"],
    isDownloaded: true
)
localModels.append(localModel)
ModelStorageManager.shared.markModelAsDownloaded(modelName)
  1. 运行项目,点击进入聊天对话页面,进行模型对话和调试。

应用会自动检测并加载LocalModel文件夹中的模型,无需额外配置。

Release Notes

Version 0.5

  • 新增 Sana Diffusion 图片风格迁移支持(如吉卜力风格)
  • 新增 Omni 模型语音输出支持
  • 新增视频输入支持,用于多模态对话
  • 新增多模态 Prompt API 配置
  • 新增后端类型配置(CPU/Metal
  • 新增精度配置(低/普通/高)
  • 新增线程数配置
  • 新增文本、图片和音频批量测试支持

Version 0.4

  • 新增项目三个大模块:本地模型,模型市场和基准测试
  • 新增基准测试,可以测试不同模型效果
  • 新增设置页面,可以从历史侧边蓝进入
  • 新增Ali CDN获取模型列表
  • 新增模型市场筛选功能

Version 0.3.1

  • 支持模型参数配置

| image | image | image

Version 0.3

新增:

  • 支持 Modeler 源进行下载
  • 支持 Stable Diffusion 文生图

| image | image |

Version 0.2

新增:

  • 支持配置mmap和手动缓存清理

  • 支持使用 ModelScope 源进行模型下载

| image | image |

引用