Post

端侧多模态端到端加速:MiniCPM-o / Gemma 3n / Qwen3-Omni

端侧多模态端到端加速:MiniCPM-o / Gemma 3n / Qwen3-Omni

训推加速系列深化之”端侧多模态”专题。2024~2026 多模态模型从”云端专属”下沉到”手机 / 笔记本 / 嵌入式”——<3B 参数 + <5GB 显存 + 实时性 三重约束下的端到端多模态加速栈。

姊妹篇:训推加速技术地图 · 语音 / 音频加速 · MoE→Dense 蒸馏

⚠️ 时效声明(最后更新:2026-05-08):MiniCPM-o 4.0 / Gemma 3n / Qwen3-Omni 手机端都是 2025~2026 的新东西,本文反映 2026 年中快照。


零、本文骨架

小节主题产出
§一端侧多模态的 3 个硬约束参数 / 显存 / 延迟
§二视觉侧加速SigLIP / DINOv3 INT8 / Token Pruning
§三语音侧加速Mimi / XCodec 双流 tokenizer 在端侧
§四LLM 侧加速端侧 3B 以下模型 + INT4 量化
§五多模态 fusion 策略Q-Former / LLaVA / Interleave
§六NPU 调度:ANE / Hexagon / APU硬件端到端
§七框架选型:MLX / MLC-LLM / ExecuTorch / llama.cpp矩阵对比
§八案例:MiniCPM-o 在 iPhone 上的拆解延迟预算
§九2026 端侧多模态 SOTA 配置按设备
§十权威参考-

一、端侧多模态的 3 个硬约束

graph TD
    R[端侧多模态] --> C1[约束 1: 参数量 < 3B<br/>典型 0.5B ~ 2.5B]
    R --> C2[约束 2: 显存 < 5GB<br/>iPhone 15 Pro 8GB / iPad 12GB]
    R --> C3[约束 3: 实时性<br/>视觉 <200ms / 语音 <300ms]

    C1 --> S1[Distill from 大模型 + 原生小模型]
    C2 --> S2[INT4 权重量化 + KV cache INT8]
    C3 --> S3[NPU 调度 + Kernel 优化]

    C1 & C2 & C3 --> X[三重约束下的联合设计空间]

    style R fill:#FDE8A9,stroke:#E7C56D
    style X fill:#D4E8CF,stroke:#94C18A

1.1 参数量约束的现实

设备实际可跑最大 LLM推荐多模态模型参数
iPhone 15/16 Pro3B (INT4)2B
M2 MacBook7B4B
高通骁龙 8 Gen 3 手机3B2B
联发科天玑 94007B4B
Raspberry Pi 51B0.5B

1.2 显存账本

一个 2B 多模态模型的端侧显存:

组成大小
权重 (INT4)~1.2 GB
KV cache (INT8, 4K ctx)~500 MB
Vision encoder (INT8)~300 MB
Audio tokenizer (INT8)~100 MB
Activation / workspace~500 MB
Total~2.5 GB

再加 OS / 其它 app ~2GB,8GB 手机刚好能跑

1.3 实时性约束

用户体感的延迟阈值:

  • 视觉 QA:输入图 + 问 → < 2s 输出
  • 语音对话:语音输入 → < 300ms TTFT + < 50ms ITL
  • 图生文:< 500ms 内见第一个 token

二、视觉侧加速

2.1 视觉 encoder 选型

Encoder参数输出 token 数 (224px)质量端侧友好
CLIP ViT-L/14300M256基线一般
SigLIP300M~400M256
SigLIP 2 (2025)300M~900M256SOTA
DINOv3 (2025)1B可变强(细粒度)⚠️ 大

2026 端侧默认SigLIP 2 base / large INT8,占 ~200~400MB。

2.2 INT8 量化

视觉 encoder 几乎都是 compute-bound(ViT)——INT8 量化在 NPU 上直接 2~4× 吞吐。

