
Llama 3.2 para apps moviles: Fine-tuning y despliegue en el dispositivo
Una guia completa para usar los modelos Llama 3.2 1B y 3B de Meta en apps moviles. Fine-tuning con LoRA, exportacion a GGUF y despliegue en iOS y Android via llama.cpp.
Llama 3.2 de Meta incluye modelos de 1B y 3B disenados especificamente para despliegue movil y edge. No son versiones reducidas de ultimo momento. Fueron construidos a proposito para inferencia en el dispositivo, destilados de los modelos Llama 3.1 mas grandes para retener capacidad mientras caben en presupuestos de memoria movil.
Esta guia cubre el pipeline completo: seleccionar el tamano correcto, fine-tuning con tus datos, exportacion a GGUF y despliegue en iOS y Android.
Por que Llama 3.2 para movil
Llama 3.2 1B y 3B tienen varias ventajas para despliegue movil:
Disenado para movil: A diferencia de modelos mas grandes que se comprimen, estos fueron entrenados desde el inicio con restricciones moviles en mente. La arquitectura esta optimizada para inferencia rapida en hardware limitado.
Fuerte capacidad base: Entrenado con 9 billones de tokens. El modelo 3B obtiene 63.4 en MMLU y 77.4 en IFEval (seguimiento de instrucciones), haciendolo competitivo con modelos 2-3x su tamano de hace solo un ano.
Mayor ecosistema: Llama tiene la comunidad mas grande de cualquier familia de modelos abiertos. Mas guias de fine-tuning, mas conversiones GGUF, mas soporte de herramientas y mas ejemplos de despliegue en produccion que cualquier alternativa.
Contexto de 128K: Tanto 1B como 3B soportan ventanas de contexto de 128K tokens. Para movil, rara vez usaras mas de 2-4K, pero el contexto largo esta ahi si se necesita.
Eligiendo 1B vs 3B
| Factor | 1B | 3B |
|---|---|---|
| Tamano GGUF Q4 | ~600MB | ~1.7GB |
| RAM durante inferencia | ~800MB | ~2.2GB |
| Cobertura de dispositivos | 4GB+ (90% de telefonos) | 6GB+ (65% de telefonos) |
| Velocidad de generacion (flagship) | 35-50 tok/s | 18-30 tok/s |
| Precision de clasificacion (fine-tuned) | 90-94% | 93-96% |
| Calidad de chat (fine-tuned) | Buena para respuestas cortas | Buena para multi-turno |
| Resumen | Adecuado | Bueno |
Elige 1B cuando: Tu tarea es clasificacion, etiquetado, autocompletado, sugerencias inteligentes o generacion de formato corto. Quieres maxima cobertura de dispositivos.
Elige 3B cuando: Tu tarea es chat conversacional, resumen, redaccion de contenido o seguimiento de instrucciones complejas. Tus usuarios tienen dispositivos mas nuevos.
Fine-tuning con LoRA
LoRA (Low-Rank Adaptation) es el metodo estandar de fine-tuning para modelos moviles. En lugar de modificar todos los pesos del modelo, LoRA entrena pequenas matrices adaptadoras que ajustan el comportamiento del modelo. El adaptador es de 50-200MB, fusionado en el modelo base antes de la exportacion GGUF.
Formato de datos de entrenamiento
Llama 3.2 usa una plantilla de chat especifica. Tus datos de entrenamiento deben seguir este formato:
{
"messages": [
{"role": "system", "content": "Eres un asistente de viajes para la app TripHelper."},
{"role": "user", "content": "Cual es la mejor epoca para visitar Kioto?"},
{"role": "assistant", "content": "Marzo-abril para los cerezos en flor o noviembre para el follaje de otono. Ambas son temporadas altas, asi que reserva con 2-3 meses de anticipacion."}
]
}
Requisitos de datos
| Tarea | Ejemplos minimos | Recomendados | Tiempo de entrenamiento (LoRA) |
|---|---|---|---|
| Clasificacion | 200 | 500-1,000 | 15-30 min |
| Q&A corto | 300 | 1,000-2,000 | 30-60 min |
| Chat | 500 | 2,000-5,000 | 1-3 horas |
| Resumen | 300 | 1,000-3,000 | 1-2 horas |
Hiperparametros de LoRA
Configuracion estandar para fine-tuning movil de Llama 3.2:
| Parametro | 1B | 3B |
|---|---|---|
| Rango LoRA (r) | 16-32 | 16-64 |
| LoRA alpha | 32-64 | 32-128 |
| Tasa de aprendizaje | 2e-4 | 1e-4 |
| Epocas | 3-5 | 2-4 |
| Tamano de lote | 4-8 | 2-4 |
| Modulos objetivo | q_proj, v_proj, k_proj, o_proj | Igual |
Exportacion a GGUF
Despues del entrenamiento, el pipeline es:
- Fusionar el adaptador LoRA en los pesos del modelo base
- Convertir a formato GGUF
- Cuantizar a Q4_K_M (o tu nivel objetivo)
- Validar el modelo cuantizado en tu conjunto de evaluacion
El archivo GGUF es el artefacto final que envias a los dispositivos. Contiene el modelo completo en un solo archivo que llama.cpp puede cargar directamente.
Plataformas como Ertas manejan esto de principio a fin:
Sube datos de entrenamiento, selecciona Llama 3.2 1B o 3B como modelo base, configura parametros LoRA (o usa los predeterminados), entrena en GPUs en la nube y exporta directamente a GGUF. Sin herramientas de linea de comandos, sin configuracion de GPU, sin scripts de conversion.
Despliegue en iOS
Integracion con llama.cpp
Agrega llama.cpp a tu proyecto iOS via Swift Package Manager o como framework compilado. Carga el modelo GGUF y ejecuta inferencia:
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)
// Configurar inferencia
var contextParams = llama_context_default_params()
contextParams.n_ctx = 2048
contextParams.n_threads = 4
let context = llama_new_context_with_model(model, contextParams)
Aceleracion GPU Metal
llama.cpp usa automaticamente Metal en iOS para inferencia acelerada por GPU. Configura n_gpu_layers al conteo total de capas del modelo para descargar toda la computacion a la GPU:
var modelParams = llama_model_default_params()
modelParams.n_gpu_layers = 32 // Descargar todas las capas a Metal
Esto proporciona una mejora de velocidad del 30-50% sobre inferencia solo CPU.
Despliegue en Android
Integracion con llama.android
Usa la libreria llama.android del proyecto llama.cpp. Proporciona bindings Kotlin a traves de JNI:
val model = LlamaModel()
model.load(modelPath, nThreads = 4, nGpuLayers = 32)
// Generar con streaming
model.generate(prompt) { token ->
runOnUiThread { appendToUI(token) }
}
Aceleracion GPU Vulkan
En Android, llama.cpp soporta Vulkan para aceleracion GPU en Snapdragon, Tensor y otros chipsets. Habilita configurando nGpuLayers al conteo de capas del modelo.
Licenciamiento
Llama 3.2 usa el Llama Community License Agreement de Meta. Puntos clave:
- Uso comercial: Permitido
- Modificacion: Permitida (incluyendo fine-tuning)
- Distribucion: Permitida
- Umbral de 700M MAU: Si tu producto o servicio tiene mas de 700 millones de usuarios activos mensuales, necesitas una licencia especial de Meta
- Atribucion: Requerida
Para la gran mayoria de apps moviles, la licencia es completamente permisiva.
Linea de tiempo de principio a fin
| Paso | Duracion | Notas |
|---|---|---|
| Preparar datos de entrenamiento | 1-5 dias | Depende de la disponibilidad de datos |
| Fine-tune con LoRA | 30 min - 3 horas | Depende de GPU, entrenamiento en nube recomendado |
| Exportar a GGUF | 10-30 minutos | Automatizado en la mayoria de plataformas |
| Integrar llama.cpp | 1-2 dias | Configuracion unica |
| Pruebas y evaluacion | 1-3 dias | Probar en dispositivos objetivo |
| Total | 3-10 dias | Primer despliegue; iteraciones posteriores son mas rapidas |
El primer despliegue toma mas tiempo por la integracion de llama.cpp. Despues de eso, las actualizaciones de modelo (re-entrenamiento, re-exportacion GGUF) toman horas, no dias.
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.