On-Device AI 端侧部署
大模型跑在手机/Pad 上 — 框架对比、支持机型、性能数据与实战代码
另有「端侧大模型硬件」精选文章:Jetson / Hailo / RK3588 / 高通 NPU端侧性能速览
旗舰 Android (骁龙 8 Elite)
7B-Q4: ~35-40 tok/s
3B-Q4: ~60-80 tok/s
iPhone 15/16 Pro
7B-Q4: ~25-30 tok/s
3B-Q4: ~50-60 tok/s
iPad Pro M4 (16GB)
13B-Q4: ~30 tok/s
7B-Q4: ~55 tok/s
* 以上为 llama.cpp 参考数据,实际性能因模型、量化方式和系统负载而异
端侧专用模型(“小钢炮”们)
专为手机/Pad 设计的轻量大模型,参数小但能力强,可以直接跑在设备上
语言模型(深思考)
首个原生稀疏架构深思考模型,推理速度比同级快 3 倍
最低内存: 6GB
多模态(图片+视频理解)
端侧最强多模态,支持高刷视频理解,手机实时运行
最低内存: 8GB
多模态(超轻量)
仅 1.3B 参数,超越 Gemma4 等更大模型,极低硬件门槛
最低内存: 2GB
语言模型
MMLU 超过 LLaMA-3-8B,3B 参数做到 8B 效果,移动端首选
最低内存: 4GB
语言模型(极轻量)
老款/低端手机也能跑,适合意图识别、文本摘要等轻任务
最低内存: 2GB
语言模型
推理和数学能力极强,128K 上下文,仅 3GB 显存(Q4)
最低内存: 4GB
语言模型
Google 出品,MediaPipe 原生支持,Android 集成最方便
最低内存: 3GB
语言模型
中文能力优秀,支持 MLC-LLM 直接部署到 Android
最低内存: 2GB
语言模型
专为边缘设备设计,360M/1.7B 两档可选
最低内存: 2GB
选模型建议:日常聊天/意图识别 → 1.5B-3B 就够;复杂推理/代码 → 7B-8B;看图理解 → MiniCPM-V; 中文优先选 Qwen/MiniCPM,英文/数学优先选 Phi-4-mini。
部署框架对比
LLaMA 3、Qwen2.5、Phi-3、Gemma 2、Mistral、DeepSeek
Snapdragon 8 Gen3: ~35 tok/s (7B-Q4)
LLaMA 3、Qwen2、Phi-3、Mistral、RedPajama
Snapdragon 8 Gen3: ~30 tok/s (7B-Q4)
Gemma 2B/7B、Phi-2、Falcon-RW-1B、StableLM-3B
Pixel 8 Pro: ~20 tok/s (Gemma 2B)
LLaMA 3.1、Whisper、Stable Diffusion、YOLO、SegFormer
Snapdragon 8 Gen3: 最优性能
LLaMA 3、Segment Anything、Wav2Letter
iPhone 15 Pro: ~25 tok/s (LLaMA 3 8B-Q4)
LLaMA、Mistral、Phi、Stable Diffusion、Whisper
iPhone 15 Pro: ~30 tok/s (7B-Q4)
支持机型一览
Android 设备
Snapdragon 8 Elite · 12GB RAM
可跑 7B-Q4 模型
Snapdragon 8 Gen 3 · 12GB RAM
可跑 7B-Q4 模型
Snapdragon 8 Elite · 16GB RAM
可跑 7B-Q4 模型,16GB 内存更充裕
Snapdragon 8 Elite · 12/16GB RAM
可跑 7B-Q4 模型
Snapdragon 8 Gen 2 · 8GB RAM
可跑 3B-Q4 或 7B-Q2 模型
Snapdragon 8 Gen 3 · 12GB RAM
可跑 7B-Q4 模型
Tensor G3 · 12GB RAM
MediaPipe 优化,Gemma 2B 流畅
iOS / iPadOS 设备
A18 Pro · 8GB RAM
Core ML 加速,可跑 7B-Q4
A17 Pro · 8GB RAM
Core ML 加速,可跑 7B-Q4
M4 · 16GB RAM
接近 Mac 性能,可跑 13B 模型
M2 · 8GB RAM
可跑 7B-Q4 模型
选型建议:内存 ≥ 8GB 可跑 3B 模型(日常够用),≥ 12GB 可跑 7B-Q4(质量明显好),≥ 16GB 可尝试更大模型。 骁龙 8 Gen 2 以上 / A17 Pro 以上为推荐最低配置。
实战代码
llama.cpp — Android 部署(最通用)
# === llama.cpp Android 部署 ===
# 1. 下载预编译的 Android 二进制文件或自行编译
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
# NDK 交叉编译
mkdir build-android && cd build-android
cmake .. -DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=arm64-v8a -DANDROID_PLATFORM=android-28 \
-DGGML_OPENCL=ON # 启用 GPU 加速
make -j$(nproc)
# 2. 下载量化模型(推荐 Q4_K_M,平衡质量和速度)
# Qwen2.5-3B: https://huggingface.co/Qwen/Qwen2.5-3B-Instruct-GGUF
# LLaMA-3.1-8B: https://huggingface.co/bartowski/Meta-Llama-3.1-8B-Instruct-GGUF
# 3. Push 到手机运行
adb push llama-cli /data/local/tmp/
adb push qwen2.5-3b-instruct-q4_k_m.gguf /data/local/tmp/
adb shell "cd /data/local/tmp && ./llama-cli \
-m qwen2.5-3b-instruct-q4_k_m.gguf \
-p '请解释PID控制器的工作原理' \
-n 256 --temp 0.7"MLC-LLM — 编译器优化部署
# === MLC-LLM 快速开始 ===
# 1. 安装 MLC-LLM
pip install mlc-llm mlc-ai-nightly
# 2. 下载预编译的 Android APK(最快方式)
# https://llm.mlc.ai/docs/deploy/android.html
# 支持 Vulkan GPU 加速
# 3. 或者用 Python 本地推理测试
from mlc_llm import MLCEngine
engine = MLCEngine("HF://mlc-ai/Qwen2.5-3B-Instruct-q4f16_1-MLC")
response = engine.chat.completions.create(
messages=[{"role": "user", "content": "解释逆运动学的基本概念"}],
stream=True
)
for chunk in response:
print(chunk.choices[0].delta.content, end="")
# 4. 编译自定义模型到 Android
mlc_llm compile ./dist/Qwen2.5-3B-Instruct-q4f16_1-MLC \
--device android --output ./dist/libs/MediaPipe — Android 应用集成(最简单)
// === MediaPipe LLM Inference (Android Kotlin) ===
// build.gradle 添加依赖
// implementation("com.google.mediapipe:tasks-genai:latest.release")
import com.google.mediapipe.tasks.genai.llminference.LlmInference
// 初始化 LLM
val options = LlmInference.LlmInferenceOptions.builder()
.setModelPath("/data/local/tmp/gemma-2b-it-gpu-int4.bin")
.setMaxTokens(1024)
.setTemperature(0.7f)
.setTopK(40)
.setResultListener { partialResult, done ->
// 流式输出
runOnUiThread { textView.append(partialResult) }
}
.build()
val llmInference = LlmInference.createFromOptions(context, options)
// 生成回复
llmInference.generateResponseAsync("请解释SLAM算法的工作原理")Qualcomm AI Hub — 骁龙专属优化
# === Qualcomm AI Hub ===
# 安装
pip install qai-hub
# 1. 浏览可用模型
import qai_hub as hub
# 列出支持的设备
devices = hub.get_devices()
for d in devices:
print(f"{d.name}: {d.os}, {d.chipset}")
# Samsung Galaxy S24 (Snapdragon 8 Gen 3)
# Samsung Galaxy S25 (Snapdragon 8 Elite)
# Xiaomi 15 (Snapdragon 8 Elite)
# 2. 提交模型到真机上跑 Profile
import torch
from qai_hub_models.models.yolov8_det import Model as YoloV8
model = YoloV8.from_pretrained()
input_shape = (1, 3, 640, 640)
sample_input = torch.randn(input_shape)
# 在真机上 Profile 性能
job = hub.submit_profile_job(
model=model,
device=hub.Device("Samsung Galaxy S24"),
input_shapes=dict(image=input_shape),
)
print(job.get_target_model_perf())
# 3. 下载编译好的模型到设备运行
compiled = hub.submit_compile_job(model, device=hub.Device("Samsung Galaxy S24"))
compiled.download("./yolov8_s24.tflite")ExecuTorch — PyTorch 端侧部署
# === ExecuTorch (Meta) - LLaMA on Android ===
# 1. 安装
pip install executorch
# 2. 导出 LLaMA 模型为 ExecuTorch 格式
python -m executorch.examples.models.llama.export_llama \
--checkpoint path/to/llama3-8b \
--params path/to/params.json \
-qmode 8da4w \ # 4-bit 量化
--output llama3_8b_q4.pte
# 3. Android Demo App
# https://github.com/pytorch/executorch/tree/main/examples/demo-apps/android/LlamaDemo
# 支持 XNNPACK (CPU)、Qualcomm QNN (NPU)、MediaTek (NPU)
# 4. iOS 部署
# 使用 Core ML 后端
python -m executorch.examples.models.llama.export_llama \
--checkpoint path/to/llama3-8b \
--coreml # 启用 Core ML 后端最快上手路径:
- Android 用户:下载 MLC Chat APK → 选择 Qwen2.5-3B 或 Gemma-2B → 直接在手机上聊天
- iOS 用户:App Store 搜索 “LLM Farm” 或 “PocketPal AI” → 下载 GGUF 模型 → 本地运行
- 进阶玩法:Termux + llama.cpp → 命令行跑任意 GGUF 模型 → 接 API 做应用