# Apple MLX 示例 from mlx_vlm import load, apply_int8_quantization model, processor = load("mlx-community/SigLIP2-large-patch16-224-int8")

2.3 Token Pruning(视觉特有)

SigLIP 输出 256 tokens 给 LLM。但很多 token 是冗余的(图像的背景 / 空白区)。

Token Pruning 思路:

  • Attention rollout 算各 token 对 [CLS] 的贡献
  • 保留 Top-K 重要的(典型 K=64 or 128)
  • LLM 输入序列从 256 → 64,4× 加速

2024~2025 主流方案:

  • ToMe(Token Merging)
  • LLaVA-PruMerge(50~95% 减)
  • FastV(推理时在特定 layer 砍 token)

三、语音侧加速

3.1 端侧 Audio Tokenizer

端侧多模态处理语音有两种路径:

路径代表优缺点
传统 ASR + LLM + TTS 级联Whisper-tiny + LLM + Kokoro简单,但延迟累加
端到端 Audio Token(推荐)Mimi / XCodec + Omni LLM首字延迟低

3.2 Mimi / XCodec 在端侧

Mimi / XCodec 是 ~80~200M 参数的 codec,端侧完全跑得起来

  • 编码器 INT8 → ~50MB
  • 解码器 INT8 → ~50MB
  • 单路音频 encode: <50ms @ M2
  • 单路 decode: <30ms @ M2

3.3 端侧 Full-duplex 的可行性

2025 已有 demo:

  • Moshi on M2 Max:4B 参数版本可以在笔记本上跑 full-duplex,< 400ms TTFT
  • Qwen2.5-Omni 7B INT4 on iPad M4:语音对话接近实时

手机上 full-duplex 还在探索中,典型做法是语义流跑 LLM,声学流外挂


四、LLM 侧加速

4.1 端侧小模型候选

模型参数量化后大小 (INT4)多模态
Qwen3-0.5B0.5B~300 MB需适配
Qwen3-1.8B1.8B~1.1 GB需适配
SmolLM2 1.7B1.7B~1 GB❌ 纯文本
Phi-4-mini (3.8B)3.8B~2.3 GB⚠️ 文本强
Gemma 3n (E2B, E4B)1.5B / 3B~1~2 GB✅ 原生多模态
MiniCPM-o 2.68B~5 GB (INT4)✅ Omni
MiniCPM-o 4.0(推测)2~4B~2 GB✅ 下一代
Qwen3-Omni small(推测)3B~2 GB✅ Omni

4.2 INT4 量化

算法典型掉点适用
AWQ< 0.3 perplexity通用首选
GPTQ< 0.5也很常见
GGUF Q4_K_M< 0.3llama.cpp 生态默认
NF4(QLoRA)稍大训练 + 推理一体
MLX 4-bit接近 AWQApple 系

4.3 Speculative Decoding 在端侧

端侧也能上 SD——用 DFlash(轻量 fused kernel 变体):

  • Target: 1.8B 主模型
  • Draft: 0.5B 更小模型
  • Accept rate ~0.7
  • 实测 M2 上 decode 1.5~2× 加速

五、多模态 fusion 策略

5.1 三种主流 fusion

graph TD
    A[Image + Text + Audio 输入] --> F{Fusion 策略}

    F --> F1[① Q-Former<br/>小 transformer 压缩 vision tokens]
    F --> F2[② LLaVA-style<br/>简单 projection 拼到 LLM]
    F --> F3[③ Interleaved / Unified<br/>多模态 token 混排]

    F1 --> R1[BLIP-2 / InstructBLIP<br/>参数额外<br/>训练复杂]
    F2 --> R2[LLaVA / MiniCPM-V<br/>简单 + 有效<br/>端侧主流]
    F3 --> R3[Chameleon / Qwen-Omni<br/>最灵活<br/>训练最难]

    style F2 fill:#D4E8CF,stroke:#94C18A
    style F3 fill:#FDE8A9,stroke:#E7C56D

