Back to blog
    IA sin conexion: Funciones moviles que funcionan sin internet
    offline AIon-device AImobile developmentllama.cpparchitecturesegment:mobile-builder

    IA sin conexion: Funciones moviles que funcionan sin internet

    Como construir funciones de IA que funcionan sin conexion a internet. Modelos en el dispositivo, patrones de arquitectura offline-first y los casos de uso donde la IA sin conexion no es opcional.

    EErtas Team·

    La IA en la nube tiene una dependencia dura: internet. Cuando la conexion cae, la funcion se rompe. Para muchos casos de uso movil, esto no es solo una inconveniencia. Es un factor decisivo.

    Una app de traduccion para viajes que falla sin datos de roaming. Un asistente de servicio de campo que deja de funcionar en un sitio de construccion con cobertura irregular. Una app de salud que no puede procesar datos en una clinica remota. Una app de notas que pierde sus funciones de IA en un avion.

    La IA sin conexion no es un extra agradable para estas apps. Es un requisito fundamental. Y con inferencia en el dispositivo, es completamente alcanzable.

    Donde la IA sin conexion es esencial

    Viajes e internacional

    Los usuarios que viajan internacionalmente frecuentemente evitan cargos de roaming de datos. El WiFi de aeropuertos es poco confiable. La traduccion, asistencia de navegacion y planificacion de viajes necesitan funcionar sin conexion. Una app de idiomas que solo traduce cuando esta conectada a WiFi es inutil en el momento exacto que los usuarios mas la necesitan.

    Trabajo de campo

    Sitios de construccion, campos agricolas, operaciones mineras, inspecciones remotas. Estos entornos frecuentemente tienen cobertura celular pobre o nula. Los trabajadores usando apps moviles para documentacion, medicion, inspeccion de calidad o reportes necesitan funciones de IA que funcionen en sitio.

    Salud

    Los datos de pacientes no deberian salir del dispositivo por razones de privacidad y regulatorias (HIPAA, GDPR). Soporte de decision clinica, transcripcion de notas, codificacion medica. Estas funciones deben funcionar en entornos clinicos donde el WiFi puede estar restringido o ser poco confiable.

    Mercados en desarrollo

    Mas de 3 mil millones de personas en el mundo tienen acceso intermitente a internet. Las apps dirigidas a estos mercados no pueden asumir conectividad permanente. Las funciones de IA que funcionan sin conexion tienen un mercado direccionable dramaticamente mayor.

    Interrupciones cotidianas

    Metros, ascensores, aviones, sotanos, areas rurales. Incluso en mercados desarrollados, las brechas de conectividad son constantes. Una funcion de IA que muestra un spinner de carga o un error en estos momentos entrena a los usuarios para no confiar en ella.

    La arquitectura: Offline-first con inferencia en el dispositivo

    La idea clave es arquitectonica. En lugar de construir cloud-first con un respaldo sin conexion (que es fragil), construye offline-first con aumento opcional en la nube.

    Entrega del modelo

    El archivo del modelo GGUF necesita estar en el dispositivo antes de que funcionen las funciones de IA. Dos enfoques:

    Incluido en la app: Incluye el modelo en el binario de la app o como un asset de la app. El usuario lo descarga con la app. Enfoque mas simple para modelos menores a 200MB (cabe dentro de limites de descarga celular). Para modelos mas grandes, usa iOS App Thinning o Android Asset Delivery.

    Descarga post-instalacion: La app se instala sin el modelo. En el primer inicio, detecta el modelo faltante y solicita al usuario descargarlo por WiFi. Esto mantiene la descarga inicial de la app pequena mientras entrega el modelo antes de que sea necesario.

    // iOS: Verificar modelo y solicitar descarga
    func ensureModelAvailable() -> Bool {
        let modelPath = FileManager.default
            .urls(for: .documentDirectory, in: .userDomainMask)[0]
            .appendingPathComponent("model.gguf")
    
        if FileManager.default.fileExists(atPath: modelPath.path) {
            return true
        }
    
        // Mostrar UI de descarga
        showModelDownloadPrompt()
        return false
    }
    

    Inferencia local

    Una vez que el modelo esta en el dispositivo, la inferencia es completamente local. llama.cpp maneja la computacion usando la CPU y GPU del dispositivo (Metal en iOS, Vulkan en Android). Sin llamada de red requerida.

    El pipeline de inferencia:

    1. El usuario proporciona entrada (texto, transcripcion de voz, etc.)
    2. La entrada se tokeniza localmente
    3. El modelo genera respuesta token por token
    4. Los tokens se decodifican y muestran en la UI

    Cada paso ocurre en el dispositivo. Internet no esta involucrado.

    Sincronizar cuando este disponible

    Para funciones que se benefician de conectividad en la nube (analitica, actualizaciones de modelo, sincronizacion de datos de usuario), usa un patron de cola y sincronizacion:

    • Encola eventos de analitica localmente (SQLite, Core Data, Room)
    • Cuando regrese la conectividad, sincroniza la cola con tu backend
    • Verifica actualizaciones de modelo al iniciar la app cuando este conectado
    • Nunca bloquees la experiencia del usuario por disponibilidad de red

    Que funciona sin conexion

    FuncionFactible sin conexion?Tamano de modelo necesarioNotas
    Clasificacion de textoSi1B (~600MB)Rapido, modelo pequeno suficiente
    Asistente de chatSi3B (~1.7GB)Generacion de calidad necesita 3B
    ResumenSi3B (~1.7GB)Buena calidad a 3B
    TraduccionSi1-3BDepende del par de idiomas
    Redaccion de contenidoSi3B (~1.7GB)Respuestas de email, notas, mensajes
    AutocompletadoSi1B (~600MB)La velocidad importa, 1B es rapido
    Analisis de sentimientoSi1B (~600MB)Tarea de clasificacion simple
    Extraccion de entidadesSi1-3BTarea de salida estructurada
    Busqueda webNoN/ARequiere datos de internet en vivo
    Recuperacion de datos en tiempo realNoN/ARequiere conexion al servidor
    Generacion de imagenesParcialmente1-2GB+Posible pero intensivo en memoria

    El patron: cualquier tarea que procese la entrada del usuario y genere salida del conocimiento entrenado del modelo funciona sin conexion. Las tareas que requieren datos externos en tiempo real no.

    Gestion de modelos para offline-first

    Verificacion de version

    // Android: Verificar version del modelo al iniciar la app
    suspend fun checkModelUpdate() {
        if (!isNetworkAvailable()) return
    
        val manifest = fetchModelManifest() // JSON de tu CDN
        val currentVersion = prefs.getString("model_version", "")
    
        if (manifest.version != currentVersion) {
            // Programar descarga en segundo plano
            scheduleModelDownload(manifest.url, manifest.checksum)
        }
    }
    

    Gestion de almacenamiento

    Los modelos GGUF son de 600MB-1.7GB. La gestion de almacenamiento importa:

    • Verifica el espacio disponible antes de descargar
    • Muestra el tamano del modelo al usuario antes de que descargue
    • Permite a los usuarios eliminar y re-descargar el modelo
    • En iOS, marca el archivo del modelo para que no se respalde en iCloud (puede re-descargarse)
    • Maneja advertencias de poco almacenamiento ofreciendo eliminar el modelo

    Verificacion de integridad

    Siempre verifica el archivo del modelo despues de descargarlo:

    // Verificacion SHA256
    func verifyModel(at path: URL, expectedHash: String) -> Bool {
        guard let data = try? Data(contentsOf: path) else { return false }
        let hash = SHA256.hash(data: data)
        let hashString = hash.compactMap { String(format: "%02x", $0) }.joined()
        return hashString == expectedHash
    }
    

    Patrones de UX para IA sin conexion

    Estado de descarga del modelo

    • Muestra un indicador de progreso claro durante la descarga
    • Permite pausar y reanudar
    • Reanuda automaticamente al reconectarse a la red
    • Muestra el tamano de descarga antes de iniciar

    Disponibilidad de funciones

    • Cuando el modelo aun no se ha descargado, muestra un mensaje claro explicando por que la funcion de IA no esta disponible y como habilitarla
    • Cuando el modelo esta cargado y listo, no muestres indicador especial. La IA sin conexion deberia sentirse nativa.
    • Nunca muestres insignias de "modo sin conexion" o UI degradada. El modelo en el dispositivo ES la funcion.

    Respaldo elegante

    Para apps hibridas que usan IA tanto en el dispositivo como en la nube:

    • Por defecto usa el dispositivo para todas las tareas soportadas
    • Si hay conexion y la tarea excede la capacidad del dispositivo, opcionalmente enruta a la nube
    • Nunca falles una solicitud del usuario porque la nube no esta disponible si el dispositivo puede manejarla

    Construyendo el pipeline offline-first

    El camino hacia la IA sin conexion:

    1. Elige tu modelo: 1B para tareas simples (clasificacion, autocompletado), 3B para generacion y chat
    2. Fine-tunea en tu dominio: Usa los datos de tu app para entrenar un modelo que destaque en tus tareas especificas. Plataformas como Ertas proporcionan un pipeline visual de fine-tuning que exporta archivos GGUF listos para despliegue movil.
    3. Integra llama.cpp: Agrega la libreria de inferencia a tu proyecto iOS o Android
    4. Implementa entrega del modelo: Incluido en la app o descarga post-instalacion
    5. Construye offline-first: Disena cada interaccion de IA para funcionar sin red, agrega aumento en la nube solo donde sea esencial

    El resultado es una funcion de IA que funciona donde quiera que vayan tus usuarios. Metro. Avion. Sitio de construccion. Clinica rural. Sin spinners de carga. Sin mensajes de error. Solo IA instantanea, privada y confiable.

    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