¿Cómo va a afectar el M1 de Apple al aprendizaje automático? (Parte 1)

Apple presentó el primer procesador de silicio de Apple para ordenadores de sobremesa/portátiles basado en los procesadores de la serie A de Apple en la línea de iPad y iPhone. Presentaron este nuevo procesador junto con tres nuevos Macs, incluyendo el nuevo M1 MacBook Air, M1 MacBook Pro y M1 Mac mini.

Estos nuevos Macs M1 anuncian increíbles especificaciones utilizando el nuevo procesador M1, velocidades de la CPU hasta 3,5 veces más rápidas. Velocidades de la GPU hasta 5 veces más rápidas, y utilizando el nuevo Neural Engine, un aprendizaje automático hasta 9 veces más rápido. En cuanto a la duración de la batería, el MacBook Air viene anunciando 15 horas de navegación web inalámbrica y 18 horas de reproducción de películas (una pequeña advertencia que tienen es la reproducción de películas utilizando la aplicación Apple TV). No estoy seguro de si eso supone una diferencia, pero sólo el tiempo lo dirá cuando alguien en Youtube lo pruebe. En cuanto al MacBook Pro, la duración de su batería es de 17 horas de navegación web inalámbrica y 20 horas de reproducción de películas con la aplicación Apple TV. No sé ustedes, pero 20 horas es increíble. Actualmente tengo el MacBook Pro de 16″ i9, y me pareció que la duración de la batería de 11 horas de ese era notable.

Arquitectura M1

La nueva arquitectura M1 está hecha con la última tecnología de 5nm. Tiene 1 CPU, 1 GPU, 1 motor neural y unidades de DRAM integradas en el procesador. Como la RAM está integrada en el procesador, todos los componentes acceden a la misma memoria. ¿Qué significa esto? Bueno, significa que se acabó la pérdida de rendimiento debida a mover y remodelar la memoria de un componente a otro. Se acabó el intentar averiguar si tu modelo puede encajar en las especificaciones de memoria de la GPU.

CPU

La CPU es de 8 núcleos, siendo 4 núcleos de alto rendimiento para el procesamiento de datos y tareas que necesitan un alto rendimiento y 4 núcleos apodados «e-cores» o núcleos de alta eficiencia que proporcionan un procesamiento con más eficiencia y menor consumo de energía.

En el sitio web, Apple no afirma ninguna velocidad de la CPU; sin embargo, un listado de Geekbench publicado en gadgets.ndtv.com publica una frecuencia base de 3,2GHz que es superior a la frecuencia base del procesador Intel Core i9-9880H que se encuentra en el Macbook Pro de 16″.

Comparemos algunas puntuaciones de Geekbench del nuevo procesador M1.

Comparando los resultados de 4 CPUs muy populares, el Apple M1 supera a todos ellos, incluso al procesador i9 del Macbook Pro de 16″ cómodamente en la puntuación de un solo núcleo. No es hasta que llegas al multinúcleo donde empiezas a ver que otros, especialmente los procesadores de AMD, compiten con el M1.

¿Qué significa todo esto para el aprendizaje automático?

Bueno, en primer lugar, el hecho de que la RAM se comparta entre la CPU y la GPU debería aumentar el rendimiento debido a la falta de latencia en la transferencia de datos de la RAM de la CPU a la RAM de la GPU.

En cuanto a la puntuación de un solo núcleo frente a la puntuación de varios núcleos, la mayoría de las bibliotecas de preprocesamiento de datos no aprovechan los múltiples núcleos del procesador; por lo tanto, la puntuación de varios núcleos hace muy poco por el preprocesamiento de datos. Tener una mejor puntuación de un solo núcleo hará mejor en el preprocesamiento de datos.

GPU

La GPU integrada es una GPU de 8 núcleos, que puede ejecutar 25.000 hilos simultáneamente. Apple afirma que se trata de los «gráficos integrados más rápidos del mundo en un ordenador personal» con un rendimiento de 2,6 TFLOPS (FP32). Sin duda, esto es impresionante para una GPU integrada, pero nosotros, como científicos de datos, estamos interesados en el rendimiento general.

Veamos algunos otros para comparar.

Viendo estos valores, probablemente funcionaría bien para el procesamiento de vídeo, el procesamiento de imágenes, Apple Arcade o los juegos. La GPU no funcionará bien para el aprendizaje automático. Podría, pero no el rendimiento que yo y tú probablemente estamos buscando. Algo como el Razer Blade Pro 17 con la RTX 2080 Super lo haría mejor con 11,2 TFLOPS. Tendrías razón con ese pensamiento. Sin embargo, Apple también ha añadido en el M1 un motor neuronal integrado en el procesador específicamente para la eficiencia del aprendizaje automático.

Motor neuronal

El procesador M1 también trae el motor neuronal de Apple, líder en la industria, diseñado específicamente para los procesos de aprendizaje automático. El motor neuronal ya se había incorporado al procesador de la serie A del iPad y el iPhone, pero hasta ahora no estaba en el Mac.

Apple afirma que su nuevo motor neuronal de 16 núcleos ofrece 11 TOPS (trillones de operaciones por segundo).

