Aplicaciones de la aceleración por Hardware con FPGAs

1 September, 2020 |

Previamente conocimos los beneficios sobre la Aceleración por Hardware con FPGAs, así como diversos Conceptos clave tras la aceleración con FPGA que ofrecen a las compañías y equipos que los implementen. En este artículo, conoceremos las aplicaciones que típicamente se benefician al emplear esta tecnología.

En primer lugar, se realizará una comparación entre computación distribuida y heterogénea, destacando el lugar que las FPGAs han conseguido en los centros de datos. Luego, presentaremos las aplicaciones más difundidas de la Aceleración con FPGAs, entre ellas, Machine Learning, Procesamiento de Imágenes y Video, Bases de Datos, entre otras.

Computación Distribuida Vs. Heterogénea
En los últimos 10 años, hemos sido testigo de un crecimiento exponencial en la generación de datos, esto en parte gracias al surgimiento y popularidad de aparatos electrónicos, como los teléfonos celulares, dispositivos del tipo Internet de las Cosas (IoT), dispositivos wearables (relojes inteligentes), y muchos otros más.
Al mismo tiempo, el consumo de contenido de mayor calidad por parte de los usuarios ha ido en aumento, siendo un ejemplo claro el caso de la televisión y/o los servicios de streaming, quienes han aumentado paulatinamente la calidad del contenido, lo que se traduce a una mayor demanda de datos.

Este crecimiento en la generación/consumo de datos trajo la aparición de nuevas aplicaciones computacionalmente demandantes, capaces tanto de aprovecharlos como de ayudar en su procesamiento. Sin embargo, surge entonces la problemática con los tiempos de ejecución necesarios para su procesamiento, afectando directamente la experiencia del usuario haciendo impráctica la solución. Esto plantea la interrogante: ¿cómo podemos disminuir los tiempos de ejecución para hacer más viable las soluciones planteadas?

Una de las soluciones planteadas consiste en usar la Computación Distribuida; en esta se interconectan más de una computadora en red para distribuir la carga de trabajo. Bajo este modelo, la aceleración teórica máxima a obtener es igual a la cantidad de máquinas agregadas en el procesamiento de datos. Si bien es una solución viable, ofrece la problemática de que se deben considerar los tiempos involucrados en realizar la distribución y transmisión de datos por la red.

Por ejemplo, si queremos disminuir el tiempo de procesamiento de datos a la tercera parte, tendríamos que configurar hasta cuatro computadoras, lo cual dispararía los costos de consumo de energía y el espacio físico a ocupar.
Otra alternativa, es emplear Computación Heterogénea. Esta, además de utilizar procesadores (CPUs) para las tareas de propósito general, buscan mejorar el rendimiento de un mismo equipo agregando capacidades de procesamiento especializadas para realizar tareas particulares.

Es en este punto donde se emplean las tarjetas gráficas de propósito general (GPGPUs) o de lógica programable (FPGAs), siendo una de las principales diferencias que las primeras poseen una arquitectura fija, mientras que las segundos son totalmente adaptables a cualquier carga de trabajo, además de consumir menos (debido entre a otras cosas a la posibilidad de generar el Hardware exacto que se utilizara).

A diferencia de la Computación Distribuida, en la Computación Heterogénea la aceleración dependerá del tipo de aplicación y la arquitectura que se desarrolle. Por ejemplo, en el caso de las bases de datos, la aceleración puede tener una menor frecuencia que la que tendría un caso de inferencia de Machine Learning (la cual puede acelerarse por cientos de veces); otro ejemplo sería el caso de la aceleración de algoritmos financieros, donde la tasa de aceleración se da por miles. Adicionalmente, en lugar de agregar computadoras, simplemente se agregan placas en slots PCIe, ahorrando recursos, espacio de almacenamiento y consumo energético, traduciéndose en un menor Coste Total de Propiedad (TCO de sus siglas en inglés).

Las tarjetas aceleradoras basadas en FPGA se han convertido en un excelente complemento para los centros de datos, estando disponibles tanto on-premise (servidores propios) como en servicios en la nube de Amazon, Azure y Nimbix, entre otros.

