Aceleración de hardware de modelos de redes neuronales profundas en FPGA

Marco de aprendizaje profundo:

El marco de aprendizaje profundo puede verse como una herramienta o biblioteca que le ayuda a crear un modelo DNN de forma rápida y sencilla, sin un conocimiento profundo de los algoritmos subyacentes. Proporciona una forma condensada de definir un modelo con componentes optimizados y prediseñados. Los marcos importantes de aprendizaje profundo incluyen Caffe, TensorFlow, Pytorch y Keras.

Caffe es un marco de red neuronal profundo diseñado para mejorar la velocidad y la modularidad. Desarrollado por Berkeley AIR research. Caffe se centra principalmente en aplicaciones de procesamiento de imágenes, incluidas las redes neuronales convolucionales (CNN), pero también brinda soporte para CNN basadas en regiones, RNN, memoria a corto plazo y diseños de redes neuronales totalmente conectadas ... También admite bibliotecas de aceleración de CPU y GPU como NVIDIA cuDNN e Intel MKL. Proporciona soporte para C, C ++, Python y MATLAB.

TensorFlow es un marco de aprendizaje profundo de código abierto con código preescrito para modelos de aprendizaje profundo como RCNN y CNN. Fue desarrollado por investigadores de Google. Soporta lenguajes R, C ++ y Python. Tiene una arquitectura flexible que le permite implementar su modelo en una variedad de plataformas como CPU y GPU. TensorFlow funciona bien con imágenes y datos basados ​​en secuencias. La última versión de TensorFlow es TensorFlow 2.0, que mejora significativamente el rendimiento de la GPU.

Keras es un marco de trabajo de código abierto que se puede ejecutar en TensorFlow. Esta es una API de alto nivel útil para experimentos rápidos en modelos de redes neuronales. Keras admite tanto CNN como RNN. Fue desarrollado por el ingeniero de Google Francois Chollet. Keras está escrito en Python y funciona perfectamente tanto en la CPU como en la GPU.

PyTorch es una biblioteca de aprendizaje automático de código abierto. Desarrollado por el laboratorio de inteligencia artificial de Facebook, se utiliza en aplicaciones como la visión por computadora y el procesamiento del lenguaje natural. Tiene una interfaz Python y C ++.

Marco de hardware DNN:

Los FPGA como aceleradores de hardware para redes neuronales profundas tienen sus propias fortalezas y debilidades. Uno de los principales desafíos es que los FPGA se programan describiendo su funcionalidad utilizando un lenguaje de descripción de hardware (HDL) como VHDL o Verilog. Esto es diferente de la programación normal como C o C ++. Para reducir la complejidad, existen herramientas como High-Level Synthesis (HLS) que sintetizan lenguajes de alto nivel en código HDL. La implementación de modelos de redes neuronales definidos en los marcos Caffe o TensorFlow sigue siendo compleja, ya que los diseñadores requieren un conocimiento profundo tanto de los marcos de aprendizaje automático como del hardware FPGA, pero los proveedores de FPGA y otras empresas de terceros. Varios marcos de hardware desarrollados por reducen en gran medida dicha complejidad.

Los marcos de hardware cubiertos aquí incluyen OpenCL, OpenVino de Intel, Xilinx DNNDK, Xilinx Vitis AI y Latticesens AI stack.

Open Computing Language (OpenCL) es un marco heterogéneo para crear y ejecutar programas en una variedad de plataformas informáticas, incluidas CPU, GPU, FPGA, procesadores de señales digitales (DSP) y otros aceleradores de hardware. Lanzado en 2009 por Apple para aprovechar el potencial de GPU integradas más rápidas. La última versión es la 3.0, que incorpora muchas características de C ++ en el lenguaje.

El marco OpenCL admite oficialmente C y C ++, pero hay soporte no oficial disponible para Python, Java, Perl e INET. La implementación de OpenCL del programa se basa en un host que contiene varios dispositivos informáticos, como CPU y GPU, y se subdivide en varios elementos de procesamiento. Las funciones que se ejecutan con OpenCL se denominan kernels y se pueden ejecutar en paralelo en todos los elementos de procesamiento. Los programadores pueden aprovechar las funciones de aceleración disponibles en el sistema recuperando información del dispositivo de la computadora en la que se está ejecutando el programa.