5.2 端侧首选:LLaVA-style + projection

Vision encoder (SigLIP-Base, 86M INT8, ~40MB) ↓ Projection MLP (2-layer, ~5M) ↓ (256 tokens → LLM embedding 空间) LLM (Qwen3-1.8B INT4, ~1GB) ↓ Output

为什么端侧首选这个

  • 部署简单:vision / projection / LLM 可独立量化
  • 训练成本低:fine-tune projection 即可
  • 模态之间弱耦合:可以 vision off-loading 或 streaming

5.3 2026 端侧 Omni 模型路线

  • Gemma 3n:Google 的”matryoshka” design,一个模型多个有效子模型,按设备能力激活不同子集
  • MiniCPM-o 4.0:面壁路线,Audio + Vision + Text 统一 tokenizer
  • Qwen3-Omni small:阿里推测路线

六、NPU 调度:硬件端到端加速

6.1 三大移动 NPU 架构

厂商NPU算力 (INT8)用于
AppleANE (Neural Engine)~38 TOPS (A18 Pro)iPhone / iPad / Mac
QualcommHexagon NPU~45 TOPS (8 Elite)安卓旗舰
MediaTekAPU~60 TOPS (天玑 9400)安卓中高端
IntelNPU (Core Ultra)~40 TOPSWindows AI PC
AMDXDNA~50 TOPSRyzen AI 笔记本

6.2 NPU 调度的坑

NPU 很强但有前提

  • 只支持固定 shape + INT8 kernels(动态 shape / FP16 要降级 CPU / GPU)
  • Transformer 算子支持有限,GQA / RoPE 等新算子可能不原生
  • 模型必须 compile 成 NPU-friendly 格式(Core ML / QNN / AFM)

6.3 端到端优化

graph LR
    A[Python Model<br/>PyTorch / HF] --> B[转格式]
    B --> C1[Core ML .mlpackage<br/>iOS]
    B --> C2[QNN<br/>Qualcomm]
    B --> C3[APU Kit<br/>MediaTek]
    B --> C4[ONNX<br/>通用]

    C1 & C2 & C3 --> D[NPU 执行]
    C4 --> E[NNAPI / DirectML / OpenVINO]

    style D fill:#D4E8CF,stroke:#94C18A

工程链路

  • PyTorch → coremltools.mlpackage → ANE
  • PyTorch → QNN SDK → .bin → Hexagon

七、框架选型:MLX / MLC-LLM / ExecuTorch / llama.cpp

7.1 对比矩阵

框架出品主打多模态支持NPU 加速
llama.cppggerganovCPU-first,GGUF⚠️ Vision 需 llava.cpp部分
MLXAppleApple 硬件原生✅ mlx-vlm✅ ANE
MLC-LLMCMU / TVM跨平台编译
ExecuTorchPyTorch官方端侧运行时
ONNX RuntimeMicrosoft通用
TensorRT-LLMNVIDIAJetson 端⚠️

7.2 按平台选择

graph TD
    Q1{目标平台} --> IOS[iPhone / iPad / Mac]
    Q1 --> ANDROID[Android 手机]
    Q1 --> WIN[Windows AI PC]
    Q1 --> LINUX[Linux / Edge / Jetson]

    IOS --> IOS1[MLX + mlx-vlm<br/>或 Core ML 原生]
    ANDROID --> ANDROID1[MLC-LLM + QNN<br/>或 ExecuTorch]
    WIN --> WIN1[ONNX Runtime + DirectML<br/>或 MLC-LLM]
    LINUX --> LINUX1[llama.cpp<br/>或 TensorRT-LLM Jetson]

    style IOS1 fill:#D4E8CF,stroke:#94C18A
    style ANDROID1 fill:#CFE0F3,stroke:#8AB0DB
    style WIN1 fill:#FDE8A9,stroke:#E7C56D
    style LINUX1 fill:#F6CED0,stroke:#D98F92

