Lecciones Prácticas de la Construcción de IA en Dispositivo en React Native

Generación de Texto con LLMs
Usa llama.rn para ejecutar modelos GGUF en React Native. Envuelve llama.cpp y proporciona enlaces nativos para Android (JNI) e iOS (Metal). La transmisión de tokens mediante callbacks funciona bien.
La gestión de memoria es crítica: un modelo 7B Q4 necesita ~5.5 GB de RAM en tiempo de ejecución (tamaño del archivo × 1.5 para la caché KV y activaciones). Usa el 60% de la RAM del dispositivo como presupuesto máximo, advierte al 50% y bloquea al 60% para evitar que el sistema operativo cierre la aplicación.
La aceleración por GPU usa OpenCL en Android (GPUs Adreno) y Metal en iOS. Flash attention falla con capas GPU > 0 en Android, así que impón esto en el código. La cuantización de la caché KV (f16/q8_0/q4_0) es más beneficiosa que la GPU para la mayoría de dispositivos; pasar de f16 a q4_0 aproximadamente triplicó la velocidad de inferencia en las pruebas.
Generación de Imágenes con Stable Diffusion
Esto es específico de la plataforma, sin una sola biblioteca que cubra ambas.
- Android: Usa MNN (framework de Alibaba, CPU, funciona en todos los dispositivos ARM64) y QNN (Qualcomm AI Engine, acelerado por NPU, solo para Snapdragon 8 Gen 1+). QNN es 3× más rápido pero solo funciona en chips Qualcomm recientes. Implementa detección en tiempo de ejecución con retroceso automático.
- iOS: Usa la canalización ml-stable-diffusion de Apple con aceleración Core ML y Neural Engine. Los modelos paletizados (~1 GB, 6 bits) son excelentes para dispositivos con memoria limitada; la precisión completa (~4 GB, fp16) es más rápida en ANE pero necesita margen.
Benchmarks del mundo real: 5–10 segundos en NPU Snapdragon, 15 segundos en CPU en gama alta, 8–15 segundos en ANE de iOS para 512×512 a 20 pasos. Muestra una vista previa en tiempo real cada N pasos de eliminación de ruido para evitar que los usuarios piensen que la aplicación se congeló.
Transcripción de Voz con Whisper
whisper.rn envuelve whisper.cpp y es sencillo de integrar. Ofrece múltiples tamaños de modelo (Tiny/Base/Small) y permite a los usuarios elegir entre velocidad y precisión. La transcripción parcial en tiempo real (palabras que aparecen mientras hablan) hace que se sienta nativa.
Almacena el audio en búfer en código nativo y límpialo después de la transcripción; no escribas archivos de audio en el disco si la privacidad es importante.
Visión con Modelos Multimodales
Los modelos de visión necesitan dos archivos: el GGUF principal y un compañero mmproj (proyector multimodal). Maneja esto de forma transparente: detecta automáticamente modelos de visión, descarga automáticamente el mmproj, rastréalos como una sola unidad y busca en el directorio del modelo en tiempo de ejecución si el enlace se rompe. Descarga ambos archivos en paralelo para reducir el tiempo de descarga casi a la mitad para un modelo de visión de 2B.
SmolVLM a 500M es el punto óptimo para móviles, con ~7 segundos en dispositivos insignia, capaz para lectura de documentos y descripción de escenas.
Llamadas a Herramientas para Bucles de Agentes en el Dispositivo
Los modelos que admiten llamadas a funciones pueden usar herramientas (búsqueda web, calculadora, fecha/hora, información del dispositivo) a través de un bucle automático: el LLM genera, analiza las llamadas a herramientas, las ejecuta, inyecta los resultados de vuelta en el contexto, el LLM continúa. Límitalo a un máximo de 3 iteraciones, 5 llamadas totales para evitar bucles infinitos.
Soporta dos rutas de análisis: los modelos más grandes generan llamadas a herramientas JSON estructuradas de forma nativa a través de llama.rn, mientras que los modelos más pequeños generan XML como <tool_call>. Detecta el soporte de herramientas en el momento de carga del modelo inspeccionando la plantilla de chat jinja; si el modelo no admite herramientas, no inyectes definiciones de herramientas en el mensaje del sistema para evitar alucinaciones. La calculadora usa un analizador de descenso recursivo—nunca eval().
Clasificación de Intención
Si tu aplicación hace tanto generación de texto como de imágenes, necesitas decidir lo que el usuario quiere basándote en el análisis de entrada.
📖 Read the full source: r/LocalLLaMA
👀 Ver también

Reduzca los costos de token en un 95% con las siete técnicas de optimización de OpenClaw
Una guía completa que detalla siete técnicas para reducir el consumo de tokens de agentes de IA en más del 95%, incluyendo archivos de arranque en estructura de árbol, autocompresión de IA, descarga de modelos locales y tareas de CPU basadas en cron.

Recomendaciones de Configuración de LLM Local para OpenClaw
Un usuario comparte su configuración para ejecutar un LLM local con OpenClaw, utilizando un GB10 para el procesamiento de IA y un Mac mini para la instalación de OpenClaw, con detalles específicos del modelo y el servidor.

Metodología para la Evaluación Comparativa Consistente de LLM Locales vs en la Nube
Un desarrollador comparte una configuración de medición que utiliza solicitudes secuenciales y puntuación basada en reglas para comparar modelos locales (a través de llama.cpp, vLLM, Ollama) con APIs en la nube (GPT-5.4, Claude Sonnet 4.6, Gemini 3.1 Pro) mediante un endpoint unificado como ZenMux.

Deja de preguntar qué modelo de IA usar: enruta tareas a los niveles Haiku, Soneto y Opus
Utiliza al menos tres modelos por tipo de tarea: nivel Haiku para leer/resumir, nivel Sonnet para escribir código, y nivel Opus solo para refactorizaciones de múltiples archivos y depuración. La configuración de un usuario envía el 40% a modelos baratos, 35% a intermedios, 25% a avanzados, con un costo de ~$30-40 al mes.