- La GPU cumple un papel central en el machine learning moderno, con una arquitectura que combina numerosos Streaming Multiprocessors (SMs) especializados en multiplicación de matrices de alta velocidad junto con HBM (memoria de alto ancho de banda)
- El SM de una GPU se divide en Tensor Cores (multiplicación de matrices) y CUDA Cores (operaciones vectoriales), lo que permite cómputo paralelo a gran escala y programación flexible
- La GPU y la TPU difieren en su estructura interna y en la configuración de red; la GPU tiene mayor versatilidad y escalabilidad, pero alcanzar el rendimiento óptimo requiere más consideraciones
- Dentro de un nodo (Node), es posible la comunicación ultrarrápida entre GPUs mediante NVLink y NVSwitch, y entre nodos se conectan mediante redes como InfiniBand para responder al entrenamiento distribuido a gran escala
- Las operaciones colectivas (Collectives) en GPU (por ejemplo, AllReduce, AllGather, etc.) varían mucho en rendimiento según la estructura del hardware y las capas de red, y en la práctica tienden a quedar por debajo del ancho de banda teórico
¿Qué es una GPU?
- Las GPUs modernas para ML (por ejemplo, H100, B200) están compuestas por decenas o cientos de Streaming Multiprocessors (SMs) especializados en multiplicación de matrices, combinados con memoria HBM rápida
- Cada SM incluye Tensor Cores (multiplicación de matrices), Warp Scheduler (operaciones vectoriales) y SMEM (caché on-chip)
- A diferencia de la TPU, la GPU permite un procesamiento paralelo más flexible y masivo mediante más de 100 SMs
Estructura detallada del SM
- El SM se divide en 4 subparticiones, y cada subpartición cuenta con su propio Tensor Core, CUDA Core (operaciones vectoriales), Warp Scheduler, archivo de registros, etc.
- El CUDA Core se encarga de operaciones aritméticas vectoriales (SIMD/SIMT), mientras que el Tensor Core está especializado en multiplicación de matrices
- Los FLOPs del Tensor Core son abrumadoramente mayores, y con operaciones de menor precisión la velocidad de procesamiento aumenta aún más
- Las GPUs más recientes (por ejemplo, B200) agregan una gran TMEM para soportar entradas de gran tamaño para Tensor Core
Flexibilidad del CUDA Core
- El CUDA Core de la GPU usa el modelo SIMT (Single Instruction Multiple Threads), ejecutando una instrucción en paralelo sobre múltiples hilos
- Cada hilo tiene su propio puntero de instrucciones (program counter), lo que aporta flexibilidad para bifurcaciones condicionales y similares, aunque muchas divergencias de instrucciones dentro de un warp degradan el rendimiento
- Cada CUDA Core tiene libertad de estado individual y acceso a memoria (la TPU solo puede procesar memoria contigua)
Scheduling/paralelismo
- El SM planifica y ejecuta simultáneamente múltiples warps (hasta 64), y cada warp scheduler ejecuta un programa a la vez
- Gracias a esta estructura, la GPU logra un alto nivel de concurrencia manteniendo bastante flexibilidad
Estructura de memoria de la GPU
- En la GPU, la HBM es la memoria más grande, y además existe una jerarquía de memoria con L2/L1 (SMEM)/TMEM/registros, entre otras
Resumen de especificaciones de GPUs modernas
- La cantidad de SMs (Streaming Multiprocessors), reloj, memoria, FLOPs y ancho de banda (BW) varían según el modelo
- La capacidad de memoria (HBM), el ancho de banda y los FLOPs (coma flotante/enteros/baja precisión) aumentan con cada generación
- En la tabla (omitida), las características principales incluyen: Blackwell (B200) con HBM de 192GB, HBM BW de 8.0TB/s, FP8 FLOPs de 4.5e15, etc.
- En cada generación se observan avances claros de hardware, como mayor capacidad de registros y caché on-chip (SMEM), además de la incorporación de TMEM
Comparación GPU/TPU
- La GPU es de propósito general y está modularizada en muchos SMs pequeños (unidades paralelas), con abundante control de hardware, lo que dificulta su comprensión y optimización
- La TPU se compone de unos pocos Tensor Cores grandes y muchas ALUs vectoriales (VPU), y al usar un esquema de control de un solo hilo puede simplificar el hardware y reducir costos
- Por esto, en la TPU la optimización del compilador es obligatoria, mientras que en la GPU pueden ejecutarse múltiples kernels de forma independiente, lo que mejora la facilidad de uso
- En términos de rendimiento/precio, una GPU H200 reciente ofrece aproximadamente el doble de FLOPs/s que una TPU v5p, 1.5 veces más HBM y un precio unas 2.5 veces mayor
- La TPU tiene más VMEM (caché on-chip) y es más rápida, lo que puede dar grandes ventajas en inferencia de modelos LLM, entre otros casos
Puntos clave del Q&A de hardware GPU
- El H100 tiene un total de 16,896 CUDA cores fp32 (132 SM x 4 x 32), y el B200 tiene 18,944
- El rendimiento vectorial de FLOPs alcanza como máximo unos 33.5TFLOPs/s en H100, unas 30 veces menos que los FLOPs de multiplicación de matrices del Tensor Core (990TFLOPs/s)
- La capacidad combinada de L1/SMEM y registros del H100 es de 66MB, mientras que la VMEM de TPU es de 120MB
- La relación entre bandwidth (ancho de banda) y FLOPs (intensidad de cómputo teórica) es de alrededor de 280-300 tanto en H100/B200 como en TPU
Redes de GPU (estructura de comunicación)
Estructura de nodos/clúster
- Un nodo de GPU normalmente agrupa 8 GPUs, conectadas directamente con ancho de banda completo mediante NVLink (ultrarrápido) y NVSwitch (switch)
- Entre nodos puede escalar horizontalmente usando InfiniBand (Ethernet, etc.)
- Las GPUs más recientes (Blackwell) tienen una estructura escalable hasta 72 nodos
Características por capa de red
- Dentro del nodo (área NVLink): egress por GPU de 450GB/s (H100), 900GB/s (B200), y hasta 1.6TB/s por NVSwitch
- Nivel superior al nodo (InfiniBand Leaf/Spine): estructura de Leaf Switch (8) a Spine Switch (16), manteniendo teóricamente 400GB/s de ancho de banda completo entre GPU y GPU
- En arquitecturas grandes como SuperPod, hay 1024 GPUs (128 nodos), y en GB200 (nodo de 72 GPUs) el ancho de banda aumenta 9 veces (3600GB/s)
Puntos clave del rendimiento de red
- En teoría, la estructura de red (Full Fat Tree) está diseñada para ofrecer el máximo ancho de banda incluso entre nodo y nodo
- Debido a limitaciones de puertos de hardware y otros factores, al escalar a 1024~4096 GPUs se usa una estructura jerárquica con más Spine/Core Switches
- El cambio de ancho de banda dentro del nodo (450GB/s) a ancho de banda entre nodos (400GB/s) produce diferencias de rendimiento en las operaciones colectivas
Estructura de operaciones colectivas (Collectives)
- Se admiten operaciones colectivas de alto nivel como AllGather, AllReduce (suma), AllToAll (distribución)
- Dentro del nodo, la conexión directa por NVLink permite un rendimiento óptimo (B/W teórico), mientras que entre nodo y nodo pasa por InfiniBand
- Se utilizan las bibliotecas NCCL y NVSHMEM de NVIDIA
Análisis de rendimiento de operaciones colectivas
- AllGather/ReduceScatter: implementación en anillo (Ring) usando B/W (450GB/s en H100), aunque con mensajes pequeños también puede usarse un esquema de árbol (Tree)
- AllToAll: cada GPU envía directamente a la GPU destino; como se divide desde el B/W entre N, dentro del nodo en teoría es 2 veces más rápido
- En mediciones reales, AllReduce alcanza alrededor de 370GB/s, sin llegar al máximo del hardware
- Frente a la TPU, solo con volúmenes grandes (decenas de MB a GB) se aproxima al peak bandwidth del hardware
Resumen general e insights
- La GPU destaca por su versatilidad y escalabilidad, pero según la estructura de hardware/red la dificultad de optimización y observabilidad del rendimiento es mayor que en la TPU
- El networking (Intra-Node/NVLink/InfiniBand/Leaf/Spine, etc.) es clave para el rendimiento del entrenamiento a gran escala, y hay que prestar atención a la diferencia entre ancho de banda real y teórico
- Comprender las operaciones colectivas y la estructura de red es un elemento esencial para el entrenamiento/serving de modelos distribuidos de escala masiva
- Se requiere un proceso basado en benchmarks reales y en la comprensión detallada del hardware para identificar cuellos de botella de rendimiento y condiciones óptimas
Aún no hay comentarios.