Conocimiento Bóveda 2/18 - ICLR 2014-2023
Nicolas Vasilache, Jeff Johnson, Michael Mathieu, Soumith Chintala, Serkan Piantino, Yann LeCun ICLR 2015 - Redes Convolucionales Rápidas Con fbfft: Una Evaluación de Rendimiento de GPU
<Imagen de Resumen >

Gráfico de Concepto & Resumen usando Claude 3 Opus | Chat GPT4 | Gemini Adv | Llama 3:

graph LR classDef performance fill:#f9d4d4, font-weight:bold, font-size:14px; classDef convolutions fill:#d4f9d4, font-weight:bold, font-size:14px; classDef fourier fill:#d4d4f9, font-weight:bold, font-size:14px; classDef implementations fill:#f9f9d4, font-weight:bold, font-size:14px; classDef optimizations fill:#f9d4f9, font-weight:bold, font-size:14px; A[Nicolas Vasilache et all
ICLR 2015] --> B[Facebook mejora
redes neuronales convolucionales. 1] A --> C[Convoluciones computacionalmente costosas,
justifican GPUs. 2] A --> D[Realizar convoluciones eficientemente
usando FFT. 3] D --> E[Convoluciones se convierten en multiplicaciones
puntuales en Fourier. 4] A --> F[Contribuciones: FFTs, autotuning,
implementaciones optimizadas. 5] A --> G[Problema ahora limitado por ancho de banda,
no por cálculo. 6] G --> H[Techo de rendimiento elevado
al ancho de banda de memoria. 7] A --> I[Convoluciones de Fourier:
FFT, operaciones, transformar de nuevo. 8] I --> J[Buffers intermedios
almacenan valores temporales. 9] A --> K[Implementación inicial:
librerías NVIDIA, autotuning. 10] K --> L[Autotuner consideró eficiencia
vs compensaciones de memoria. 11] A --> M[FFT del proveedor ajustado
para grandes conjuntos de datos. 12] M --> N[Nuevo FPFFT para
FFTs pequeñas y eficientes. 13] N --> O[FPFFT trató GPU
como máquina vectorial. 14] O --> P[Máquina vectorial menos efectiva,
limitadas permutaciones. 15] A --> Q[Compensación de memoria: paralelismo,
colisiones, eficiencia, reutilización. 16] Q --> R[Incremento de memoria 9x capa más grande,
tiling ayuda. 17] A --> S[ConvNets necesitan FFTs pequeñas,
mismo costo. 18] A --> T[Optimizar algoritmo primero,
luego implementación. 19] A --> U[QFFT+QBLAST vs
mapas de calor cuDNN. 20] U --> V[Conteo de kernels pequeños
limitado por latencia. 21] A --> W[Números de Torch de
Dic 2014. 22] A --> X[Tamaño de entrada VGG fuerza
interpolación, tiling ayuda. 23] A --> Y[Trabajo reciente: FFT en mosaico,
relleno, reutilización. 24] Y --> Z[FFT más rápido en progreso,
números mejorando. 25] A --> AA[Float16 podría proporcionar
mejora de 2x. 26] A --> AB[Tiling descompone convoluciones grandes,
reutiliza buffers. 27] AB --> AC[Error de memoria insuficiente revierte
a modo de baja memoria. 28] A --> AD[Cuello de botella desplazado a ancho
de banda de memoria, espacio para optimización. 29] A --> AE[Desarrollos futuros: baja precisión,
restricciones de ancho de banda de memoria. 30] class B,C performance; class D,E,I,J fourier; class F,K,L,M,N,O,P,T,W,X,Y,Z,AA,AB,AC,AD,AE implementations; class G,H,Q,R,S optimizations; class U,V convolutions;

Resumen:

1.-Facebook ha estado trabajando en mejorar el rendimiento de las redes neuronales convolucionales, enfocándose en hacer las convoluciones más eficientes.

2.-Las convoluciones son computacionalmente costosas, ocupando más del 80% del tiempo en redes convolucionales. Son la principal justificación para usar GPUs.

3.-El enfoque es realizar convoluciones más eficientemente en la base de Fourier usando la Transformada Rápida de Fourier (FFT).

4.-En el dominio de Fourier, las convoluciones se convierten en multiplicaciones puntuales, reduciendo el costo computacional de N^2 a NlogN al usar FFT.

