
Llama 3.2移动应用: 微调与端侧部署
使用Meta Llama 3.2 1B和3B模型构建移动应用的完整指南。涵盖LoRA微调、GGUF导出以及通过llama.cpp在iOS和Android上的部署。
Meta的Llama 3.2包含专为移动端和边缘部署设计的1B和3B模型。这些并非缩小版的附属品,而是专门为端侧推理构建的模型,从更大的Llama 3.1模型蒸馏而来,在适合移动内存预算的同时保留了核心能力。
本指南涵盖完整流程: 选择合适的尺寸、在你的数据上微调、导出为GGUF,以及在iOS和Android上部署。
为什么选择Llama 3.2用于移动端
Llama 3.2 1B和3B在移动端部署方面具有几个优势:
为移动端而设计: 不同于将大模型压缩的做法,这些模型从一开始就考虑了移动端的限制。架构针对有限硬件上的快速推理进行了优化。
强大的基础能力: 使用9万亿tokens训练。3B模型在MMLU上得分63.4,在IFEval(指令遵循)上得分77.4,与仅一年前2-3倍大小的模型相当。
最大的生态系统: Llama拥有开放模型家族中最大的社区。比任何替代方案都有更多的微调指南、GGUF转换、工具支持和生产部署案例。
128K上下文: 1B和3B都支持128K token上下文窗口。在移动端,你很少会用到超过2-4K,但在需要时长上下文就在那里。
选择1B还是3B
| 因素 | 1B | 3B |
|---|---|---|
| GGUF Q4大小 | 约600MB | 约1.7GB |
| 推理时内存 | 约800MB | 约2.2GB |
| 设备覆盖 | 4GB+ (90%的手机) | 6GB+ (65%的手机) |
| 生成速度 (旗舰机) | 35-50 tok/s | 18-30 tok/s |
| 分类准确率 (微调后) | 90-94% | 93-96% |
| 对话质量 (微调后) | 适合短回复 | 适合多轮对话 |
| 摘要能 力 | 够用 | 良好 |
选择1B当: 你的任务是分类、标注、自动补全、智能建议或短文本生成。你需要最大的设备覆盖率。
选择3B当: 你的任务是对话聊天、摘要、内容起草或复杂指令遵循。你的用户拥有较新的设备。
使用LoRA进行微调
LoRA(低秩自适应)是移动模型的标准微调方法。LoRA不修改所有模型权重,而是训练小型适配器矩阵来调整模型行为。适配器大小为50-200MB,在GGUF导出前合并到基础模型中。
训练数据格式
Llama 3.2使用特定的聊天模板。你的训练数据应遵循以下格式:
{
"messages": [
{"role": "system", "content": "You are a travel assistant for TripHelper app."},
{"role": "user", "content": "What's the best time to visit Kyoto?"},
{"role": "assistant", "content": "March-April for cherry blossoms or November for autumn foliage. Both are peak seasons, so book 2-3 months ahead."}
]
}
每个训练样本是一段对话。如果你的应用使用系统提示词,就包含它。如果你的功能是对话式的,就包含多轮对话样本。
数据需求
| 任务 | 最少样本数 | 推荐数量 | 训练时间 (LoRA) |
|---|---|---|---|
| 分类 | 200 | 500-1,000 | 15-30分钟 |
| 短问答 | 300 | 1,000-2,000 | 30-60分钟 |
| 聊天 | 500 | 2,000-5,000 | 1-3小时 |
| 摘要 | 300 | 1,000-3,000 | 1-2小时 |
LoRA超参数
Llama 3.2移动端微调的标准设置:
| 参数 | 1B | 3B |
|---|---|---|
| LoRA秩 (r) | 16-32 | 16-64 |
| LoRA alpha | 32-64 | 32-128 |
| 学习率 | 2e-4 | 1e-4 |
| 训练轮次 | 3-5 | 2-4 |
| 批次大小 | 4-8 | 2-4 |
| 目标模块 | q_proj, v_proj, k_proj, o_proj | 相同 |
更高的秩可以捕获更多领域特定知识,但会增加适配器大小和训练时间。对于大多数移动端用例,秩16-32就足够了。
导出为GGUF
训练完成后,流程如下:
- 将LoRA适配器合并到基础模型权重中
- 转换为GGUF格式
- 量化为Q4_K_M(或你的目标级别)
- 在评估集上验证量化模型
GGUF文件是你最终发送到设备的制品。它包含完整模型,存储在单个文件中,llama.cpp可以直接加载。
Ertas等平台可以端到端处理:
上传训练数据,选择Llama 3.2 1B或3B作为基础模型,配置LoRA参数(或使用默认值),在云GPU上训练,直接导出为GGUF。无需命令行工具、GPU配置或转换脚本。
在iOS上部署
集成llama.cpp
通过Swift Package Manager或编译好的框架将llama.cpp添加到你的iOS项目中。加载GGUF模型并运行推理:
import llama
let modelPath = Bundle.main.path(forResource: "model", ofType: "gguf")!
let params = llama_model_default_params()
let model = llama_load_model_from_file(modelPath, params)
// 配置推理
var contextParams = llama_context_default_params()
contextParams.n_ctx = 2048
contextParams.n_threads = 4
let context = llama_new_context_with_model(model, contextParams)
Metal GPU加速
llama.cpp在iOS上自动使用Metal进行GPU加速推理。将n_gpu_layers设置为模型的总层数,将所有计算卸载到GPU:
var modelParams = llama_model_default_params()
modelParams.n_gpu_layers = 32 // 将所有层卸载到Metal
这在近期的llama.cpp构建中默认启用,相比纯CPU推理可提供30-50%的速度提升。
在Android上部署
集成llama.android
使用llama.cpp项目中的llama.android库。它通过JNI提供Kotlin绑定:
val model = LlamaModel()
model.load(modelPath, nThreads = 4, nGpuLayers = 32)
// 流式生成
model.generate(prompt) { token ->
runOnUiThread { appendToUI(token) }
}
Vulkan GPU加速
在Android上,llama.cpp支持Vulkan GPU加速,适用于Snapdragon、Tensor等芯片组。通过将nGpuLayers设置为模型的层数来启用。
许可证
Llama 3.2使用Meta的Llama社区许可协议。要点如下:
- 商业使用: 允许
- 修改: 允许(包括微调)
- 分发: 允许
- 7亿MAU门槛: 如果你的产品或服务月活跃用户超过7亿,需要从Meta获得特殊许可
- 署名: 需要
对于绝大多数移动应用,该许可证完全开放。7亿MAU条款仅适用于最大型的平台。
端到端时间线
| 步骤 | 时长 | 备注 |
|---|---|---|
| 准备训练数据 | 1-5天 | 取决于数据可用性 |
| 使用LoRA微调 | 30分钟 - 3小时 | 依赖GPU,推荐云端训练 |
| 导出为GGUF | 10-30分钟 | 大多数平台已自动化 |
| 集成llama.cpp | 1-2天 | 一次性配置 |
| 测试和评估 | 1-3天 | 在目标设备上测试 |
| 总计 | 3-10天 | 首次部署; 后续迭代更快 |
首次部署耗时最长,因为需要集成llama.cpp。之后,模型更新(重新训练、重新导出GGUF)只需数小时,而非数天。
Ship AI that runs on your users' devices.
Early bird pricing starts at $14.50/mo — locked in for life. Plans for builders and agencies.
Ship AI that runs on your users' devices.
Early bird pricing starts at $14.50/mo — locked in for life. Plans for builders and agencies.
Keep reading

Gemma 3 for Mobile: Fine-Tuning and On-Device Deployment
How to use Google's Gemma 3 models for on-device mobile AI. Model selection, fine-tuning with LoRA, GGUF export, and deployment via llama.cpp on iOS and Android.

On-Device AI Model Size Guide: 1B vs 3B vs 7B for Mobile
How to choose the right model size for your mobile app. Capability breakdown, device requirements, quality benchmarks, and the fine-tuning factor that changes the math.

Quantization for Mobile: Q4, Q5, and Q8 Across Real Devices
A practical guide to GGUF quantization levels for mobile deployment. How Q4, Q5, and Q8 affect model size, speed, quality, and memory usage on iPhones and Android devices.