Hardware especializado resuelve problemas de optimización de alto orden con computación en memoria

Hardware especializado resuelve problemas de optimización de alto orden con computación en memoria

Comparta este Artículo en:

El auge de la IA, el procesamiento gráfico, la optimización combinatoria y otras aplicaciones que requieren un uso intensivo de datos ha generado cuellos de botella en el procesamiento de datos, ya que cada vez se deben transferir mayores cantidades de datos entre la memoria y los elementos de cómputo de una computadora.

La distancia física es pequeña, pero el proceso puede ocurrir miles de millones de veces por segundo. Inevitablemente, la energía y el tiempo necesarios para mover tantos datos se acumulan.

En respuesta, los ingenieros informáticos están diseñando aceleradores de hardware especializados con arquitecturas innovadoras para mejorar el rendimiento de dichas aplicaciones.

En los esfuerzos anteriores para desarrollar hardware para problemas de optimización se han utilizado máquinas de Ising, una categoría de solucionadores de hardware que incorporan el modelo de Ising para encontrar el “estado fundamental” absoluto o aproximado, como en el caso del mínimo de energía.

Hasta ahora, las arquitecturas de hardware para las máquinas de Ising podían resolver de manera eficiente problemas con funciones objetivo polinómicas cuadráticas, pero no eran escalables a problemas de orden superior cada vez más relevantes, como el plegamiento de proteínas, la predicción de la estructura electrónica, la verificación de modelos de IA, el enrutamiento de circuitos, el diagnóstico de fallas y la programación.

Tinish Bhattacharya, estudiante de doctorado en el laboratorio de la Universidad de California en Santa Bárbara del profesor de ingeniería eléctrica e informática Dmitri Strukov, está realizando investigaciones en esta área.

Él y varios colaboradores de la industria, junto con colegas académicos en Europa y el colaborador industrial Hewlett Packard Labs, han desarrollado hardware especializado de computación de gradiente de funciones para acelerar la velocidad a la que se pueden resolver problemas complejos de optimización de orden superior.

La función objetivo de cualquier problema de optimización, como una carga de trabajo de IA, representa un ‘paisaje energético’ de N dimensiones, donde cada combinación de valores de variables representa un punto único en ese paisaje“, dijo Bhattacharya, y señaló:

“El objetivo es encontrar el conjunto de asignaciones de variables que corresponde al punto más bajo (o, de manera más general, lo más cercano posible al más bajo) en ese paisaje”.

A modo de paralelo, sugiere un paisaje real.

“Imagínese en lo alto de las montañas de Sierra Nevada y su objetivo es encontrar el punto más bajo en un área determinada, lo más rápido posible y con el menor esfuerzo posible.

Para lograrlo, obviamente, seguirá la pendiente descendente más pronunciada. La información sobre la inclinación y la dirección en la que se encuentra la pendiente más pronunciada con respecto a donde se encuentra está dada por el gradiente de la función en ese punto.

“Se procede dando pasos incrementales y recalculando el gradiente después de cada uno para confirmar que todavía se está en la pendiente más pronunciada“, explicó.

Este ejemplo plantea un paisaje tridimensional que podría representarse mediante los ejes x, y y z, y el cálculo del gradiente es relativamente simple.

Sin embargo, los problemas prácticos de optimización pueden tener cientos de miles de variables.

“La operación de cálculo del gradiente se realiza de forma iterativa, una y otra vez, y debemos poder hacerlo de forma rápida y eficiente“, añadió.

Según Battacharya, gran parte del hardware de última generación propuesto actualmente para resolver este tipo de problemas se limita a problemas de segundo orden.

El principal beneficio de su hardware, señaló, es que puede resolver problemas como la satisfacibilidad booleana en su espacio nativo de alto orden sin tener que hacer ningún preprocesamiento, lo que potencialmente proporciona una aceleración exponencial sobre las arquitecturas de hardware actuales que se limitan a funciones objetivo de segundo orden.

Un elemento clave del nuevo hardware es su capacidad para realizar cálculos en memoria dentro de la propia matriz de memoria, lo que mitiga el problema del cuello de botella que resulta de mover grandes cantidades de datos de un lado a otro entre la memoria y el procesador en una computadora clásica.

Los investigadores aceleran las operaciones realizando la multiplicación de vectores de matrices, la operación matemática detrás del paso de cálculo de gradiente, mediante el uso de matrices de barras cruzadas de dispositivos de memristores especializados.

La gran ventaja de la computación en memoria es que se puede realizar en un tiempo independiente del tamaño de la matriz.

Siempre requiere un solo paso, sin ir y venir de datos, lo que reduce drásticamente el tiempo de resolución.

El hardware consta de memorias de barras cruzadas (superficies elevadas reales litografiadas en el chip) donde varias líneas de palabras (cables) corren horizontalmente y varias líneas de bits corren verticalmente.

Colocando un memristor en cada lugar donde una línea de palabras y una línea de bits se cruzan (con un terminal del dispositivo conectado a la línea de palabras y el otro a la línea de bits) se forma una matriz de barras cruzadas de memristores.

La matriz que codifica el problema se almacena en los estados de estos memristores.

El vector se aplica como pulsos de lectura proporcionales en las líneas de palabras. Las corrientes resultantes, que fluyen en las líneas de bits, representan entonces el resultado de la multiplicación vector-matriz.

La innovación fundamental que permite el cálculo de gradientes de polinomios de orden superior en el espacio nativo (de orden superior) es el uso de dos matrices de barras cruzadas consecutivas.

Ambas barras cruzadas almacenan la matriz que representa el polinomio de orden superior.

La primera barra cruzada calcula los monomios de orden superior del polinomio.

La segunda barra cruzada utiliza este resultado como entrada para calcular el gradiente de orden superior para todas las variables en cada una de sus líneas de bits.

Este elemento “masivamente paralelo” del enfoque del grupo es clave para su éxito.

“Con esto queremos decir que nuestro hardware puede calcular los gradientes para cada una de esas variables al mismo tiempo, en lugar de hacerlo secuencialmente, como lo hace gran parte del hardware actual“, dijo Bhattacharya.

“Esa es la optimización, en un aspecto, el hecho de que hayamos conservado esa propiedad masivamente paralela incluso al pasar a ese espacio de orden superior”.

Desde un punto de vista algorítmico, la capacidad de optimizar una función nativa de orden superior, en contraposición a la versión reducida de segundo orden, puede dar como resultado una ventaja de velocidad de casi dos órdenes de magnitud para problemas que tienen solo 150 variables.

Eso sigue siendo un orden de magnitud menor que la mayoría de los problemas relevantes en la práctica que se encuentran en escenarios del mundo real, y se espera que la ventaja de velocidad aumente exponencialmente con la incorporación de más variables.

Fuente: Nature communications

 

Leave a Reply

Your email address will not be published. Required fields are marked *