Frameworks y librerías aceleradas por Hardware con FPGAs

15 October, 2020 |

Introducción
En los artículos anteriores, hablamos sobre la Aceleración por Hardware con FPGAs, los Conceptos clave tras la Aceleración que proveen y las Aplicaciones de la Aceleración por Hardware. En esta última entrega de la serie, nos enfocaremos en Librerías y Frameworks acelerados por Hardware con FPGAs, lo que implica cero cambios en el código de una aplicación. Haremos un repaso por distintas alternativas disponibles, para aplicaciones de Machine y Deep Learning, Procesamiento de Imágenes y Video, así como también de Bases de Datos.

Opciones para el desarrollo con FPGAs
Históricamente, el trabajo con FPGAs siempre estuvo asociado a la necesidad de un desarrollador de Hardware, principalmente Ingenieros Electrónicos, y la utilización de herramientas y Lenguajes de Descripción de Hardware (HDL del inglés), como lo son VHDL y Verilog (del tipo concurrentes en lugar de secuenciales), muy distintas a las utilizadas en el ámbito de desarrollo de Software. En los últimos años, apareció un nuevo tipo de aplicación, aceleración en los centros de datos, que apunta a disminuir la brecha entre los dominios del Hardware y el Software, para los casos de algoritmos computacionalmente demandantes, con procesamiento de grandes volúmenes de datos.

Aplicando niveles de abstracción, reemplazando los HDL típicos por un subset de C/C++ combinado con OpenCL, se llevó el desarrollo a un ambiente más familiar para un desarrollador de Software. Así, se proveen bloques básicos (primitivas), para aplicaciones Matemáticas, Estadísticas, de Álgebra Lineal y Procesamiento de Señales Digitales (DSP del inglés). No obstante, esta alternativa sigue precisando un conocimiento profundo del Hardware involucrado, para lograr aceleraciones significativas y mayor performance.

En segundo lugar, existen librerías aceleradas de dominios específicos, para soluciones de Finanzas, Bases de Datos, procesamiento de Imagen y Video, Compresión de Datos, Seguridad, etc. Las mismas son del tipo plug-and-play y pueden ser invocadas directamente con una API desde nuestras aplicaciones, escritas en C/C++ o Python, requiriendo el reemplazo de librerías “comunes” por versiones aceleradas.

Finalmente, describiremos las principales en este artículo, existen librerías y frameworks de código abierto, que fueron aceleradas por terceros. Esto nos permite, generalmente ejecutando una o varias instancias Docker (on-premise o en la nube), acelerar aplicaciones del Machine Learning, procesamiento de Imágenes y Bases de datos, entre otras, sin necesidad de cambiar el código de nuestra aplicación.

Machine Learning
Sin dudas, uno de los avances tecnológicos más disruptivos de los últimos años ha sido Machine Learning. La aceleración por hardware aporta muchos beneficios, por el alto nivel de paralelismo y el enorme número de operaciones matriciales necesarias. Los mismos se aprecian tanto en la fase de entrenamiento del modelo (reduciendo tiempos de días a horas o minutos), como en la fase de inferencia, posibilitando aplicaciones en tiempo real.

A continuación un pequeño listado de las opciones aceleradas disponibles:
 
tensor flor logo
TensorFlow es una plataforma para construir y entrenar redes neuronales, usando grafos. Creada por Google, es uno de los frameworks líderes en Deep Learning.
 

Keras es una API de alto nivel para redes neuronales escrita en Python. Funciona solo ó como interfaz de frameworks como TensorFlow (con quien suele usarse) o Theano. Fue desarrollado para facilitar un proceso de experimentación rápida, brinda una curva de aprendizaje muy suave.
 

PyTorch es una librería Python diseñada para realizar cálculos numéricos vía programación de tensores. Centrado principalmente en el desarrollo de redes neuronales.
 

Framework de Deep Learning destacado por su escalabilidad, modularidad y procesamiento de datos de alta velocidad.
 

Scikit-learn es una librería para matemáticas, ciencias e ingeniería. Incluye módulos para estadísticas, optimización, integrales, álgebra lineal, procesamiento de señales e imágenes, y mucho más. Depende de Numpy, para la manipulación rápida de matrices N-dimensionales.
 

XGBoost (Extreme Gradient Boosting), es una de las librerías de ML más utilizadas, muy eficiente, flexible y portátil.
 

Spark MLlib es la librería de ML de Apache Spark, con algoritmos escalados y paralelizados, aprovechando la potencia de Spark. Incluye los algoritmos de ML más comunes: Clasificación, Regresión, Clustering, Filtros Colaborativos, Reducción de Dimensiones, Árboles de Decisión y Recomendación. Puede procesar por lotes y por streaming. También permite construir, evaluar y ajustar Pipelines de ML.
 
Procesamiento de Imagen y Video
El Procesamiento de Imagen y Video es otra de las áreas más beneficiadas de la aceleración por hardware, posibilitando trabajar en tiempo real en tareas como transcodificación de video, transmisión en vivo y procesamiento de imágenes. Combinado con Deep Learning, es muy utilizado en aplicaciones como diagnósticos médicos, reconocimiento facial, vehículos autónomos, tiendas inteligentes, etc.


La librería para Visión por Computador y Procesamiento de Imagen y Video más importante es OpenCV, de código abierto, con más de 2500 funciones disponibles. Existe una versión acelerada de sus principales métodos, sumando más versión tras versión.


Para el Procesamiento de Video, en tareas como Transcodificación, Encoding, Decoding y filtrado, FFmpeg es de las herramienta más utilizada. Existen plugins acelerados, para por ejemplo la decodificación y codificación de H.264 y otros formatos. Además, soporta el desarrollo de plugins acelerados propios.

Bases de datos y analíticas
Las Bases de datos y Analíticas reciben cargas de trabajo cada vez más complejas, debido principalmente a los avances en Machine Learning, lo que obliga a una evolución del Centro de Datos. La aceleración por Hardware aporta soluciones al cómputo (por ejemplo con motores de bases de datos que funcionan, por lo menos, desde 3 veces más rápidos) y al almacenamiento (vía discos SSD que incorporan FPGAs entre sus circuitos, con acceso directo al tratamiento de los datos). Algunas de las Bases de Datos aceleradas, o en vías de estarlo, principalmente Open Source tanto SQL como NoSQL, son PostgreSQL, Mysql, Cassandra y MongoDb.

En estos casos, generalmente lo que se acelera son los algoritmos de bajo nivel más complejos, como la compresión de los datos, la compactación, aspectos relacionados al networking, el storage y la integración con el medio de almacenamiento. Las aceleraciones reportadas se encuentran en el orden de 3 a 10 veces más rápidas, que comparadas a mejoras de hasta 1500 veces en algoritmos de ML pueden parecer poco, pero son muy importantes por la reducción de los costos asociados al centro de datos.

Conclusiones
A lo largo de esta serie de 4 artículos, conocimos que es una FPGA a nivel dispositivo, como es que se logra la aceleración, cuando estamos en presencia de un posible caso qué les saque provecho (algoritmos computacionalmente complejos, con grandes volúmenes de datos). Casos generales de su aplicación y soluciones particulares, listas para usar sin cambios de código.
¿Cómo puede Huenei ayudar a tu negocio con Aceleración por Hardware con FPGAs?


Infraestructura: Definición, adquisición y puesta en marcha (Cloud & On-promise).


Consultoría: Asesoría y despliegue de frameworks disponibles, para obtener aceleración sin cambios en el código.


Desarrollo: Adaptación de software existente mediante el uso de librerías aceleradas, para aumentar su rendimiento.