Core ML
También: CoreML, Apple Core ML
Actualizado el
Definición
Core ML es el framework de Apple para ejecutar modelos de aprendizaje automático dentro de una app, en el dispositivo. Usa la CPU, la GPU y el Neural Engine, y no necesita conexión a la red para hacer una predicción.
Core ML forma parte de los sistemas de Apple desde 2017, con macOS 10.13 e iOS 11. Una app le pasa un modelo y unos datos de entrada, como audio, una imagen o texto, y Core ML devuelve la respuesta del modelo. Dónde se hacen los cálculos lo decide Core ML.
Core ML no se instala ni se abre. Forma parte de macOS. Te encuentras el nombre en la descripción de una app, en el nombre de archivo de un modelo o cuando una descarga dice que contiene pesos de Core ML.
Qué hace
La descripción de Apple: Core ML ofrece una representación unificada para todos los modelos, y una app lo usa para hacer predicciones, y para entrenar modelos o hacerles ajuste fino, todo en el dispositivo de la persona.
Sobre el rendimiento, Apple dice que Core ML optimiza el rendimiento en el dispositivo aprovechando la CPU, la GPU y el Neural Engine, a la vez que reduce al mínimo su uso de memoria y su consumo de energía. El Neural Engine es la parte de los chips de Apple diseñada para este tipo de cálculos, y Core ML es la forma habitual de que una app llegue a él.
Por qué importa que sea en el dispositivo
Apple lo argumenta así: ejecutar un modelo estrictamente en el dispositivo de la persona elimina cualquier necesidad de conexión a la red, lo que ayuda a mantener privados sus datos y a que la app responda con rapidez.
Para la voz, eso significa que el audio no tiene que salir del Mac para convertirse en texto. Que una app concreta lo mantenga ahí depende de la app, pero el framework lo hace posible.
Los tipos de archivo
Los modelos de Core ML vienen en tres formas, y la extensión te dice cuál es.
- `.mlmodel`: el archivo original de definición del modelo.
- `.mlpackage`: el formato de paquete más reciente, que guarda los pesos separados del programa. Se admite desde Xcode 13.
- `.mlmodelc`: un modelo compilado, que es lo que carga una app. Una carpeta con esta terminación dentro de una app o de sus descargas es un modelo de Core ML listo para ejecutarse.
De dónde vienen los modelos
La mayoría de los modelos se entrenan con otras herramientas y luego se convierten. Apple publica Core ML Tools para eso, para convertir modelos de bibliotecas de entrenamiento como PyTorch y TensorFlow al formato de Core ML.
Las mismas herramientas pueden comprimir un modelo durante la conversión, mediante cuantización o paletización, lo que lo hace más pequeño y a menudo más rápido en el Neural Engine.
Core ML y MLX
Apple describe los dos de forma distinta. Core ML sirve para integrar modelos en apps. MLX es un framework de arrays de código abierto para experimentar con modelos generativos, entrenarlos y hacerles ajuste fino en Apple silicon. La documentación de Apple dice que MLX se ejecuta en la CPU y en la GPU, mientras que Core ML también puede usar el Neural Engine.
Las páginas de Apple remiten ahora también a los desarrolladores que trabajan con las arquitecturas de modelos más recientes a un framework aparte, Core AI. Core ML sigue siendo la forma consolidada de ejecutar un modelo en una app.
Preguntas que hace la gente.
¿Para qué se usa Core ML?
Para ejecutar modelos de aprendizaje automático dentro de apps en dispositivos de Apple: reconocer voz, clasificar imágenes, leer texto y tareas parecidas, sin enviar los datos a un servidor.
¿Necesita Core ML internet?
No. Apple dice que ejecutar un modelo estrictamente en el dispositivo elimina cualquier necesidad de conexión a la red.
¿Usa Core ML el Neural Engine?
Sí. Apple dice que Core ML aprovecha la CPU, la GPU y el Neural Engine.
¿Qué es un archivo .mlmodelc?
Un modelo de Core ML compilado, la forma que una app carga y ejecuta.
¿Qué diferencia hay entre Core ML y MLX?
Apple describe Core ML como la forma de integrar modelos en apps, y MLX como un framework de arrays para experimentar con modelos generativos y hacerles ajuste fino en Apple silicon. Core ML puede usar el Neural Engine; MLX se ejecuta en la CPU y en la GPU.
¿Está Core ML en los Macs con Intel?
Sí. Core ML forma parte de macOS desde la versión 10.13. El Neural Engine solo está en Apple silicon, así que en un Mac con Intel usa la CPU y la GPU.