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

martes, diciembre 26, 2023

Todas las Codetalks de 2023 del equipo de Ideas Locas: Aprende IA, Web3, Pentesting, Hacking o Machine Learning

Durante este año 2023 hemos seguido con nuestros CodeTalks4Devs by  Ideas Locas. Ya llevamos varios años con estos pequeños vídeos de unos 20 a 25 minutos de duración donde contamos tanto nuevas tendencias en tecnología y ciberseguridad como nuestros proyectos que desarrollamos en el equipo de Ideas Locas
En este artículo os recopilo todos los que hemos publicado, cada uno hablando de un tema de actualidad tecnológica distinto y mostrando, como siempre, su punto de vista más técnico para animarte a hacer tus propios proyectos.


Tienes todos los CodeTalks en esta web, desde los últimos publicados este año hasta el acceso a las cinco temporadas anteriores, pero vamos a comentar uno a uno todos los que hemos publicado este año para que sepas un poco mejor el contenido de estos:

Episodio T06x04: Deep Fake Detector, detectando deepfakes

En este primer capítulo de la temporada, Fran Ramírez habla en profundidad de nuestra aplicación Deep Fake Detector o DFD. Este programa creado en Python y en Windows, está diseñado para integrar modelos que puedan detectar deepfakes pero siempre enfocado al a detección en tiempo real. 

Es decir, puedes abrir cualquier ventana que contenga un vídeo o una llamada de vídeoconferencia y con DFD es posible detectar si es una Deepfake o no. Una aplicación que estamos desarrollando y ampliando todos los días y cada vez tiene más y mejores motores de detección.

Episodio T06x05: Web3 Evolution

El segundo capítulo de esta temporada habla de la Web3. En él, Chema Garabito hace una introducción desde cero a la Web3, pasando por su evolución hasta el día de hoy. También nos cuenta los requisitos y herramientas más utilizadas dentro del mundo del Web3 para que puedas iniciarte en caso de no estar familiarizado con esta tecnología.

Figura 5: Vídeo de Web3 Evolution

Un vídeo perfecto para una primera introducción y entender la Web3 además de sus componentes como DAOBlockchainSmartContract, etcétera.

Episodio T06x06: LevelUp. Juega y descubre las vulnerabilidades.

Pablo González nos habla de nuevo de Web3 pero esta vez con un enfoque distinto. Pablo nos cuenta en este CodeTalk una plataforma desarrollada por Ideas Locas llamada LevelUp! La cual nos ofrece un reto muy interesante, un “captura la bandera” o “capture the flag” (CFP) para aprender practicando, sobre la seguridad de la Web3 y en concreto de los SmartContracts


Figura 6: Vídeo Codetalk sobre Level_Up!

La plataforma tiene varios niveles con diferentes retos a superar que a su vez nos ayudan a obtener buenas prácticas a la hora de programar SmartContracts. Un vídeo que no te puedes perder si te interesa la seguridad de la Web3 o para aprender desde la base, a programar de modo seguro.

Episodio T06x07: Tkinter a PySide: Explorando Interfaces Gráficas en Python

Python es sin duda el lenguaje de programación de moda a día de hoy, principalmente por el auge de la Inteligencia Artificial, donde tiene una posición dominante. Pero en este CodeTalkÁlvaro Núñez-Romero nos habla de un tema muy interesante: cómo crear interfaces gráficas en Python. Esto es importante a la hora de hacer llegar a más gente nuestra aplicación, creando un entorno amigable, efectivo y visualmente atractivo para utilizar nuestro programa.


Figura 7: Vídeo de Tkinter a PySide, Explorando Interfaces Gráficas en Python

Pero además hace un repaso desde Tkinter, pasando por PyQT para centrarse en otro que quizás no es tan conocido como los anteriores, PySide. No te pierdas este vídeo si quieres aprender cómo hacer una interfaz gráfica para tu programa en Python.

Episodio T06x08: Detectar Voces Clonadas en DeepFakes usando Machine Learning

Viendo lo sencillo que es hoy día clonar una voz, es importante comenzar a desarrollar aplicaciones que puedan detectarlas y así evitar todo tipo de engaños. Javier del Pino () no explica en este CodeTalk cómo podemos detectar voces clonadas.

Figura 8: Detectar Voces Clonadas en DeepFakes usando Machine Learning  

Episodio T06x09: Cómo crear tu propia aplicación de IA con Python

