En un paso importante para fomentar la colaboración y la innovación en el campo del aprendizaje automático (Machine Learning), Apple ha presentado MLX, un framework de matriz de código abierto diseñado específicamente para el aprendizaje automático en Apple Silicon.
El framework MLX está desarrollado por el estimado equipo de investigación de aprendizaje automático de Apple, MLX promete una experiencia refinada para los investigadores, mejorando la eficiencia del entrenamiento y la implementación del modelo.
Así pone en la documentación:
MLX está diseñado por investigadores de aprendizaje automático para investigadores de aprendizaje automático. Se pretende que el framework sea fácil de usar, pero aún así eficiente para entrenar e implementar modelos. El diseño del framework en sí también es conceptualmente simple. Pretendemos facilitar a los investigadores la ampliación y mejora de MLX con el objetivo de explorar rápidamente nuevas ideas.
La idea es agilizar la capacitación y la implementación de modelos de ML para los investigadores que utilizan hardware de Apple. MLX es un marco de matriz similar a NumPy diseñado para un aprendizaje automático eficiente y flexible en los procesadores de Apple. Esta no es una herramienta orientada al consumidor. Proporciona a los desarrolladores lo que parece ser un entorno poderoso dentro del cual construir modelos de ML. La compañía también parece haber trabajado para adoptar los lenguajes que los desarrolladores quieren usar, en lugar de imponerles un lenguaje, y aparentemente inventó poderosas herramientas LLM (Large Language Model) en el proceso.
Awni Hannun, que pertenece al grupo de investigación de Machine Learning de Apple desde octubre de 2022 (anteriormente trabajó para Zoom, Facebook y Baidu), ha publicado un tweet:
The video is a Llama v1 7B model implemented in MLX and running on an M2 Ultra.
More here: https://t.co/gXIjEZiJws
* Train a Transformer LM or fine-tune with LoRA
* Text generation with Mistral
* Image generation with Stable Diffusion
* Speech recognition with Whisper pic.twitter.com/twMF6NIMdV— Awni Hannun (@awnihannun) December 5, 2023
APIs familiares para desarrolladores
El diseño de MLX está inspirado en marcos existentes como PyTorch, Jax y ArrayFire. Sin embargo, MLX agrega soporte para un modelo de memoria unificada, lo que significa que los arreglos viven en memoria compartida y las operaciones se pueden realizar en cualquiera de los tipos de dispositivos compatibles sin realizar copias de datos. El equipo explica: «La API de Python sigue de cerca a NumPy con algunas excepciones. MLX también tiene una API de C++ con todas las funciones que sigue de cerca la API de Python«.
Apple ha proporcionado una colección de ejemplos de lo que puede hacer MLX. Esto parece confirmar que la empresa ahora cuenta con un modelo de lenguaje altamente eficiente , potentes herramientas para la generación de imágenes mediante difusión estable y reconocimiento de voz de alta precisión. Esto coincide con las afirmaciones de principios de este año y algunas especulaciones sobre la creación de mundos virtuales infinitos para futuras experiencias de Vision Pro. En última instancia, Apple parece querer democratizar el aprendizaje automático. «MLX está diseñado por investigadores de aprendizaje automático para investigadores de aprendizaje automático«, explica el equipo.
Los paquetes de nivel superior como mlx.nn y mlx.optimizers simplifican la creación de modelos al cumplir con las convenciones de PyTorch. Esta alineación con los frameworks establecidos facilita una transición fluida para los desarrolladores.
Funcionalidad mejorada
Una de las características destacadas de MLX es la introducción de transformaciones de funciones componibles. Este enfoque innovador permite la diferenciación automática, la vectorización y la optimización de gráficos de cálculo. Al incorporar estas funcionalidades, MLX permite a los desarrolladores mejorar las capacidades de sus modelos de manera eficiente.
Según Macworld (que dio la primicia), a primera vista, MLX parece relativamente bueno y (como se explica en GitHub ) está equipado con varias características que lo distinguen, por ejemplo, el uso de API familiares y también:
- Transformaciones de funciones componibles: MLX tiene transformaciones de funciones componibles para diferenciación automática, vectorización automática y optimización de gráficos de cálculo.
- Cálculo diferido : los cálculos en MLX son diferidos (una técnica similar a la de Lazy Load en HTML). Las matrices sólo se materializan cuando es necesario.
- Construcción de gráficos dinámicos : los gráficos de cálculo en MLX se construyen dinámicamente. Cambiar las formas de los argumentos de las funciones no provoca compilaciones lentas y la depuración es simple e intuitiva.
- Multidispositivo : las operaciones se pueden ejecutar en cualquiera de los dispositivos compatibles (actualmente, la CPU y la GPU).
- Memoria unificada : según el modelo de memoria unificada, las matrices en MLX viven en la memoria compartida. Las operaciones en matrices MLX se pueden realizar en cualquiera de los tipos de dispositivos compatibles sin mover datos.