Skip to content

端侧推理部署实践

端侧推理将大模型部署到手机、IoT 设备和浏览器等边缘终端,实现低延迟、离线可用和隐私保护。本文介绍端侧推理的关键技术和部署实践。

端侧推理部署实践

端侧推理挑战

挑战典型约束解决方向
内存手机 4-8GB激进量化 + 模型裁剪
算力手机 NPU 10-30 TOPS算子优化 + 稀疏化
存储App < 500MB模型压缩 + 按需下载
电池功耗 < 3W算力调度 + 量化

量化与压缩

端侧部署需要最激进的量化:

python
# 使用 llama.cpp 转换为 GGUF Q4 量化
# python convert_hf_to_gguf.py \
#     models/phi-2 \
#     --outtype q4_K_M \
#     --outfile phi-2-q4km.gguf

# MLC-LLM 编译为手机目标
# mlc_llm compile \
#     --model microsoft/phi-2 \
#     --quantization q4f16_1 \
#     --target iphone \
#     --max-seq-len 2048 \
#     -o dist/phi-2-ios/

移动端部署

iOS 部署

python
# MLC-LLM iOS 集成
# 1. 编译模型
# mlc_llm compile --model phi-2 --quantization q4f16_1 --target iphone

# 2. 构建 iOS App
# mlc_llm build --target iphone --model phi-2

# 3. Swift 调用
"""
import MLCEngine

let engine = MLCEngine(model: "phi-2-q4f16_1")
let response = engine.generate(prompt: "解释机器学习", maxTokens: 128)
"""

Android 部署

python
# 使用 MLC-LLM Android 部署
# 1. 编译模型
# mlc_llm compile --model phi-2 --quantization q4f16_1 --target android

# 2. Java/Kotlin 调用
"""
val engine = MLCEngine(model = "phi-2-q4f16_1")
val response = engine.generate("解释机器学习", maxTokens = 128)
"""

浏览器部署

WebGPU 后端支持在浏览器中运行模型:

javascript
// WebLLM 浏览器推理
import { CreateMLCEngine } from "@mlc-ai/web-llm";

const engine = await CreateMLCEngine(
  "Phi-3.5-mini-instruct-q4f16_1-MLC",
  { initProgressCallback: (progress) => console.log(progress) }
);

const reply = await engine.chat.completions.create({
  messages: [{ role: "user", content: "解释深度学习" }],
  max_tokens: 128,
  temperature: 0.7,
});

console.log(reply.choices[0].message.content);

WebGPU 性能

在 Chrome 中,Phi-2 (Q4) 模型在 M1 MacBook 上可达 15-20 tok/s,在高端 Android 手机上约 5-8 tok/s。Safari 对 WebGPU 支持有限。

模型选择建议

设备推荐模型量化速度
iPhone 15 ProPhi-2 (2.7B)Q4_K_M15-20 tok/s
Android 旗舰Qwen2-1.5BQ4_K_M10-15 tok/s
浏览器 (M1)Phi-2 (2.7B)Q4F1615-20 tok/s
IoT 设备TinyLlama-1.1BQ4_K_M3-5 tok/s

首次加载时间

端侧模型首次加载需要从存储读取权重到内存,可能需要 2-5 秒。建议在 App 启动时预加载模型,或使用后台加载策略。

相关资源

最近更新