Los enfoques complementarios («HighLight» y «Tailors and Swiftiles») podrían mejorar el rendimiento de tareas exigentes de aprendizaje automático

Por: Adán Zewe

(MIT)-Investigadores del MIT y NVIDIA han desarrollado dos técnicas que aceleran el procesamiento de tensores dispersos, un tipo de estructura de datos que se utiliza para tareas informáticas de alto rendimiento. Las técnicas complementarias podrían dar como resultado mejoras significativas en el rendimiento y la eficiencia energética de sistemas como los modelos masivos de aprendizaje automático que impulsan la inteligencia artificial generativa.

Los tensores son estructuras de datos utilizadas por los modelos de aprendizaje automático. Ambos métodos nuevos buscan explotar de manera eficiente lo que se conoce como escasez (valores cero) en los tensores. Al procesar estos tensores, se pueden omitir los ceros y ahorrar tanto en cálculo como en memoria. Por ejemplo, cualquier cosa multiplicada por cero es cero, por lo que puede omitir esa operación. Y puede comprimir el tensor (no es necesario almacenar ceros) para que se pueda almacenar una porción mayor en la memoria del chip.

Sin embargo, existen varios desafíos para explotar la escasez. Encontrar valores distintos de cero en un tensor grande no es una tarea fácil. Los enfoques existentes a menudo limitan las ubicaciones de valores distintos de cero imponiendo un patrón de dispersión para simplificar la búsqueda, pero esto limita la variedad de tensores dispersos que se pueden procesar de manera eficiente.

Otro desafío es que el número de valores distintos de cero puede variar en diferentes regiones del tensor. Esto dificulta determinar cuánto espacio se requiere para almacenar diferentes regiones en la memoria. Para asegurarse de que la región se ajuste, a menudo se asigna más espacio del necesario, lo que provoca que el búfer de almacenamiento esté infrautilizado. Esto aumenta el tráfico de memoria fuera del chip, lo que aumenta el consumo de energía.

Los investigadores del MIT y NVIDIA idearon dos soluciones para abordar estos problemas. Por un lado, desarrollaron una técnica que permite que el hardware encuentre de manera eficiente valores distintos de cero para una variedad más amplia de patrones de escasez.

Para la otra solución, crearon un método que puede manejar el caso en que los datos no caben en la memoria, lo que aumenta la utilización del búfer de almacenamiento y reduce el tráfico de memoria fuera del chip.

Ambos métodos aumentan el rendimiento y reducen las demandas de energía de los aceleradores de hardware diseñados específicamente para acelerar el procesamiento de tensores dispersos.

“Normalmente, cuando se utilizan aceleradores de hardware más especializados o de dominio específico, se pierde la flexibilidad que se obtendría con un procesador de uso más general, como una CPU. Lo que destaca de estos dos trabajos es que demostramos que aún se puede mantener la flexibilidad y la adaptabilidad sin dejar de ser especializado y eficiente”, dice Vivienne Sze, profesora asociada en el Departamento de Ingeniería Eléctrica y Ciencias de la Computación (EECS) del MIT, miembro del Laboratorio de Investigación en Electrónica (RLE) y coautor principal de artículos sobre ambos avances.

Sus coautores incluyen a los autores principales Yannan Nellie Wu PhD ’23 y Zi Yu Xue, estudiante de posgrado en ingeniería eléctrica e informática; y el coautor principal Joel Emer, profesor del MIT de la práctica en ciencias de la computación e ingeniería eléctrica y miembro del Laboratorio de Ciencias de la Computación e Inteligencia Artificial (CSAIL), así como otros en NVIDIA. Ambos artículos se presentarán en el Simposio Internacional sobre Microarquitectura IEEE/ACM.

Destacado: Encontrar valores cero de manera eficiente

La escasez puede surgir en el tensor por diversas razones. Por ejemplo, a veces los investigadores “podan” piezas innecesarias de los modelos de aprendizaje automático reemplazando algunos valores del tensor con ceros, creando escasez. El grado de escasez (porcentaje de ceros) y la ubicación de los ceros pueden variar según los diferentes modelos.

Para que sea más fácil encontrar los valores restantes distintos de cero en un modelo con miles de millones de valores individuales, los investigadores a menudo restringen la ubicación de los valores distintos de cero para que sigan un patrón determinado. Sin embargo, cada acelerador de hardware suele estar diseñado para admitir un patrón de escasez específico, lo que limita su flexibilidad. 

Por el contrario, el acelerador de hardware que diseñaron los investigadores del MIT, llamado HighLight, puede manejar una amplia variedad de patrones de escasez y aún así funcionar bien cuando ejecuta modelos que no tienen valores cero.

Utilizan una técnica que llaman “escasez estructurada jerárquica” para representar eficientemente una amplia variedad de patrones de escasez que se componen de varios patrones de escasez simples. Este enfoque divide los valores de un tensor en bloques más pequeños, donde cada bloque tiene su propio patrón de dispersión simple (quizás dos ceros y dos distintos de ceros en un bloque con cuatro valores).