Aplicaciones que se benefician de la aceleración por Hardware con FPGAs
En principio, cualquier aplicación que involucre algoritmos complejos con grandes volúmenes de datos, donde el tiempo de procesamiento sea lo suficientemente largo para mitigar los accesos a la tarjeta, es candidata a aceleración. Además, debe tratarse de un proceso que pueda realizarse a través de paralelización. Entre las soluciones típicas para FPGA, que responden a estas características, encontramos:


Una de las técnicas más disruptivas de los últimos años ha sido Machine Learning (ML). La aceleración por hardware puede aportar muchos beneficios, debido al alto nivel de paralelismo y el enorme número de operaciones matriciales necesarias. Estos pueden apreciarse tanto en la fase de entrenamiento del modelo (reduciendo este tiempo de días a horas o minutos), como en la fase de inferencia, posibilitando aplicaciones en tiempo real (detección de fraude, reconocimiento real-time en video, reconocimiento de voz, etc.)


El Procesamiento de Imágenes y Video es una de las áreas más beneficiadas por la aceleración, posibilitando trabajar en tiempo real en tareas como transcodificación de video, transmisión en vivo y procesamiento de imágenes. Se utiliza en aplicaciones como diagnósticos médicos, reconocimiento facial, vehículos autónomos, tiendas inteligentes, realidad aumentada, etc.


Las Bases de datos y Analíticas reciben cargas de trabajo cada vez más complejas debido a los avances en ML, lo que obliga a una evolución del centro de datos.
La aceleración por hardware aporta soluciones a la computación (por ejemplo, con aceleradores que, sin tocar código, aceleran PostgreSQL entre 5-50X o Apache Spark hasta 30x) y al almacenamiento (vía discos SSD inteligentes con FPGA).


La gran cantidad de datos a procesar, precisa de Sistemas de almacenamiento más rápidos y eficientes. Moviendo el procesamiento de la información (compresión, encriptación, indexado) lo más cerca posible de donde residen los datos, se reducen cuellos de botella, liberando al procesador y reduciendo los requerimientos de energía del sistema.


Algo similar ocurre con la Aceleración de redes, donde se mueve el procesamiento de la información (compresión, encriptación, filtrado, inspección de paquetes, conmutación y enrutamiento virtual) a donde los datos ingresan o salen del sistema.


La Computación de Alto Rendimiento (HPC), es la práctica de agregar más poder de cómputo, de tal manera de entregar un rendimiento muy superior al de una PC convencional, para resolver grandes problemas de la ciencia y la ingeniería. Incluye desde la secuenciación del Genoma Humano hasta el modelado del clima.


En el caso de las Tecnología Financiera, el tiempo es clave para reducir riesgos, tomar decisiones comerciales informadas y proveer servicios financieros diferenciados. Se pueden acelerar procesos tales como el modelado, negociación, evaluación, gestión de riesgos, entre otros.


Con la aceleración por Hardware se pueden ofrecer Herramientas y Servicios que procesen la información en tiempo real, ayudando a la automatización de diseños, obteniendo tiempos de desarrollo más cortos.

Conclusiones
Haciendo una breve comparación entre los modelos, en la Computación Distribuida se interconectan más de una computadora en red y se distribuye la carga de trabajo entre todas ellas. Este modelo, utilizado por ejemplo por Apache Spark, es altamente escalable, pero tiene como desventaja el consumo y el espacio físico ocupado, los cuales se incrementarán proporcionalmente.

En lo que respecta a la Computación Heterogénea, se mejora el rendimiento de un mismo equipo, mediante el agregado de hardware (por ejemplo, vía tarjetas gráficas como GPGPUs o FPGAs), sumándole capacidades de procesamiento especializadas. Esto posibilita obtener tasas de aceleración que dependen del tipo de aplicación, pero que pueden estar, en algunos casos, entre 1-10X (por ejemplo, al usar Bases de Datos) hasta cientos o miles de veces al utilizar Machine Learning.

A través de un análisis de rentimiento (profiling) y de validad la factibilidad de paralelizar los distintos procesos y soluciones podemos determinar si la Aceleración de Hardware por FPGA es la solución ideal para tu compañía, principalmente si esta trabaja con algoritmos complejos y grandes volúmenes de datos.

De esta forma, tu negocio podrá mejorar la experiencia del usuario al ofrecer una experiencia más rápida y fluida gracias a reducir los tiempos de ejecución de procesos; adicionalmente, y gracias a la reducción del TCO de sus soluciones, se optimizaría el control del presupuesto.