Apple M4: Desentrañando el Neural Engine

Fuentes: Inside the M4 Apple Neural Engine, Part 1: Reverse Engineering

Este artículo de maderix.substack.com explora el funcionamiento interno del Neural Engine (ANE) de Apple, específicamente el del chip M4 (codename H16G), a través de una ingeniería inversa colaborativa entre un humano y un modelo de IA (Claude Opus 4.6). El objetivo principal es comprender cómo funciona el ANE y cómo interactuar con él directamente, evitando la capa de abstracción de CoreML.

¿Qué es el Neural Engine? No es una GPU ni una CPU, sino un motor de ejecución de gráficos diseñado para acelerar tareas de inferencia de redes neuronales. A diferencia de los procesadores tradicionales, el ANE recibe un programa compilado (un grafo de operaciones) y lo ejecuta como una única operación atómica. Apple ha ido incrementando el número de núcleos desde el A11 (2 núcleos) hasta los 16 del M4, con características como una profundidad de cola de 127 solicitudes de evaluación y gestión dinámica de voltaje/frecuencia (DVFS).

El proceso de ingeniería inversa: El equipo utilizó diversas técnicas, incluyendo el análisis de clases Objective-C, el análisis de binarios compilados (E5 bundles) y el análisis de escalamiento para inferir la topología del hardware. Descubrieron más de 40 clases privadas dentro del framework AppleNeuralEngine.framework, incluyendo ANEClient, ANEModel y ANERequest, que permiten el acceso directo al pipeline de compilación, carga y evaluación del ANE, sin pasar por CoreML.

Funcionamiento y Lenguaje MIL: CoreML no utiliza formatos estándar como ONNX para enviar las redes neuronales al ANE, sino un lenguaje intermedio llamado MIL (Machine Learning Intermediate Language). MIL es una representación de código estático (SSA) con tipos y formas de tensores explícitos. El compilador de ANE transforma el código MIL en un formato binario E5, que no contiene el algoritmo de multiplicación de matrices en sí, sino una descripción de cómo encadenar primitivas de hardware predefinidas (convoluciones, multiplicaciones de matrices, operaciones elementales) parametrizadas por descriptores de tensores.

Aplicaciones y Consideraciones: Esta investigación abre la puerta a la posibilidad de entrenar modelos directamente en el ANE, algo que Apple no permite oficialmente. La comprensión del formato E5 y el acceso directo al ANE permiten optimizar el rendimiento y explorar nuevas posibilidades de programación. Sin embargo, es importante tener en cuenta que esta es una ingeniería inversa, por lo que el código y las técnicas pueden cambiar con futuras actualizaciones de hardware y software de Apple. El número de 38 TOPS (operaciones de punto flotante por segundo) anunciado por Apple se considera engañoso, ya que no refleja el rendimiento real en escenarios prácticos. El artículo sienta las bases para una serie de tres partes que profundizará en el análisis del ANE.