Nota: Este artículo es una traducción del original que aparece en THE NEXT PLATFORM: Wrenching Efficiency Out of Custom Deep Learning Accelerators
Muchas gracias a la autora Nicole Hemsoth por permitir su publicación en español.
Muchas gracias a la autora Nicole Hemsoth por permitir su publicación en español.
La
costosa eficiencia de los aceleradores de aprendizaje profundo personalizados
Los aceleradores personalizados para el entrenamiento
de redes neuronales han sido objeto de una gran atención en los últimos años,
pero al no tener un software lo suficientemente ágil, la programación de muchos
de ellos resulta difícil dando lugar a un funcionamiento poco eficiente. Esta
dificultad se puede resolver mediante diferentes optimizaciones del modelo,
pero como otras fuentes argumentan, la eficiencia y los ciclos de reposo también se pueden abordar con un compilador a
medida.
Eugenio Culurciello, ingeniero eléctrico de la
Universidad de Purdue, afirma que es difícil conseguir una eficiencia total de
cálculo de los aceleradores de aprendizaje profundo personalizados. Esta
consideración ha impulsado a su equipo en Purdue a construir un acelerador
basado en FPGA al que podrían no afectar las cargas de trabajo de redes
neuronales convolucionales (CNN) y que podría conseguir la máxima utilización y
eficiencia en una serie de tareas de aprendizaje profundo, incluyendo ResNet y
AlexNet.
Snowflake es un acelerador escalable y programable de
bajo consumo para aprendizaje profundo con un conjunto de instrucciones
personalizadas basado en RISC. Lleva a cabo el control de la fuente de
información para un conjunto personalizado de instrucciones a través de un
compilador personalizado que genera instrucciones y administra los datos en la
memoria principal. La estructura del software entrena la representación del
modelo de alto nivel de Torch7, que alimenta un flujo de instrucciones que se
ejecutan en Snowflake. El esquema del software Snowball permite la usabilidad y
la utilización del hardware.
La arquitectura hardware de Snowflake se basa en una matriz de
16 bits para multiplicar y acumular unidades (MACs). Un vector MAC (vMAC) está
compuesto de una MACs 16 que procesa 256 bits en un ciclo. Una unidad de
cálculo (CU) tiene cuatro vMAC (y cada uno de ellos tiene su propio nucleo con
buffer de memoria transitoria). El tiempo de transferencia de datos se
superpone con el tiempo de cálculo MAC utilizando una estrategia de doble
memoria intermedia. Estos grupos se asocian en racimos con su propia fuente de
información basada en RISC. Dos procesadores ARM Cortex A9 sirven de hosts.
‘La arquitectura se ha diseñado para proporcionar un
alto rendimiento dada la secuencia óptima de instrucciones. Sin embargo, la
elaboración manual de instrucciones del tipo ensamblador puede ser engorrosa y
propensa a errores, especialmente en el caso de modelos formados por varias
capas, como ocurre con ResNet', explican sus creadores. 'Incluso si se es lo
suficientemente paciente como para escribir código manualmente para algunos
modelos de aprendizaje profundo de última generación, una mayor
personalización, tanto en el hardware como en el software, requeriría modificar
miles de líneas de código ensamblador, para evitar la experimentación en
sistemas personalizados de aprendizaje profundo.'
'Snowflake es
capaz de lograr una eficiencia de cálculo de más del 91% de la totalidad del
modelo en modernos modelos CNN, y el 99% en algunas capas individuales',
declara Culurciello. 'Implementado sobre un Xilinx Zynq XC7Z045 SoC es capaz de
conseguir un rendimiento máximo de 128 Giga operaciones/s y un rendimiento
medido de 100 tramas por segundo y 120 Giga operaciones/s sobre el modelo
CNN AlexNet, 36 tramas por segundo y 116 Giga operaciones/s en el modelo
CNN GoogLeNet y 17 tramas por segundo y 122 Giga operaciones/s en el
modelo CNN ResNet-50. Hasta donde sabemos, Snowflake es el único sistema
implementado capaz de conseguir una eficiencia superior al 91% en CNNs modernas
y el único sistema implementado con GoogLeNet y ResNet como parte de la suite de
aplicaciones de medidas de rendimiento.’
Esta es una comparación interesante con la TPU de Google en el
rendimiento por vatio. El equipo de trabajo no explica los resultados de la
TPU, pero indica que ' mantuvo una cifra optimista para la TPU, con un
porcentaje de utilización mucho menor que el 100% cuando se ejecutan modelos
para los que no está optimizada.' Culurciello señala que el Snowflake SoC 1k
tendrá la misma capacidad de cómputo que la última versión de GPU Nvidia Titan
X.
Culurciello
concluye que Snowflake y el esquema de Snowball abordan algunos de los principales
puntos de diseño de software que llevan a muchos aceleradores de hardware a
tener lagunas en cuanto a la eficiencia. Estos incluyen análisis de estructura
de modelo, desglose de carga de la trabajo, reordenamiento de bucle y
equilibrio del acceso a memoria. Estos se han probado con resultados positivos
en su propio acelerador de Snowflake, pero el equipo confía en que estos puedan
aplicarse a otros aceleradores personalizados. Puede encontrar aquí una descripción en
profundidad tanto de la arquitectura
Snowflake como del esquema de software de Snowball.
Los problemas técnicos con los aceleradores
personalizados representan un desafío. La otra gran cuestión en el horizonte es
hasta qué punto se habrán hecho imprescindibles estos chips personalizados a
medida que las grandes empresas trabajen para integrar funciones valiosas en en
ámbito de aprendizaje profundo en chips estándar (como lo está haciendo Intel
con su familia de procesadores Knights, por ejemplo). Con funciones de
aprendizaje profundo de mayor alcance en entornos de software común, la
necesidad y el uso de aceleradores personalizados para estas tareas podrían
comenzar a desaparecer. Sin embargo, el trabajo para hacer que los FPGAs se acerquen
más a esa línea de partida es interesante ya que aumenta la amalgama
arquitectónica.
No comments:
Post a Comment