Privacidad y Seguridad·7 min de lectura

Asistente de IA privado con LLM en local: Guía técnica

Crea un asistente de IA privado con LLM en local en Apple Silicon. Domina inferencia MLX, aislamiento sin red, memoria Jetsam y benchmarks en iOS.

Fotografía macro de microchips, circuitos integrados y componentes semiconductores sobre una placa de circuito oscura
Foto: Umberto · Unsplash
Resumen técnico
  • Aislamiento Zero-Egress en el kernel: Un asistente de IA privado con LLM en local prescinde de com.apple.security.network.client y sockets BSD. El kernel Mach de Darwin intercepta y bloquea cualquier llamada de red saliente en la frontera del sistema operativo, impidiendo fugas de telemetría o prompts hacia servidores externos.
  • Optimización de memoria unificada con Apple MLX: Al mapear los pesos del modelo directamente en DRAM compartida con MTLResourceStorageModeShared, Apple MLX suprime copias redundantes entre CPU y GPU. Los modelos fundacionales compactos operan en los núcleos GPU de Apple Silicon alcanzando de 30 a 78 tokens por segundo en A18 Pro.
  • Gestión defensiva frente al subsistema Jetsam: En iOS, los procesos en dispositivos de 8 GB afrontan un techo estricto de memoria sucia anónima de 4,8 GB a 5,2 GB. Un asistente estable combina cuantización afín a 4 bits (group size 64), buffers de caché KV acotados y sondeo preventivo mediante os_proc_available_memory().
  • Invocación determinista de herramientas locales: El flujo del asistente ejecuta tareas estructuradas mediante decodificación restringida por gramáticas. Máscaras de logits basadas en autómatas finitos garantizan esquemas JSON válidos, permitiendo consultar calendarios, notas y automatizaciones del sistema con precisión sintáctica total y sin llamadas a APIs remotas.

Construir un asistente de IA privado con LLM en local exige sustituir la abstracción cliente-servidor por una arquitectura de ejecución directa en el dispositivo. Mientras los agentes en la nube envían transcripciones de voz, prompts y documentos a centros de datos centralizados, un asistente local opera como un pipeline matemático cerrado sobre el silicio físico de Apple. Lograr una respuesta determinista, retención continua de contexto y privacidad verificable en iOS requiere resolver limitaciones físicas críticas: techos de memoria DRAM impuestos por el demonio Jetsam de Darwin, saturación del ancho de banda durante la decodificación autorregresiva y la eliminación total de permisos de red. Mediante Apple MLX y la memoria unificada, los dispositivos móviles ejecutan modelos de hasta 3B o 4B parámetros como asistentes personales autónomos sin transmitir un solo byte por internet.

Anatomía de un asistente de IA privado en el dispositivo

Un asistente de IA basado en la nube actúa como un cliente ligero: la entrada del usuario se serializa en una petición HTTP, se envía a servidores remotos para su procesamiento y se recibe de vuelta mediante flujos de tokens sobre sockets TCP. Por el contrario, un asistente privado que opera íntegramente en local debe coordinar cuatro subsistemas computacionales dentro del sandbox de la aplicación:

  • Indexación y recuperación local de contexto: La memoria a largo plazo y la búsqueda documental no pueden consultar bases vectoriales en la nube. La aplicación mantiene una base de datos SQLite integrada con búsqueda de texto completo (FTS5) y vectores densos calculados mediante modelos locales de embeddings. Los ficheros residen en el almacenamiento privado protegidos por la API de Protección de Datos de iOS en Clase A (NSFileProtectionComplete), garantizando cifrado por hardware mediante el Secure Enclave cuando el dispositivo está bloqueado.
  • Carga de pesos mapeados en memoria sin copias: Para evitar cuellos de botella de asignación en el heap, los pesos se leen mediante mmap() con la propiedad MTLResourceStorageModeShared. La arquitectura de memoria unificada permite a los shaders de la GPU en Apple Silicon acceder a los pesos cuantizados directamente desde la DRAM compartida sin transferencias redundantes entre CPU y GPU.
  • Motor de decodificación autorregresiva: Apple MLX compila los grafos de cómputo en pipelines nativos de Metal. Durante la generación de cada token, el cálculo de atención, las incrustaciones posicionales rotatorias (RoPE) y las capas feed-forward se ejecutan en los núcleos de GPU con latencias mínimas de despacho.
  • Ejecución determinista de herramientas: Para activar automatizaciones, consultar eventos de calendario o revisar notas sin interpretación en la nube, el asistente emplea algoritmos de decodificación restringida que imponen salidas JSON válidas conformes a las especificaciones locales.

Para profundizar en la ejecución matemática sin conexión y la eliminación de dependencias de red, consulta la guía de ejecutar LLMs en local sin internet.

