为什么需要边缘AI?

云计算解决了大规模AI部署问题,但很多场景无法依赖云端:

  1. 隐私要求:医疗、金融数据不能上云
  2. 延迟要求:自动驾驶、实时翻译需要毫秒级响应
  3. 离线场景:野外、飞机模式、网络不稳定
  4. 成本控制:大量设备同时运行,云推理成本不可控

边缘AI的目标:在手机、车载芯片、IoT设备上本地运行AI模型。

模型压缩四件套

1. 量化

将模型从FP32压缩到INT8/INT4:

精度模型大小(7B)精度损失推理速度
FP1614GB0%基准
INT87GB<1%1.5-2x
INT43.5GB1-3%2-3x
2-bit1.75GB5-10%3-4x

移动端推荐INT4量化,使用GGUF格式(llama.cpp生态)。常用方案:

  • GPTQ:基于二阶信息的权重量化
  • AWQ:基于激活分布的权重量化
  • GGUF Q4_K_M:移动端最常用格式

2. 蒸馏

将大模型知识"蒸馏"到小模型:

Teacher模型(70B) → 生成回答/中间表示 → Student模型(1B)学习

任务特定蒸馏:只蒸馏目标任务的能力,而非通用能力。效果通常比直接训练小模型好20-30%。

3. 剪枝

移除不重要的参数:

  • 结构化剪枝:移除整个attention head或MLP中间维度,可实际加速
  • 非结构化剪枝:移除稀疏参数,需特殊硬件支持

移动端推荐结构化剪枝,因为标准硬件就能获得加速。

4. 架构搜索(NAS)

针对特定硬件搜索最优模型结构:

  • 确定目标硬件的延迟/功耗预算
  • 搜索满足约束的最高精度模型
  • MobileNet、EfficientNet就是NAS的经典成果

移动端推理引擎

llama.cpp

  • C++实现,无依赖
  • 支持GGUF格式
  • iOS/Android均可运行
  • 支持CPU推理和GPU加速
典型使用:
1. 将模型量化为GGUF格式
2. 编译llama.cpp for Android/iOS
3. 通过JNI或C API调用
4. 管理上下文窗口和内存

MLC-LLM

  • 基于TVM编译器
  • 自动优化模型到目标硬件
  • 支持GPU加速(Metal/Vulkan)
  • 跨平台:iOS/Android/Web

ONNX Runtime Mobile

  • 微软出品,支持ONNX格式
  • Android/iOS支持完整
  • 包体积极小(<10MB运行时)
  • 支持NNAPI/CoreML后端加速

平台原生方案

  • iOS:CoreML + MLX
  • Android:ML Kit + NNAPI
  • 华为:CANN + NPU

端侧部署实战

iOS部署

// 使用MLX框架运行LLM
import MLX
import MLXLMCommon

let model = try await loadModel(name: "qwen-2-1.5b-4bit")
let result = try await model.generate(
    prompt: "你好",
    maxTokens: 256
)

关键配置:

  • 模型选择:Qwen-2-1.5B-Q4(约900MB)
  • 内存限制:iOS App内存上限约2GB
  • 量化:使用MLX的4bit量化
  • Metal加速:确保使用GPU

Android部署

// 使用llama.cpp + JNI
val llama = LlamaCpp()
llama.loadModel(modelPath)
val result = llama.generate("你好", maxTokens = 256)

关键配置:

  • 模型选择:1B-3B参数量化模型
  • NNAPI加速:启用硬件加速
  • 内存管理:控制KV Cache大小
  • 电池优化:使用workmanager后台运行

端侧RAG系统

在设备上构建RAG:

[用户查询] → 向量化(本地编码器) → 检索(本地向量库) → 生成(本地LLM)

组件选型

  • Embedding模型:all-MiniLM-L6-v2(22MB),ONNX格式运行
  • 向量库:FAISS(移动端可用)或简单文件存储+余弦计算
  • LLM:Qwen-2-1.5B-Q4(900MB)
  • 文档存储:SQLite或本地JSON

典型应用

  • 个人知识库助手:检索笔记+生成回答
  • 文档问答:本地PDF/Word问答
  • 隐私聊天:不上传任何数据

性能调优

内存优化

# 分块加载模型
for layer in model.layers:
    layer.to(device)  # 按层加载
    output = layer(input)
    layer.to(cpu)     # 用完移回CPU

速度优化

  • KV Cache大小控制:限制context长度到2K-4K
  • Speculative Decoding:用小模型猜token,大模型验证
  • 动态量化:根据设备性能自动调整精度

电池优化

  • 批处理请求:合并多次推理为一次
  • 后台推理:使用低功耗模式运行
  • 缓存策略:相似查询直接返回缓存结果

性能基准

2026年典型设备的LLM推理性能:

设备模型速度内存占用
iPhone 16 ProQwen-2-1.5B-Q445 tok/s1.2GB
Pixel 9Qwen-2-1.5B-Q430 tok/s1.3GB
iPad Pro M4Qwen-2-7B-Q418 tok/s4.5GB
Snapdragon X EliteQwen-2-3B-Q425 tok/s2.5GB

总结

边缘AI部署正在从"概念演示"走向"生产可用"。1-3B参数的量化模型在主流手机上已能达到30+ tokens/s的生成速度,足以支撑实时对话应用。随着端侧NPU性能提升和模型压缩技术进步,未来两年内7B模型端侧运行将成为常态。对于隐私敏感、离线需求强的场景,边缘AI是最佳选择。