*¿11 TOPS? ¿Quieren decir 11 TFLOPS? Si son 11 TFLOPS, podría ser un competidor en el sector.

Cuando se combina esa velocidad con la memoria integrada (latencia reducida) y 20 horas de duración de la batería, podría ser un cambio de juego para los científicos de datos en movimiento. No solo obtienes una GPU comparable a una RTX 2080 Super, una CPU que tiene una de las mejores puntuaciones de un solo núcleo en la industria, un factor de forma del MacBook Air, sino también 18-20 horas de duración de la batería. Vaya¡

Otra idea sobre esto sería que algunos de los frameworks de ML pudieran aprovechar tanto la GPU como el motor neuronal para entrenar y realizar inferencia.

Apple M1 y el soporte de software

Ahora hablemos del soporte de software. Mis preguntas aquí son:

¿Funciona M1 con algunos de los software más utilizados? (por ejemplo, Python, VSCode, Jetbrains, Anaconda, Excel, Juypter Notebooks)

El Silicio de Apple utiliza una arquitectura de conjunto de instrucciones basada en ARM. Python ya se ejecuta en muchas otras plataformas, incluyendo ARM, MIPS, PowerPC, i386 y x86-64. No debería haber problemas con Python.

Juypter Notebook

Ahora mismo no está claro si los portátiles Juypter funcionan con el procesador M1 de Apple. He encontrado un enlace que está ejecutando cuadernos juypter en una arquitectura ARM usando docker. El tiempo lo dirá. Tal vez VSCode una vez que está listo para la producción tendrá una extensión Juypter que funcionará.

VSCode

Microsoft anunció el 10 de noviembre de 2020, en Twitter, que están trabajando en una construcción universal de VSCode para el Apple M1. Al momento de escribir esto, tienen la build experimental de ARM en su sitio ubicado aquí.

Microsoft Excel

Microsoft también anunció el 11 de noviembre de 2020, que lanzará una nueva build Universal de su beta de Mac Office 2019 que soporta el nuevo procesador Apple M1. De hecho, Erik Schwiebert anunció en Twitter que Microsoft lanzaría una versión beta ese mismo día en el canal beta. Sin embargo, no anunciaron ninguna fecha para el lanzamiento público.

¿Funciona M1 con frameworks de ML (es decir, Tensorflow, Scikit-Learn, Keras, etc.)?

En el evento de Apple M1, Apple mencionó el soporte para Tensorflow. Todavía no he encontrado ninguna especificación en torno a esa afirmación. El framework de Tensorflow está construido para la arquitectura x86_64 y las GPUs Nvidia. No hay otras construcciones para ARM o la arquitectura M1 de Apple.

Algunos afirman que se puede realizar la inferencia de los modelos de Tensorflow aprovechando el convertidor de Apple. Aquí hay un enlace a un artículo que habla de la conversión de modelos TF a CoreML. Algunos otros están pensando que se refieren a Swift for Tensorflow.

Ahora mismo se desconoce, y no encuentro nada que haga referencia a ello.

Scikit-Learn

¿Funcionará Scikit-learn con el Apple M1? Creo que la respuesta corta es que tal vez… Entonces, lo que sabemos es que Python funcionará para la arquitectura ARM del M1, y Scikit-learn no aprovecha ni utiliza el soporte de la GPU. Así que en teoría, Scikit-learn debería funcionar para el Apple M1.

Podría seguir pero estaríamos aquí eternamente con todas las librerías usadas en ML (PyTorch, Keras, etc.)

Sinopsis

  • Apple M1: CPU de 8 núcleos, GPU de 8 núcleos, motor neuronal de 16 núcleos con memoria integrada en el chip.
  • La CPU del Apple M1 tiene una de las puntuaciones más altas de un solo núcleo con 1687; buena puntuación en la puntuación multinúcleo con 7433 en comparación con el Intel i9-9880H (Macbook Pro 16″): 1029 en un solo núcleo, 6012 en la puntuación multinúcleo.
  • La GPU del Apple M1 llega a los 2,6 TFLOPS en comparación con la Nvidia GeForce RTX 2080 Super (portátiles Razer) con 11,2 TFLOPS.
  • El motor neuronal del Apple M1 anuncia 11 billones de operadores por segundo. La pregunta aquí es, ¿es eso TFLOPS (FP32)? Esto se compara con la Nvidia GeForce RTX 2080 Super a 11,2.
  • ¿Tiene el Apple M1 soporte de software?

Descargo de responsabilidad: Todavía no he tenido en mis manos un Apple M1. Lo he pedido pero aún no lo he recibido. Sólo estoy utilizando la investigación para hacer mis afirmaciones sobre el soporte de software. No haga compras basadas en mis resultados, por favor, realice su propia investigación antes de hacer una compra.

Una vez que reciba mi Apple M1 MacBook Pro, voy a escribir una nueva historia con mis conclusiones.

Actualización:

Sólo para una actualización, aquí está la prensa oficial de Docker en el chip M1 y el apoyo.

La segunda parte de este artículo se puede encontrar aquí.

Deja un comentario