El Portal de las Tecnologías para la Innovación

Un sistema fácil de usar puede ayudar a los desarrolladores a crear simulaciones y modelos de IA más eficientes

Al generar automáticamente código que aprovecha dos tipos de redundancia de datos, el sistema ahorra ancho de banda, memoria y cálculo.

Los modelos de inteligencia artificial basados ​​en redes neuronales que se utilizan en aplicaciones como el procesamiento de imágenes médicas y el reconocimiento de voz realizan operaciones sobre estructuras de datos sumamente complejas que requieren una enorme cantidad de cálculos para su procesamiento. Esta es una de las razones por las que los modelos de aprendizaje profundo consumen tanta energía.

Para mejorar la eficiencia de los modelos de IA, los investigadores del MIT crearon un sistema automatizado que permite a los desarrolladores de algoritmos de aprendizaje profundo aprovechar simultáneamente dos tipos de redundancia de datos. Esto reduce la cantidad de computación, ancho de banda y almacenamiento de memoria necesarios para las operaciones de aprendizaje automático.

Las técnicas existentes para optimizar algoritmos pueden ser engorrosas y, por lo general, solo permiten a los desarrolladores aprovechar la escasez o la simetría: dos tipos diferentes de redundancia que existen en las estructuras de datos de aprendizaje profundo.

Al permitir que un desarrollador construya un algoritmo desde cero que aproveche ambas redundancias a la vez, el enfoque de los investigadores del MIT aumentó la velocidad de los cálculos casi 30 veces en algunos experimentos.

Dado que el sistema utiliza un lenguaje de programación fácil de usar, podría optimizar los algoritmos de aprendizaje automático para una amplia gama de aplicaciones. El sistema también podría ayudar a los científicos que no son expertos en aprendizaje profundo pero que desean mejorar la eficiencia de los algoritmos de IA que utilizan para procesar datos. Además, el sistema podría tener aplicaciones en la computación científica.

“Durante mucho tiempo, capturar estas redundancias de datos ha requerido un gran esfuerzo de implementación. En cambio, un científico puede decirle a nuestro sistema lo que le gustaría calcular de una manera más abstracta, sin decirle al sistema exactamente cómo calcularlo”, dice Willow Ahrens, posdoctora del MIT y coautora de un artículo sobre el sistema , que se presentará en el Simposio Internacional sobre Generación y Optimización de Código.

A ella se unen en el artículo la autora principal Radha Patel ’23, SM ’24 y el autor principal Saman Amarasinghe, profesor del Departamento de Ingeniería Eléctrica y Ciencias de la Computación (EECS) e investigador principal del Laboratorio de Ciencias de la Computación e Inteligencia Artificial (CSAIL).

Eliminando el cálculo

En el aprendizaje automático, los datos suelen representarse y manipularse como matrices multidimensionales conocidas como tensores. Un tensor es como una matriz, que es una matriz rectangular de valores dispuestos en dos ejes, filas y columnas. Pero a diferencia de una matriz bidimensional, un tensor puede tener muchas dimensiones o ejes, lo que hace que sea más difícil manipularlos.

Los modelos de aprendizaje profundo realizan operaciones sobre tensores mediante la multiplicación y la suma repetidas de matrices: este proceso es el que permite a las redes neuronales aprender patrones complejos en los datos. El gran volumen de cálculos que se deben realizar en estas estructuras de datos multidimensionales requiere una enorme cantidad de computación y energía.

Pero debido a la forma en que se organizan los datos en los tensores, los ingenieros a menudo pueden aumentar la velocidad de una red neuronal eliminando cálculos redundantes.

Por ejemplo, si un tensor representa datos de reseñas de usuarios de un sitio de comercio electrónico, dado que no todos los usuarios reseñaron todos los productos, es probable que la mayoría de los valores de ese tensor sean cero. Este tipo de redundancia de datos se denomina escasez. Un modelo puede ahorrar tiempo y cálculos si solo almacena y opera con valores distintos de cero.

Además, a veces un tensor es simétrico, lo que significa que la mitad superior y la mitad inferior de la estructura de datos son iguales. En este caso, el modelo solo necesita operar en una mitad, lo que reduce la cantidad de cálculos. Este tipo de redundancia de datos se denomina simetría.

“Pero cuando intentas capturar ambas optimizaciones, la situación se vuelve bastante compleja”, dice Ahrens.

Para simplificar el proceso, ella y sus colaboradores crearon un nuevo compilador, que es un programa informático que traduce código complejo a un lenguaje más simple que puede ser procesado por una máquina. Su compilador, llamado SySTeC, puede optimizar los cálculos aprovechando automáticamente tanto la escasez como la simetría de los tensores.

Comenzaron el proceso de construcción de SySTeC identificando tres optimizaciones clave que pueden realizar utilizando simetría.

En primer lugar, si el tensor de salida del algoritmo es simétrico, entonces solo necesita calcular la mitad de él. En segundo lugar, si el tensor de entrada es simétrico, entonces el algoritmo solo necesita leer la mitad de él. Por último, si los resultados intermedios de las operaciones con tensores son simétricos, el algoritmo puede omitir los cálculos redundantes.

Optimizaciones simultáneas

Para utilizar SySTeC, un desarrollador introduce su programa y el sistema optimiza automáticamente su código para los tres tipos de simetría. Luego, la segunda fase de SySTeC realiza transformaciones adicionales para almacenar únicamente valores de datos distintos de cero, optimizando el programa para lograr una mayor escasez.

Al final, SySTeC genera código listo para usar.

“De esta manera, obtenemos los beneficios de ambas optimizaciones. Y lo interesante de la simetría es que, como el tensor tiene más dimensiones, se pueden obtener incluso más ahorros en los cálculos”, afirma Ahrens.

Los investigadores demostraron aceleraciones de casi un factor de 30 con el código generado automáticamente por SySTeC.

Debido a que el sistema está automatizado, podría ser especialmente útil en situaciones en las que un científico desea procesar datos utilizando un algoritmo que está escribiendo desde cero.

En el futuro, los investigadores quieren integrar SySTeC en los sistemas de compilación de tensores dispersos existentes para crear una interfaz perfecta para los usuarios. Además, les gustaría utilizarlo para optimizar el código de programas más complejos.

Este trabajo está financiado, en parte, por Intel, la Fundación Nacional de Ciencias, la Agencia de Proyectos de Investigación Avanzada de Defensa y el Departamento de Energía. MIT News. A. Z. Traducido al español

Artículos relacionados

Scroll al inicio