miércoles, diciembre 27, 2023

MLX o ML Explore: El framework de Apple para Inteligencia Artificial

Tras haber sido evaluado durante todo este verano, Apple acaba de anunciar MLX o ML Explore, un framework para Machine Learning diseñado específicamente para Apple silicon. Este hecho marca un hito importante en la trayectoria de la empresa en el ámbito de la IA. Con MLX, Apple intenta posicionarse de manera estratégica en el competitivo mundo de la Inteligencia Artificial.


El diseño de MLX está inspirado en frameworks existentes como PyTorch o JAX, pero a diferencia de estos, ofrece un soporte para un modelo de memoria unificada, lo que significa que los arrays pueden vivir en memoria compartida y las operaciones pueden realizarse en cualquier tipo de dispositivo (CPU o GPU) sin tener que hacerse copias de datos, no como en otros frameworks donde por ejemplo es necesario mover estructuras de datos un dispositivo a otro.

Figura 2: Libro de Machine Learning aplicado a Ciberseguridad de
Carmen TorranoFran Ramírez, Paloma Recuero, José Torres y Santiago Hernández

La API Python ofrecida es muy similar a Numpy, con ligeras excepciones, además de ofrecer una API C++ también similar a la API Python, permitiendo accesibilidad para una amplia gama de desarrolladores con diferentes preferencias y experiencias.


Para poder realizar la instalación de MLX debes comprender algunos conceptos básicos. En esta página se puede consultar toda la documentación necesaria para empezar a utilizar este framework. En el caso de usar Python, simplemente habría que hacer pip install mlx. 

Figura 4: Libros de Python para Pentesters y Hacking con Python
de Daniel Echeverri publicados en 0xWord.

En este caso para poder utilizar este framework se necesita un chip de la serie M (Apple Silicon), una versión Python >=3.8 y MacOS >=13.3, aunque se recomienda bastante utilizar MacOS 14 (Sonoma). El paso más básico es la creación de un array. Para ello, importamos mlx.core:

import mlx.core as mx
Y ya podemos proceder a la creación del array:
a = mx.array([1, 2, 3, 4])
b = mx.array((9, 8, 7, 6))

Cuando creamos un array en MLX no hay que especificar su localización, ambos viven en memoria unificada. Como ya se ha comentado, a diferencia de otros frameworks, no es que los arrays se muevan a dispositivos (como a la GPU), sino que simplemente se especifica el dispositivo a utilizarse cuando ejecutas la operación deseada que hace uso de estos arrays:

mx.add(a, b, stream=mx.cpu)
mx.add(a, b, stream=mx.gpu)

Si no existen dependencias entre las operaciones estas se ejecutarán en paralelo. En caso de existir alguna, MLX gestionará automáticamente que se ejecute la operación dependiente al finalizar la independiente. En el repositorio oficial de MLX puedes ver ejemplos para generar imágenes con Stable Diffusion, generar texto con un modelo de lenguaje y transcribir audios con Whisper, entre otros.

Acercando la IA avanzada al iPhone

El pasado 12 de Diciembre de este año, Apple ha publicado el artículo "LLM in a flash: Efficient Large Language Model Inference with Limited Memory", destacando un posible avance significativo en el campo del procesamiento de lenguaje natural. Los LLMs se están convirtiendo en algo esencial como asistentes en nuestra vida cotidiana, pero su alta demanda de recursos computacionales y de memoria representa un desafío, especialmente en dispositivos con DRAM limitada. El artículo aborda esta problemática mediante un enfoque que consiste en almacenar los parámetros de los LLMs en memoria flash, transfiriéndolos a DRAM según sea necesario. Este método no solo mejora la eficiencia, sino que también permite la ejecución de modelos que exceden la capacidad de memoria DRAM disponible.


En el documento, se introducen dos técnicas principales para optimizar este proceso. La primera, conocida como Windowing, reduce la transferencia de datos mediante la reutilización de neuronas ya activadas. La segunda técnica, Row-Column Bundling, se adapta a las fortalezas de acceso secuencial de la memoria flash, permitiendo leer datos en bloques más grandes. Estas innovaciones colectivas posibilitan la ejecución de modelos hasta dos veces más grandes que la capacidad de DRAM disponible, logrando un aumento notable en la velocidad de inferencia, que varía entre 4 y 25 veces más rápido que los métodos de carga convencionales.

Este progreso abre nuevas perspectivas para la implementación eficaz de LLMs en dispositivos con restricciones de memoria, lo cual puede marcar un hito importante en la evolución de la tecnología de procesamiento de lenguaje natural. 
Con el nuevo framework MLX, que hace uso de todo el potencial del hardware de Apple, y las nuevas investigaciones que va realizando su área de Machine Learning Research, parece haber claras intenciones de aprovechar al máximo todo lo que la Inteligencia Artificial pueda ofrecer en todos sus dispositivos, desde el Mac al iPhone, pasando por el iPad.

Conclusiones

Aunque Apple ha mantenido un perfil relativamente bajo en el escenario de la IA Generativa hasta ahora, el lanzamiento de MLX podría ser un indicativo de futuras iniciativas y desarrollos. Es una declaración de intenciones, a través de ML Explore y las nuevas investigaciones Apple está facilitando un terreno fértil para la innovación y el desarrollo en IA, lo que podría tener implicaciones significativas para el futuro de la tecnología y su integración en nuestra vida cotidiana. 
Puedes consultar todas las investigaciones que realiza Apple en el mundo de la Inteligencia Artificial en la web del Machine Learning Research at Apple, donde publican sus trabajos el equipo de investigación en Machine Learning.

Un saludo,

Autor: Javier del Pino, intership en Ideas Locas

No hay comentarios:

Publicar un comentario