OpenCL ofrece un gran potencial para la velocidad y el uso de recursos, pero está limitado por su naturaleza de bajo nivel. Hay funciones para operaciones estándar como FFT, pero a menos que el marco utilizado para generar la red tenga una rama OpenCL, la red neuronal debe declararse manualmente. Caffe tiene una rama de este tipo, pero actualmente está en desarrollo. La hoja de ruta de TensorFlow tiene una rama OpenCL. Su adopción es limitada debido a la falta de soporte para marcos de redes neuronales. Un marco más compatible y similar para OpenCL es CUDA de Nvidia, pero esto solo se ejecuta en las GPU de Nvidia.

Intel proporciona el kit de herramientas OpenVINO para ejecutar redes neuronales en FPGA y tiene como objetivo simplificar el proceso en comparación con las soluciones existentes. Lanzado en 2018, el kit de herramientas OpenVINO permite a los usuarios programar aplicaciones que pueden acelerar las redes neuronales con procesadores Intel, GPU, FPGA y unidades de procesamiento de visión (VPU). El kit de herramientas es compatible con una variedad de objetivos de inferencia y depende de la plataforma.

OpenVINO se utiliza principalmente para acelerar las CNN de reconocimiento de imágenes, pero también se puede utilizar para otros fines, como el reconocimiento de voz. Es compatible con marcos como Caffe y TensorFlow, y arquitecturas de aprendizaje profundo como AlexNET y GoogleNET. Admite un número determinado de capas para cada marco listo para usar, lo que permite a los desarrolladores admitir capas personalizadas.

En el kit de herramientas de OpenVINO, los modelos de redes neuronales se optimizan mediante el uso de un optimizador de modelos para recuperar archivos de modelos proporcionados por marcos de redes neuronales como caffemodel (de Caffe) con pesos calculados. La precisión del modelo predeterminada es punto flotante de precisión simple, pero la cuantificación a punto flotante de precisión media está disponible en el optimizador. También está disponible la cuantificación de enteros de 8 bits.

El optimizador proporciona una representación intermedia optimizada que se carga en su código utilizando la API del motor de inferencia. La API prepara la red, adivina el dispositivo de destino y ejecuta la red utilizando los datos de entrada proporcionados. Todo el procesamiento previo y posterior se realiza en C ++, por lo que solo necesita reemplazar el proceso de inferencia o predicción.

En FPGA, OpenVINO utiliza flujos de bits precargados programados en FPGA para acelerar las instrucciones. No usa HLS, pero usa FPGA como un procesador dedicado para realizar operaciones matemáticas que se encuentran en las redes neuronales, como la convolución y la activación. El flujo de bits de OpenVINO es fijo para la FPGA y no se puede personalizar, como agregar otras funciones de E / S.

Para competir con OpenVINO, Xilinx adquirió el desarrollador chino DeePhi y su kit de SDK de aceleración FPGA de red neuronal (DNNDK) en 2018. El DNNDK SDK es parte de los kits de desarrollo FPGA de Xilinx, como Xilinx ZCU102, ZCU104 y Avnet Ultra96, así como el kit de desarrollo DeePhi, que realiza la poda, la cuantificación y la implementación del modelo.

Además de la FPGA, el sistema incorpora una MCU en un dispositivo Xilinx llamado sistema multiprocesador en chip (MPSoC), donde la FPGA se usa como lógica programable y la MCU se usa como sistema de procesador (PS). DeePhi permite que el SDK acelere no solo las RNN sino también las CNN, 1.8xy 19 veces más rápido que los circuitos integrados específicos de la aplicación (ASIC) y las implementaciones de HLS de la misma red, 56 minutos de implementación de HLS. Afirma usar una de las potencias de. ..