Luego, combinan los bloques en una jerarquía, donde cada colección de bloques también tiene su propio patrón simple y disperso (quizás un bloque cero y tres bloques distintos de cero en un nivel con cuatro bloques). Continúan combinando bloques en niveles más grandes, pero los patrones siguen siendo simples en cada paso.

Esta simplicidad permite a HighLight encontrar y omitir ceros de manera más eficiente, por lo que puede aprovechar al máximo la oportunidad de reducir el exceso de cálculo. En promedio, el diseño de su acelerador tenía un producto de retardo de energía (una métrica relacionada con la eficiencia energética) aproximadamente seis veces mejor que otros enfoques.

«Al final, el acelerador HighLight es capaz de acelerar eficientemente modelos densos porque no introduce muchos gastos generales y, al mismo tiempo, es capaz de explotar cargas de trabajo con diferentes cantidades de valores cero basándose en la escasez estructurada jerárquica», dijo Wu. explica.

En el futuro, ella y sus colaboradores quieren aplicar la escasez estructurada jerárquica a más tipos de modelos de aprendizaje automático y diferentes tipos de tensores en los modelos.

Tailors y Swiftiles: “overbooking” efectivo para acelerar las cargas de trabajo

Los investigadores también pueden aprovechar la escasez para mover y procesar datos de manera más eficiente en un chip de computadora.

Dado que los tensores suelen ser más grandes de lo que se puede almacenar en la memoria intermedia del chip, el chip solo toma y procesa una parte del tensora la vez. Los trozos se llaman mosaicos.

Para maximizar la utilización de ese búfer y limitar la cantidad de veces que el chip debe acceder a la memoria fuera del chip, que a menudo domina el consumo de energía y limita la velocidad de procesamiento, los investigadores buscan utilizar el mosaico más grande que quepa en el búfer.

Pero en un tensor disperso, muchos de los valores de datos son cero, por lo que puede caber en el búfer un mosaico aún más grande de lo que cabría esperar en función de su capacidad. No es necesario almacenar los valores cero.

Pero el número de valores cero puede variar entre diferentes regiones del tensor, por lo que también pueden variar para cada mosaico. Esto dificulta determinar el tamaño de mosaico que cabe en la zona de influencia. Como resultado, los enfoques existentes a menudo asumen de manera conservadora que no hay ceros y terminan seleccionando un mosaico más pequeño, lo que resulta en espacios en blanco desperdiciados en el buffer.

Para abordar esta incertidumbre, los investigadores proponen el uso de «overbooking» para permitirles aumentar el tamaño del mosaico, así como una forma de tolerarlo si el mosaico no se ajusta al buffer.

De la misma manera que una aerolínea sobrevende boletos para un vuelo, si todos los pasajeros se presentan, la aerolínea debe compensar a los que son expulsados ​​del avión. Pero normalmente no aparecen todos los pasajeros.

En un tensor disperso, se puede elegir un tamaño de mosaico tal que, por lo general, los mosaicos tengan suficientes ceros para que la mayoría todavía quepan en el búfer. Pero ocasionalmente, un mosaico tendrá más valores distintos de cero de los que caben. En este caso, esos datos se eliminan del búfer.

Los investigadores permiten que el hardware solo recupere los datos eliminados sin tomar ni procesar todo el mosaico nuevamente. Modifican el “final” del buffer para manejar esto, de ahí el nombre de esta técnica, Tailors.

Luego, también crearon un enfoque para encontrar el tamaño de los mosaicos que aprovecha el overbooking. Este método, llamado Swiftiles, estima rápidamente el tamaño de mosaico ideal para que un porcentaje específico de mosaicos, establecido por el usuario, tengan overbooking. (Los nombres “Tailors” y “Swiftiles” rinden homenaje a Taylor Swift, cuya reciente gira Eras estuvo plagada de códigos de preventa de boletos con overbooking).

Swiftiles reduce la cantidad de veces que el hardware necesita verificar el tensor para identificar un tamaño de mosaico ideal, lo que ahorra en cálculo. La combinación de Tailors y Swiftiles duplica con creces la velocidad y requiere sólo la mitad de las demandas de energía de los aceleradores de hardware existentes que no pueden soportar el overbooking.

“Swiftiles nos permite estimar el tamaño que deben tener estos mosaicos sin necesidad de múltiples iteraciones para refinar la estimación. Esto sólo funciona porque se admite el overbooking. Incluso si te equivocas por una cantidad decente, aún puedes obtener un poco de aceleración debido a la forma en que se distribuyen los valores distintos de ceros”, dice Xue.

En el futuro, los investigadores quieren aplicar la idea de overbooking a otros aspectos de la arquitectura informática y también trabajar para mejorar el proceso de estimación del nivel óptimo de overbooking.