Los modelos de inteligencia artificial de la red neuronal utilizados en aplicaciones como el procesamiento de imágenes médicas y el reconocimiento de voz realizan operaciones en estructuras de datos enormemente complejas que requieren una enorme cantidad de cálculo para procesar. 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 cálculo, ancho de banda y almacenamiento de memoria necesaria para operaciones de aprendizaje automático.
Las técnicas existentes para optimizar los algoritmos pueden ser engorrosos y generalmente solo permiten a los desarrolladores capitalizar 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 del MIT los investigadores aumentó la velocidad de los cálculos en casi 30 veces en algunos experimentos.
Debido a 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 el aprendizaje profundo, pero desean mejorar la eficiencia de los algoritmos de IA que usan para procesar datos. Además, el sistema podría tener aplicaciones en informática científica.
“Durante mucho tiempo, capturar estas redundancias de datos ha requerido mucho 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, un postdoc de MIT y coautor de un documento sobre el sistema, que se presentará en el Simposio Internacional sobre Generación de Código y Optimización.
Se une al documento por la autora principal Radha Patel ’23, SM ’24 y el autor principal Saman Amarasinghe, profesor en el Departamento de Ingeniería Eléctrica y Ciencias de la Computación (EEC) e investigador principal en el Laboratorio de Informática e Inteligencia Artificial ( CSail).
Cortar el cálculo
En el aprendizaje automático, los datos a menudo se representan y manipulan 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 los tensores sean más difíciles de manipular.
Los modelos de aprendizaje profundo realizan operaciones en tensores que utilizan multiplicación y adición de matriz repetida: este proceso es cómo las redes neuronales aprenden patrones complejos en los datos. El gran volumen de cálculos que deben realizarse en estas estructuras de datos multidimensionales requieren una enorme cantidad de cálculo 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 al eliminar los cálculos redundantes.
Por ejemplo, si un tensor representa datos de revisión del usuario de un sitio de comercio electrónico, ya que no todos los usuarios revisaron cada producto, la mayoría de los valores en ese tensor son probablemente cero. Este tipo de redundancia de datos se llama dispersión. Un modelo puede ahorrar tiempo y cálculo al almacenar y operar solo en valores distintos de cero.
Además, a veces un tensor es simétrico, lo que significa que la mitad y la mitad superior de la estructura de datos son iguales. En este caso, el modelo solo necesita operar en la mitad, reduciendo la cantidad de cálculo. Este tipo de redundancia de datos se llama 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 construyeron un nuevo compilador, que es un programa de computadora que traduce un código complejo en un idioma más simple que puede procesar una máquina. Su compilador, llamado Systec, puede optimizar los cálculos aprovechando automáticamente tanto la escasez como la simetría en los tensores.
Comenzaron el proceso de construcción de Systec identificando tres optimizaciones clave que pueden realizar usando simetría.
Primero, 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. Finalmente, si los resultados intermedios de las operaciones tensoras son simétricas, el algoritmo puede omitir los cálculos redundantes.
Optimizaciones simultáneas
Para usar Systec, un desarrollador ingresa 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 solo valores de datos distintos de cero, optimizando el programa de dispersión.
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 su tensor tiene más dimensiones, puede obtener aún más ahorros en el cálculo ”, dice Ahrens.
Los investigadores demostraron aceleras de casi un factor de 30 con 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 quiere procesar datos utilizando un algoritmo que escribe desde cero.
En el futuro, los investigadores quieren integrar SYSTEC en los sistemas de compilador tensor dispersos existentes para crear una interfaz perfecta para los usuarios. Además, les gustaría usarlo para optimizar el código para programas más complicados.
Este trabajo está financiado, en parte, por Intel, la National Science Foundation, la Agencia de Proyectos de Investigación Avanzada de Defensa y el Departamento de Energía.