Core ML es el framework de aprendizaje automático de Apple que permite integrar modelos ML preentrenados directamente en aplicaciones iOS, iPadOS, macOS, watchOS y tvOS. El framework admite redes neuronales, árboles de decisión, regresiones lineales y métodos de conjunto, así como la conversión de modelos de TensorFlow, PyTorch, Keras y ONNX al formato propio de Apple. Según Apple Machine Learning Research (2025), Core ML realiza la inferencia completamente en el dispositivo, garantizando la privacidad de los datos y una latencia inferior a 10 milisegundos para la mayoría de los modelos.
Puntos clave
Core ML es un componente clave del ecosistema de aprendizaje automático de Apple, presentado en la WWDC 2017. Antes de Core ML, los desarrolladores de iOS usaban bibliotecas de terceros (TensorFlow Mobile, Caffe2) o soluciones personalizadas para ejecutar modelos ML en el dispositivo. Core ML proporcionó una interfaz unificada única para todos los tipos de modelos, desde regresiones clásicas hasta redes neuronales profundas, y asumió la optimización de bajo nivel para el dispositivo específico.
La primera versión de Core ML (2017) solo admitía modelos estáticos con tamaños de entrada fijos. Core ML 2 (2018) añadió soporte para predicción por lotes y actualizaciones de modelos sobre la marcha. Core ML 3 (2019) trajo entrenamiento en el dispositivo y soporte para docenas de nuevas capas de redes neuronales. Core ML 4 (2021) introdujo soporte para modelos con múltiples salidas y procesamiento de imágenes mejorado. Core ML 5 (2024) añadió soporte para redes neuronales dinámicas y aprendizaje supervisado en el dispositivo utilizando nuevas capas ML.
Ejecutar el aprendizaje automático en el dispositivo ofrece tres ventajas clave: privacidad — los datos nunca salen del dispositivo (cumpliendo con los requisitos de GDPR y HIPAA), velocidad — la inferencia se completa en milisegundos sin latencia de red, disponibilidad sin conexión — el modelo funciona sin conexión a Internet. Según Apple Privacy Report (2025), más del 90% de las inferencias ML en plataformas Apple se realizan en el dispositivo gracias a Core ML.
La arquitectura de Core ML se basa en un principio multicapa: en el nivel superior — la API para el desarrollador (MLModel, MLFeatureProvider, MLPredictionOptions), en el nivel medio — el modelo en formato .mlpackage, en el nivel inferior — los backends de cómputo: Apple Neural Engine (ANE), GPU (Metal Shaders) y CPU (BNNS, Accelerate framework). Core ML selecciona automáticamente el mejor backend según el modelo y el hardware del dispositivo.
| Backend | Dispositivos | Rendimiento |
|---|---|---|
| Neural Engine | iPhone Xs+, iPad A12+, Mac M1+ | Máximo (TOPS) |
| GPU (Metal) | Todos los dispositivos Apple | Alto (cómputo paralelo) |
| CPU (BNNS) | Todos los dispositivos Apple | Básico (compatibilidad) |
Neural Engine (ANE) es un neuroprocesador especializado integrado en los chips Apple A12+ y M1+. ANE está optimizado para operaciones de redes neuronales convolucionales (CNN) y multiplicadores de matrices con un rendimiento de hasta 15.8 TOPS en A17 Pro y 38 TOPS en M4. Core ML determina automáticamente si el modelo puede ejecutarse en ANE y, si es así, lo carga allí. Si el modelo contiene operaciones no compatibles con ANE, Core ML distribuye el cómputo entre GPU y CPU.
Para los cálculos en GPU, Core ML utiliza Metal Performance Shaders Graph (MPSGraph), un framework para construir y ejecutar grafos computacionales en la GPU. MPSGraph toma el grafo de la red neuronal de Core ML y lo compila en Metal Shaders optimizados para la arquitectura de GPU específica (GPU A17 de 7 núcleos o GPU M4 Ultra de 40 núcleos). Las optimizaciones automáticas de MPSGraph incluyen fusión de capas, eliminación de operaciones redundantes y selección del formato de datos óptimo.
Core ML admite todos los tipos principales de modelos de aprendizaje automático, divididos en tres categorías: redes neuronales (CNN convolucionales, RNN/LSTM recurrentes, transformadores), modelos de conjunto (Random Forest, Gradient Boosting, XGBoost, Árboles de Decisión) y modelos de regresión (regresión lineal, SVM, CRF). Cada tipo de modelo tiene su propio subprotocolo MLModelType, y Core ML selecciona automáticamente el backend y el formato de ejecución adecuados.
Core ML admite más de 150 tipos de capas de redes neuronales: Convolución (1D/2D/3D), BatchNormalization, Pooling (Max/Average), Activación (ReLU, Sigmoid, Tanh, LeakyReLU, PReLU), Recurrentes (LSTM/GRU/SimpleRNN), Transformadores (MultiHeadAttention, LayerNorm), capas específicas de Metal. Para capas no compatibles, Core ML proporciona un mecanismo de capa personalizada: la posibilidad de escribir una implementación de capa en Metal Shading Language o Swift.
let model = try MLModel(contentsOf: modelURL)
let input = try MLMultiArray(shape: [1, 224, 224, 3], dataType: .float32)
let prediction = try model.prediction(from: input)
Antes de 2021, Core ML usaba el formato .mlmodel — un archivo binario que contenía todos los pesos y metadatos del modelo. A partir de Xcode 13 y Core ML 4, Apple presentó el nuevo formato .mlpackage — una estructura de paquete basada en un directorio que contiene el modelo, metadatos, descripciones de entradas/salidas y archivos de pre y postprocesamiento en JSON. mlpackage admite versionado con git, lo que simplifica el desarrollo en equipo. La conversión de .mlmodel a .mlpackage se realiza con la utilidad Xcode Model Compiler o el script coremltools en Python.
La conversión de modelos de frameworks externos a Core ML se realiza con la biblioteca coremltools en Python. coremltools admite la importación de modelos de TensorFlow 1.x/2.x (SavedModel, PB, HDF5), PyTorch (TorchScript, modelos trazados/scripteados), Keras (H5), ONNX y los creados con Create ML. El pipeline de conversión estándar incluye tres pasos: carga del modelo en su formato original, conversión a MIL (Model Intermediate Language) — la representación interna de Core ML, y exportación a .mlpackage.
import coremltools as ct
model = ct.converters.pytorch.convert(
source = "model.pt",
inputs = [ct.TensorType(shape=(1, 3, 224, 224))]
)
model.author = "IT Sectr"
model.short_description = "Image classifier"
model.save("MyModel.mlpackage")
Después de la conversión, debe verificar la precisión del modelo comparando las predicciones del modelo original y del modelo Core ML convertido con los mismos datos. La desviación aceptable no supera 1e-3 (0.1%) para Float32 y 1e-2 (1%) para Float16/Int8. coremltools proporciona la utilidad ct.utils.compare_models() para la comparación automática. Si la desviación supera la norma, puede haber un problema con operaciones no compatibles — deben reemplazarse con capas personalizadas o simplificar el modelo.
La optimización de un modelo Core ML es el proceso de reducir el tamaño del modelo y aumentar la velocidad de inferencia sin una pérdida significativa de precisión. Apple proporciona varias herramientas de optimización integradas en coremltools y Xcode: cuantización (reducción de precisión de pesos), poda (eliminación de neuronas insignificantes), eliminación de capas redundantes y fusión de capas para reducir el grafo computacional.
La cuantización reduce el tamaño del modelo aproximadamente 2 veces (Float16) o 4 veces (Int8) en comparación con Float32. Core ML admite tres modos de cuantización: cuantización posterior al entrenamiento (PTQ) con un conjunto de datos de calibración, durante la conversión a través de coremltools y entrenamiento consciente de la cuantización (QAT). Para la mayoría de los modelos de visión por computadora, PTQ a Float16 produce una pérdida de precisión inferior al 0.5% mientras duplica la velocidad de inferencia.
Xcode proporciona la herramienta Core ML Model Profiler, que permite medir el rendimiento del modelo en varios dispositivos en el simulador o en un dispositivo real. El perfilador muestra el tiempo de ejecución de cada capa, la carga del backend (ANE/GPU/CPU), el uso pico de memoria y los cuellos de botella del modelo. Según Apple Performance Optimization Guide, más del 80% de los modelos tienen al menos una capa que funciona significativamente más lenta que el resto (anomalía de capa), que se puede optimizar mediante reemplazo o fusión.
Veamos la integración de un modelo Core ML entrenado en una aplicación iOS con Swift. Después de añadir el archivo .mlpackage al proyecto de Xcode (arrastrándolo o mediante Swift Package Manager), Xcode genera automáticamente una clase de modelo Swift con entradas y salidas tipadas. El desarrollador no necesita analizar los datos de entrada manualmente — la clase generada acepta UIImage, MLMultiArray, String u otros tipos según los metadatos del modelo.
import CoreML
import Vision
guard let model = try? VNCoreMLModel(
for: MyImageClassifier().model
) else { return }
let request = VNCoreMLRequest(model: model) { request, error in
guard let results = request.results
as? [VNClassificationObservation]
else { return }
if let topResult = results.first {
print("Class: \(topResult.identifier)")
print("Confidence: \(topResult.confidence)")
}
}
let handler = VNImageRequestHandler(
cgImage: image.cgImage!,
options: [:]
)
try handler.perform([request])
Al integrar Core ML, es necesario implementar el manejo de errores: el modelo puede no cargarse debido a incompatibilidad con el dispositivo (versión de iOS demasiado antigua), falta de memoria o corrupción del archivo del modelo. Se recomienda implementar una lógica de fallback: si el modelo no se carga en formato Int8 cuantizado, cargar la versión Float16, y si tampoco se carga — Float32. Según Apple Crash Analytics, más del 5% de los fallos de aplicaciones ML son causados por una carga incorrecta del modelo.
Core ML y Create ML son dos herramientas complementarias del ecosistema Apple ML. Core ML se encarga de la ejecución de modelos en el dispositivo (inferencia), mientras que Create ML se encarga del entrenamiento de modelos. Los modelos creados en Create ML se exportan específicamente al formato Core ML (.mlpackage) para su posterior integración en aplicaciones. En términos de desarrollo web, Core ML es el navegador (ejecución) y Create ML es el IDE para escribir código (entrenamiento).
| Parámetro | Core ML | Create ML |
|---|---|---|
| Propósito | Ejecución de modelos (inferencia) | Entrenamiento de modelos |
| Plataforma | iOS, iPadOS, macOS, watchOS, tvOS | macOS (solo) |
| Formato | .mlpackage (consume) | .mlpackage (crea) |
| Código | API Swift / Objective-C | UI (Xcode) o API Swift |
| Usuario | Desarrollador de aplicaciones | Desarrollador / Científico de datos |
Preguntas frecuentes
Core ML es el framework de aprendizaje automático de Apple para ejecutar modelos ML preentrenados en dispositivos iOS, iPadOS, macOS, watchOS y tvOS. Admite redes neuronales, árboles de decisión y regresiones, seleccionando automáticamente el backend de cómputo óptimo (Neural Engine, GPU o CPU).
TensorFlow es un framework universal para entrenar y ejecutar modelos en servidores y dispositivos móviles. Core ML es un motor especializado para ejecutar (no entrenar) modelos exclusivamente en dispositivos Apple con máximo rendimiento mediante optimización específica del hardware (ANE, GPU, Metal). TensorFlow Mobile ya no es compatible con iOS — Apple recomienda Core ML para todas las tareas ML en sus plataformas.
La conversión se realiza con la biblioteca coremltools en Python: exporte el modelo PyTorch a TorchScript (torch.jit.trace) y luego use ct.converters.pytorch.convert() para crear .mlpackage. coremltools asigna automáticamente las capas de PyTorch a las capas compatibles de Core ML y optimiza el grafo para ANE.
Core ML funciona en todos los iPhone con iOS 11 y posteriores. Sin embargo, el rendimiento depende del hardware: iPhone 5s/6 — solo CPU (inferencia lenta), iPhone 8/X — GPU (Metal), iPhone Xs y posteriores — Neural Engine (rendimiento máximo de hasta 15.8 TOPS en A17 Pro). Para obtener el mejor rendimiento, se recomienda establecer una versión mínima de iOS 12+.
El formato moderno es .mlpackage (un directorio que contiene el modelo, metadatos y descripciones de entradas/salidas). El formato heredado es .mlmodel (un archivo binario único). Xcode convierte automáticamente .mlmodel a .mlpackage durante la compilación, pero para proyectos nuevos se recomienda usar .mlpackage directamente.
Resumen
Desarrollaremos una aplicación móvil llave en mano
IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.
Lea también