5.-Contribuciones principales: Descomponer convoluciones en FFTs, transponer y multiplicaciones de matrices; añadir autoajuste; desarrollar implementaciones de FFT y multiplicación de matrices de mayor rendimiento.

6.-El problema ahora está limitado por el ancho de banda en lugar de por el cálculo. Los requisitos de ancho de banda pueden trasladarse de la memoria a la caché usando técnicas HPC.

7.-El techo de rendimiento alcanzable ha sido elevado de estar limitado por los FLOPs de GPU a ahora estar limitado por el ancho de banda de memoria.

8.-Las convoluciones se representan en el dominio de Fourier aplicando FFT a tensores de entrada, realizando operaciones y transformando de nuevo.

9.-Se utilizan buffers intermedios para almacenar valores temporales. Algunos son siempre necesarios mientras que otros dependen de si se realiza transposición explícita.

10.-La implementación inicial usó librerías de NVIDIA y añadió autoajuste para explorar el espacio de diseño de llamadas por lotes vs iteradas, interpolación FFT, etc.

11.-El autoajustador también consideró compensaciones entre eficiencia y consumo adicional de memoria para transposición y multiplicación de matrices (FBMM).

12.-Las librerías FFT del proveedor están ajustadas para grandes conjuntos de datos HPC, pero las ConvNets pueden funcionar bien con muchas FFTs pequeñas.

13.-Se desarrolló una nueva implementación FPFFT para reducir ineficiencias en la librería FFT de NVIDIA y permitir relleno cero sobre la marcha.

14.-La implementación FPFFT del documento trató la GPU como una máquina vectorial amplia, pero aún estaba limitada por el número de operaciones de permutación.

15.-Ver la GPU como una máquina vectorial amplia es menos efectivo debido al número limitado de permutaciones en comparación con multiplicaciones.

16.-El consumo de memoria es una compensación entre paralelismo, evitar colisiones, eficiencia y reutilización. Necesita equilibrarse con la memoria disponible.

17.-La versión del documento utilizó un aumento de memoria de 9x para la capa más grande, 3x cuando solo se usaba FBFFT y FBMM. El mosaico ayuda para entradas grandes.

18.-La clave es que las ConvNets solo necesitan FFTs de 16x16 o 32x32, con el costo siendo el mismo para tamaños de kernel de hasta 15x15.

19.-Enfocarse primero en el algoritmo, luego optimizar. El problema ahora está limitado por el ancho de banda de la memoria principal. Los números presentados son de una implementación de diciembre de 2014.

20.-Los mapas de calor comparan QFFT+QBLAST vs cuDNN. Para kernels de 3x3 ya hay regímenes donde QFFT+QBLAST gana, más para 5x5, 7x7, 9x9.

21.-Conteos de kernels muy pequeños (<100) están limitados por latencia en lugar de por ancho de banda y es poco probable que se beneficien del enfoque FFT.

22.-Los últimos números en Torch se basan en la implementación de diciembre de 2014, no en el trabajo más actual. El rendimiento es decente pero puede mejorarse.

23.-En VGG, el tamaño de entrada fuerza la interpolación en una gran base de Fourier, pero el mosaico ayuda significativamente en este caso.

24.-El trabajo reciente incluye FFT en mosaico, relleno implícito, reutilización de buffers, gestión de memoria para reutilizar FFTs calculados e implementación asincrónica.

25.-Se está trabajando en un FFT más rápido y los números seguirán mejorando. El mensaje principal es que, aunque el problema está limitado por el ancho de banda de memoria, todavía hay espacio para crecer.

26.-Usar float16 podría proporcionar hasta un 2x de mejora en el rendimiento ya que el problema está limitado por el ancho de banda de memoria.

27.-El mosaico permite descomponer una convolución grande en más pequeñas con menor huella de memoria. Los buffers pueden reutilizarse o expandirse para ajustarse a la memoria disponible.

28.-Si se detecta un error de memoria insuficiente, la implementación puede revertir a un modo de bajo consumo de memoria.

29.-El trabajo ha desplazado el cuello de botella del rendimiento del cálculo al ancho de banda de memoria, pero aún hay oportunidades para una mayor optimización.

30.-Se anticipan desarrollos futuros emocionantes, aprovechando técnicas como el cálculo de baja precisión (float16) para mejorar aún más el rendimiento dentro de las restricciones de ancho de banda de memoria.

Bóveda de Conocimiento construida porDavid Vivancos 2024