El kit de herramientas DNNDK aprovecha un procesador de núcleo blando, la Unidad de Procesador de Aprendizaje Profundo (DPU), para acelerar las tareas computacionales avanzadas del algoritmo DNN. Las DPU están diseñadas para admitir y acelerar diseños de redes neuronales comunes como VGG, ResNet, GoogLeNet, YOLO, AlexNET, SSD, SqueezeNet y redes personalizadas. A diferencia de OpenVINO, la imagen FPGA no ocupa toda la FPGA, dejando espacio para que el código HDL personalizado se ejecute con el SDK. DNNDK no estará disponible como herramienta separada a partir de septiembre de 2020. No hay nuevos lanzamientos. Xilinx ha introducido una nueva versión de una herramienta llamada VitisAI para implementar modelos DNN.

Vitis AI es la última plataforma de desarrollo de Xilinx para inferencia DNN en hardware Xilinx, como dispositivos de borde y tarjetas Alveo. Hay herramientas, IP optimizadas, modelos, bibliotecas y diseños de muestra. Tiene el mismo flujo de desarrollo que DNNDK. Desarrollado pensando en la facilidad de uso y la eficiencia. Vitis AI también utiliza una unidad de procesamiento de aprendizaje profundo (DPU) para la aceleración de AI. La DPU puede escalar desde el borde hasta la nube para cumplir con los requisitos de diferentes aplicaciones para una variedad de dispositivos Zynq®-7000 de hardware Xilinx, placas Zynq UltraScale + MPSoC y Alveo.

Lattice sensAI es una pila con todas las funciones que le ayuda a evaluar, desarrollar e implementar modelos de aprendizaje automático en Lattice FPGA de Lattice Semiconductor. Es compatible con marcos populares como Caffe, TensorFlow y Keras. Estos tienen núcleos IP especialmente diseñados para acelerar los modelos CNN. Proporcionan soluciones de aprendizaje automático de bajo consumo, flexibles, compactas y fáciles de implementar.

Familias de FPGA sujetas a aceleración de IA:

Los proveedores de FPGA están optimizando la familia FPGA específicamente para aceleradores de IA.

  • El Intel® Stratix® 10NX FPGA es el primer FPGA optimizado para IA de Intel. Incorpora un nuevo tipo de bloque optimizado para AI, el bloque tensorial AI, ajustado para la multiplicación común matriz-matriz o vector-matriz.
  • Los FPGA y SoC Intel® Agilex ™ ofrecen hasta un 40% más de rendimiento o hasta un 40% menos de energía para aplicaciones de centro de datos, redes y computación perimetral.
  • Los SoC de Xilinx son la solución perfecta para aplicaciones de IA. Integran un procesador para la programabilidad del software y un FPGA para la programabilidad del hardware para proporcionar escalabilidad, flexibilidad y rendimiento. Incluyen el rentable Zynq 7000 SoC y Zynq Ultrascale + MPSoC, Zynq Ultrascale + RFSoC de gama alta.
  • Lattice Semiconductor ofrece FPGA para aplicaciones de aprendizaje automático flexibles, de bajo consumo y fáciles de implementar. Estas plataformas de hardware incluyen FPGA iCE40 UltraPlus, FPGA ECP5 y CrossLink-NX.
  • El microchip está equipado con Polar FireSoC para realizar cálculos fiables, seguros y energéticamente eficientes, como inteligencia artificial / aprendizaje automático (AI / ML), automatización industrial, imágenes e Internet de las cosas (IoT).

Descripción general:

Los FPGA ahora se utilizan ampliamente en los centros de datos para descargar motores de inferencia basados ​​en CPU y GPU. Estas son las primeras etapas para definir, extender e implementar dichas características, comenzando con un ecosistema de FPGA objetivo, marcos de desarrollo y optimización de modelos y bibliotecas compatibles. Se prevé una rápida aceleración de las capacidades de FPGA durante los próximos cinco años para abordar la gran cantidad de aplicaciones que pueden implementarse en el mundo real.

Deja una respuesta

Subir