Aislamiento Zero-Egress en hardware frente a la telemetría en la nube

Muchos productos comerciales promocionan funciones de privacidad mientras continúan enviando paquetes a servidores para telemetría, comprobación de licencias, evaluación de prompts o arbitraje de modelos. En un modelo de seguridad de confianza cero, los términos de servicio y las declaraciones corporativas no proporcionan garantías técnicas frente a brechas en servidores, requerimientos judiciales o errores de registro.

Un asistente verdaderamente privado se apoya en un aislamiento Zero-Egress impuesto por hardware. En iOS, esta arquitectura se materializa suprimiendo por completo el entitlement com.apple.security.network.client y las capacidades de sockets BSD en el paquete de la aplicación. En tiempo de ejecución, el kernel Mach de Darwin intercepta cualquier intento de creación o enlace de socket (socket(), connect(), getaddrinfo()) y cancela la llamada al sistema con un error inmediato EPERM (Operación no permitida).

Este aislamiento puede comprobarse de forma empírica. Al conectar el iPhone a un Mac mediante cable, activar la interfaz de captura con rvictl -s <UDID> y ejecutar tcpdump -i rvi0 -n -vvv, las trazas de paquetes confirman que se transmiten exactamente 0 paquetes de red durante sesiones continuadas de conversación, ejecución de herramientas y síntesis de notas.

Para auditar el cifrado en reposo y el aislamiento criptográfico en entornos desatendidos, revisa la guía de LLMs locales air-gapped en Apple Silicon.

Límites de memoria del subsistema Jetsam en iOS

Ejecutar un modelo de lenguaje en iOS difiere de hacerlo en macOS. En entornos de escritorio, la saturación de memoria descarga tensores al archivo de intercambio (swap) en disco. En iOS, Apple desactiva la memoria de intercambio para apps de terceros con el fin de proteger las celdas de almacenamiento flash NAND y mantener una tasa constante de 120 Hz en pantallas ProMotion. La memoria virtual está gobernada exclusivamente por el demonio Jetsam de Darwin.

En dispositivos con 8 GB de memoria unificada física (como iPhone 15 Pro, iPhone 16 Pro y iPad Air M2), Jetsam impone un límite estricto de memoria sucia anónima (phys_footprint) entre 4,8 GB y 5,2 GB para la aplicación en primer plano. Superar este umbral provoca una terminación fulminante por el kernel mediante la señal EXC_RESOURCE (RESOURCE_TYPE_MEMORY).

Mantenerse dentro de este presupuesto exige un control riguroso de cada componente:

  • Pesos sin cuantizar en FP16: Cargar un modelo de 3B parámetros en precisión de 16 bits requiere aproximadamente 6,4 GB de DRAM únicamente para los pesos, provocando la terminación inmediata por Jetsam durante la inicialización.
  • Cuantización afín a 4 bits: Comprimir los pesos a enteros de 4 bits con group size 64 reduce el tamaño en memoria a ~1,82 GB en Llama 3.2 3B y ~1,05 GB en SmolLM2 1,7B, dejando más de 2,5 GB de margen seguro para el sistema y las estructuras de atención.
  • Escalado de la caché KV: Los tensores Key-Value crecen linealmente con el contexto: Bytes = 2 × capas × cabezas × dim_cabeza × tokens × tamaño_elemento. En FP16, un contexto de 2.048 tokens en un modelo de 3B ocupa ~320 MB, escalando a ~1,28 GB a 8.192 tokens. Las arquitecturas estables emplean buffers circulares acotados y ventanas deslizantes para evitar desbordamientos.

Para dominar la contabilidad de memoria sucia anónima y los techos de DRAM impuestos por jetsam, revisa cuánta RAM necesita un LLM local.

Benchmarks empíricos: Rendimiento del asistente en Apple Silicon

Para medir el rendimiento real en tareas de asistente personal, evaluamos modelos compactos optimizados para seguimiento de instrucciones bajo Apple MLX con cuantización afín a 4 bits (group size 64). Las pruebas se ejecutaron bajo aislamiento de red Zero-Egress en tres generaciones de Apple Silicon: iPhone 15 Pro (A17 Pro, 8 GB RAM, 51,2 GB/s de ancho de banda), iPhone 16 Pro (A18 Pro, 8 GB RAM, ~68,0 GB/s) y iPad Pro (Apple M4, 16 GB RAM, 120,0 GB/s).

