
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 |
| 推論時 RAM | 約 800MB | 約 2.2GB |
| 裝置覆蓋率 | 4GB+(90% 的手機) | 6GB+(65% 的手機) |
| 生成速度(旗艦機) | 35-50 tok/s | 18-30 tok/s |
| 分類準確率(微調後) | 90-94% | 93-96% |
| 聊天品質(微調後) | 適合簡短回應 | 適合多輪對話 |
| 摘要能力 | 尚可 | 良好 |
選擇 1B 的時機: 你的任務是分類、標記、自動完成、智慧建議或短文本生成。你希望最大化裝置覆蓋率。
選擇 3B 的時機: 你的任務是對話式聊天、摘要、內容草擬或複雜的指令遵循。你的使用者擁有較新的裝置。
使用 LoRA 微調
LoRA(Low-Rank Adaptation,低秩適應)是行動模型的標準微調方法。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 在 Snapdragon、Tensor 和其他晶片組上進行 GPU 加速。透過將 nGpuLayers 設定為模型的層數來啟用。
授權條款
Llama 3.2 使用 Meta 的 Llama 社群授權協議。重點如下:
- 商業使用: 允許
- 修改: 允許(包括微調)
- 散布: 允許
- 7 億月活躍用戶門檻: 如果你的產品或服務月活躍用戶超過 7 億,你需要向 Meta 取得特別授權
- 署名: 必要
對於絕大多數行動應用程式,該授權是完全寬鬆的。7 億月活躍用戶的條款僅適用於最大的平台。
端到端時程
| 步驟 | 持續時間 | 備註 |
|---|---|---|
| 準備訓練資料 | 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.