En este CodeTalk 4 Developers nuestro compañero Pablo Gómez Álvarez te contará en menos de media hora cómo podemos crear nuestra propia aplicación de Inteligencia Artificial usando nuestro querido lenguaje Python para utilizar Inteligencia Artificial, que ya sabemos lo bueno que es Python para pentesting y para hacer hacking con Python.

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

Para ello nos explicará cómo hacerlo utilizando un Pipeline, donde sólo tenemos que preocuparnos por la entrada y por la salida. El procesamiento de los datos interno del modelo IA seleccionado será tarea de HuggingFace y el pipeline. Pero, además, utilizando Gradio también nos explicará cómo implementarlo con su propia interfaz de usuario. 

Figura 10: Cómo crear tu propia aplicación de Inteligencia Artificial con Python

El ejemplo en concreto que nos muestra Pablo Gómez Álvarez se centra de forma práctica en cómo crear un pipeline de una aplicación para el análisis de sentimientos de texto desde cero y nos habla de cómo desplegar nuestra aplicación de Machine Learning paso a paso.

Episodio T06x10: Explorando las vulnerabilidades en SmartContracts

Ya hablamos de Level_Up! en otro CodeTalk pero esta vez Álvaro Núñez-Romero nos va a hablar específicamente de los SmartContracts y cómo utilizar la plataforma de level_up! para aprender sobre la seguridad de este elemento tan importante en la BlockChain.
 
Figura 11: Explorando las vulnerabilidades en SmartContracts

Episodio T06x11: Interactuar con la Inteligencia: Langchain en la intersección del lenguaje y la IA

En la Inteligencia Artificial, estamos presenciando una revolución en la que las barreras entre la comunicación humana y la máquina se están desvaneciendo, abriendo un mundo de posibilidades en cuanto a la interacción hombre-máquina. Y Héctor Cordobés de la Calle nos lo explica hablando de la importancia de LangChain y cómo utilizarlo.

Figura 12: Interactuar con la Inteligencia: Langchain en la intersección del lenguaje y la IA  
En este Codetalk nuestro compañero Javier Álvarez nos habla de las herramientas OpenSource creadas por el equipo de IdeasLocas incluidas en CrazyToolBox, que te facilitará el trabajo a la hora de investigar en la Web3 o incluso en la creación de SmartContracts. Podrás encontrar herramientas como conversores de unidades, codificador de selector de funciones, validador EIP55, etcétera, entre otras muchas que puedes ver en el siguiente vídeo.

Figura 13: CodeTalk sobre CrazyToolbox: Una navaja suiza para Web3 y BlockChain

Puedes encontrar más información de CrazyToolBox en el artículo que publicó nuestro compañero Álvaro Núñez-Romero por aquí, puedes conseguir la herramienta en  el repositorio de CrazyToolBox en GitHub

Temas y Proyectos de Ideas Locas

Pues estos son los CodeTalks que hemos publicado en 2023. El año que viene seguiremos publicando un episodio de estos CodeTalks cada mes para mantenerte al día en estos temas tan importantes dentro de la tecnología, y encantados de que nos propongáis ideas locas, proyectos o temas que tocar.


Así que no te los pierdas, y nos veremos en el próximo episodio, y recuerda que tienes todas las Codetalks4devs en una sola lista de Youtube, para que las puedas ver seguidas una tras otra... 

Figura 15: Sección Apps, Educación y Cultura

Y si quieres verlas en la tele, recuerda que en la Sección APPS -> Educación y Cultura, tienes la Living App de las CodeTalks by Ideas Locas de tu Movistar+

Figura 16: Living App Codetalks by Ideas Locas

Solo debes entrar en ella y tendrás acceso a todos los Webinars en formato Codetalk que vamos realizando.

Happy Hacking Hackers!!! 

Autor: Fran Ramírez, es investigador de seguridad y miembro del equipo de Ideas Locas en CDO en Telefónica, co-autor del libro "Microhistorias: Anécdotas y Curiosidades de la historia de la informática (y los hackers)", del libro "Docker: SecDevOps", también de "Machine Learning aplicado a la Ciberseguridad” además del blog CyberHades. Puedes contactar con Fran Ramirez en MyPublicInbox.

 Contactar con Fran Ramírez en MyPublicInbox

Entrada destacada

Hacking IA: Jailbreak, Prompt Injection, Hallucinations & Unalignment. Nuestro nuevo libro en 0xWord

Pocas veces me ha hecho tanta ilusión que saliera un nuevo libro en 0xWord como con este libro de " Hacking IA: Jailbreak, Prompt Inje...

Entradas populares