Design and Implementation of an Efficient Multi-FPGA Platform for Inference of Convolutional Neural Networks
[ES] La Inteligencia Artificial (IA) va camino de convertirse en la tecnología más transformadora del siglo XXI. La proliferación de diversas arquitecturas de redes neuronales, como CNN y LLM, ha posibilitado su integración en numerosos sectores industriales y aplicaciones. En la actualidad, la IA impulsa soluciones que incluyen: el reconocimiento del lenguaje, secuenciación de ADN, conducción autónoma, análisis de datos, entre muchos otros. Este rápido crecimiento ha impulsado a su vez la investigación y exploración de aceleradores hardware orientados a incrementar la eficiencia computacional y la capacidad de procesamiento. Entre las diferentes arquitecturas propuestas para el procesamiento eficiente de redes neuronales, se encuentran las FPGA. Las FPGAs son un tipo de circuito integrado que puede configurarse y reprogramarse posteriormente a su fabricación, lo que permite adaptar el hardware a distintos dominios de aplicación. Debido a su versatilidad, se utilizan para el procesamiento de redes neuronales en centros de datos y computación en el borde. No obstante, los limitados recursos disponibles en una única FPGA imponen restricciones a su capacidad para adaptarse al creciente tamaño de los modelos actuales. Dada la limitada capacidad de recursos, los sistemas multi-FPGA han emergido como una solución prometedora para el procesamiento de redes neuronales, ofreciendo una combinación de baja latencia, reducido consumo energético y reconfigurabilidad. Sin embargo, la implementación de sistemas multi-FPGA presenta diversos desafíos tanto a nivel de hardware como de software. En el marco de esta tesis se presenta el diseño e implementación de un sistema multi-FPGA innovador destinado al procesamiento eficiente de redes neuronales convolucionales. El sistema consta de ocho FPGAs interconectadas mediante una topología de cubo para una mejor conectividad y un mayor ancho de banda. Para abordar la elevada demanda de memoria de los modelos CNN, el sistema implementa un paradigma de memoria compartida distribuida, lo que permite a cada nodo acceder a todo el espacio de memoria del sistema. De este modo, se elimina la necesidad de realizar transferencias de memoria explicitas de datos entre nodos, simplificando el intercambio de información. Además, la arquitectura integra mecanismos de comunicación mediante streams, proporcionando colectivas de comunicación punto a punto, multicast y broadcast. La combinación de ambos paradigmas dota al sistema de una arquitectura novedosa, allanando el camino para el desarrollo de diversas estrategias de mapeo. Con el objetivo de explotar completamente los recursos del sistema, se han explorado diversas estrategias de mapeo. Inicialmente, se ha evaluado la eficiencia de distintas estrategias de particionado. Los resultados obtenidos evidencian la necesidad de estrategias más flexibles y adaptativas. En ese sentido, se ha desarrollado un algoritmo de particionado que analiza el modelo capa por capa, y selecciona la estrategia de particionado más adecuada en función de las características de cada capa. La eficiencia del algoritmo se ha evaluado con cuatro modelos de redes convolucionales: ResNet50, ResNet152, DeepLabV3 y InceptionV4. Los experimentos muestran que el algoritmo logra una aceleración máxima de 7.46 para el caso de DeepLabV4 con ocho FPGAs. A pesar de la escalabilidad obtenida con algunos modelos, los resultados ponen de manifiesto las limitaciones inherentes que tiene las estrategias de particionado. Para superar dichas limitaciones, el algoritmo ha sido extendido para incorporar un esquema de segmentación basado en comunicaciones por streaming, combinando ambas estrategias. El nuevo algoritmo mejora el rendimiento para todos los modelos, proporcionando una aceleración prácticamente lineal con hasta ocho FPGAs, demostrando la viabilidad y efectividad de los sistemas con múltiples FPGAs para acelerar cargas de trabajo con redes neuronales convolucionales.
Read more