7.3 实战样例

iPhone(MLX 路线)

from mlx_vlm import load, generate model, processor = load("mlx-community/MiniCPM-V-2.6-mlx-int4") response = generate(model, processor, image="photo.jpg", prompt="描述这张图", max_tokens=100, )

Android(MLC-LLM 路线)

# 1. 模型编译 python3 -m mlc_llm compile Qwen3-1.8B-Instruct \ --quantization q4f16_1 \ --device qualcomm \ --output qwen3.bin # 2. Android app 加载 + 推理(Kotlin / Swift)

八、案例:MiniCPM-o 在 iPhone 上的拆解

8.1 模型概览

MiniCPM-o 2.6(8B 参数,INT4)已在 iPhone 15 Pro / iPad M4 跑通:

  • 视觉 encoder: SigLIP-SO400M
  • Audio encoder: Whisper-like
  • LLM: Qwen2-7B base
  • Total INT4: ~5 GB

8.2 端侧延迟 budget(实测量级)

gantt
    title MiniCPM-o 2.6 一轮图片问答延迟(iPhone 15 Pro, 示意)
    dateFormat X
    axisFormat %Lms

    section 处理流
    图片预处理 resize       :done, p1, 0, 50
    Vision encode ANE       :active, p2, 50, 150
    Vision-to-LLM project   :done, p3, 200, 20
    LLM prefill (prompt 100 token)   :crit, p4, 220, 400
    LLM decode 第 1 token   :p5, 620, 60

    section 总体
    用户感受 TTFT           :milestone, m1, 680, 0

总 TTFT ~680ms——接近实时。

8.3 关键优化点

  • Vision encoder 跑 ANE(不是 GPU):快 ~2×
  • LLM 跑 Metal GPU:ANE 不支持某些 attention 变体
  • Audio tokenizer INT8 on ANE
  • KV cache INT8 + Paged

九、2026 端侧多模态 SOTA 配置

9.1 iPhone 15/16 Pro / iPad M4

模型: MiniCPM-o 4.0 / Qwen3-Omni-small (~3B 激活) 量化: INT4 权重 + INT8 KV cache + INT8 Vision 框架: MLX + mlx-vlm NPU: ANE 处理 vision encoder + 部分 LLM 期望: 图片问答 TTFT < 800ms;语音对话 TTFT < 500ms

9.2 Android 旗舰(8 Elite / 天玑 9400)

模型: Gemma 3n (E4B) 或 Qwen3-1.8B + vision adapter 量化: INT4 AWQ / GGUF Q4_K_M 框架: MLC-LLM + QNN(骁龙)或 MTK APU Kit NPU: Hexagon / APU 期望: 图片 TTFT < 1s;简单对话接近实时

9.3 Windows AI PC

模型: Phi-4-mini / Qwen3-3B 量化: INT4 + ONNX / DirectML 框架: ONNX Runtime + DirectML NPU: Intel / AMD NPU 期望: 接近云端体验

9.4 嵌入式(树莓派 / Jetson Nano)

模型: Qwen3-0.5B + SigLIP-Tiny 量化: INT4 GGUF 框架: llama.cpp + llava.cpp NPU: 无 / Jetson GPU 期望: 可用 but 延迟 2~5s

十、权威参考

论文 / 技术报告

框架

模型仓库

系列文


一句话总结:端侧多模态 2026 的 SOTA 配方 = 小模型(< 3B 激活)+ INT4 量化 + NPU 调度 + Vision Token Pruning。iPhone 15 Pro / M4 iPad 已经能跑接近实时的图片问答 / 语音对话;真正的普及要靠 Gemma 3n / MiniCPM-o 4.0 / Qwen3-Omni-small 这批 2B~4B 原生多模态小模型的迭代。

This post is licensed under CC BY 4.0 by the author.