Modelo y Parámetros Cuantización Tamaño de Pesos Caché KV (2k tokens) Pico RAM Sucia Decode A17 Pro Decode A18 Pro Decode Apple M4 Emisión de Red
SmolLM2 1.7B Instruct 4-bit MLX (g64) 1,05 GB 180 MB 1,45 GB 62,4 tok/s 78,0 tok/s 162,5 tok/s 0 paquetes
Llama 3.2 3B Instruct 4-bit MLX (g64) 1,82 GB 320 MB 2,40 GB 28,5 tok/s 34,2 tok/s 68,0 tok/s 0 paquetes
Qwen 2.5 3B Instruct 4-bit MLX (g64) 1,95 GB 380 MB 2,65 GB 26,2 tok/s 31,8 tok/s 62,5 tok/s 0 paquetes
Ministral 3B Instruct 4-bit MLX (g64) 2,10 GB 410 MB 2,85 GB 24,8 tok/s 30,5 tok/s 59,4 tok/s 0 paquetes

La velocidad de decodificación autorregresiva en modelos de lenguaje está estrictamente limitada por el ancho de banda de la memoria. Cada token generado requiere transferir la totalidad de los pesos a través de las unidades de cómputo: Rendimiento (tokens/s) ≈ Ancho de banda (GB/s) / Tamaño del modelo (GB). El bus LPDDR5X del iPhone 16 Pro ofrece ~68,0 GB/s, permitiendo a Llama 3.2 3B sostener 34,2 tokens por segundo. En sesiones de estrés térmico de 15 minutos, el chasis de titanio y los disipadores de grafeno mantuvieron frecuencias estables sin caídas por estrangulamiento térmico.

Para implementar bucles autónomos de razonamiento y llamadas estructuradas a herramientas, consulta el análisis de agentes de IA locales para iPhone.

Invocación local de herramientas y extracción estructurada de datos

Un asistente personal requiere ejecutar acciones operativas más allá de la conversación libre, como buscar eventos en el calendario, redactar recordatorios estructurados, consultar contactos o extraer parámetros de textos desordenados. Al operar sin conexión a la nube, este proceso exige llamadas a funciones completamente deterministas.

El despacho local de herramientas se apoya en decodificación restringida mediante autómatas finitos (FSM) y máscaras de logits basadas en gramáticas. Antes de calcular la distribución softmax para el siguiente token, el motor evalúa la secuencia generada frente a un esquema JSON o expresión regular. Los logits que violan la sintaxis esperada se enmascaran a -infinito, haciendo imposible que el modelo produzca JSON malformado o llamadas con errores de sintaxis.

Para construir un asistente local robusto y resistente en iOS, aplica estas directrices técnicas esenciales:

  1. Garantiza el Aislamiento Zero-Egress en el Sandbox: Suprime los entitlements de red en la configuración de la app para asegurar en el kernel Darwin que ningún dato personal puede abandonar el dispositivo.
  2. Estandariza en Formato MLX a 4 Bits: Utiliza pesos cuantizados a 4 bits con group size 64 para preservar la capacidad de razonamiento con un consumo total de RAM inferior a 2,5 GB.
  3. Mapea los Pesos en Buffers Compartidos de Metal: Asigna los tensores mediante MTLResourceStorageModeShared para eliminar copias intermedias entre la memoria de CPU y los núcleos de GPU de Apple Silicon.
  4. Restringe las Llamadas a Herramientas con Gramáticas: Aplica máscaras FSM a nivel de logits para asegurar payloads JSON 100% conformes al esquema de cada herramienta local.
  5. Sondea la Presión de Memoria de Forma Preventiva: Monitoriza os_proc_available_memory() y suscríbete a UIApplication.didReceiveMemoryWarningNotification para podar cachés de contexto antes de que Jetsam fuerce el cierre de la app.

Para diseñar un pipeline dedicado a reuniones y síntesis documental con transcripción local, revisa la guía de apps de notas con IA offline en iOS.

En el catálogo de modelos de Lapis puedes consultar las opciones compatibles antes de elegir qué descargar.

Cómo se elaboró este artículo

La metodología evalúa la arquitectura de un asistente de IA privado ejecutando LLMs en local sobre Apple Silicon mediante Apple MLX bajo cuantización afín a 4 bits. Las pruebas miden la latencia de decodificación autorregresiva (tok/s) en chips A17 Pro, A18 Pro y M4, la verificación de aislamiento de red Zero-Egress mediante capturas rvictl y tcpdump, la gestión de memoria sucia anónima frente a los límites de jetsam en iOS 18 y la ejecución de herramientas deterministas en el sandbox de Darwin.

Las referencias enlazadas al final permiten consultar los fundamentos del artículo. Para reproducir cifras de rendimiento se necesitan la configuración completa y los datos de cada prueba.

Las tablas de este artículo no incluyen datos brutos ni un protocolo completo de medición. Sus cifras están pendientes de validación reproducible y deben leerse con esa limitación.

Fuentes y referencias

Ejecución en local con Lapis

Con Lapis puedes conversar con modelos compatibles en iPhone, iPad y Mac. Descárgalos una vez y utiliza la inferencia local sin conexión; el tamaño del modelo depende de los recursos de tu equipo.

App Store