GPU (Graphics Processing Unit)
Una GPU es un procesador con miles de núcleos diseñado para realizar cálculos en paralelo, por lo que es el hardware principal para entrenar y ejecutar modelos de aprendizaje profundo.
Una unidad de procesamiento gráfico (GPU) es un procesador con miles de núcleos sencillos que ejecutan la misma operación en muchos datos a la vez. Las GPU se crearon para renderizar gráficos 3D, es decir, calcular millones de píxeles y vértices en paralelo, y se convirtieron en el hardware principal del aprendizaje profundo porque el entrenamiento y la inferencia de redes neuronales se basan principalmente en multiplicaciones de matrices, que se paralelizan del mismo modo. La plataforma CUDA de NVIDIA, lanzada en 2007, hizo que sus GPU se pudieran programar para cálculos de propósito general. En 2012, la red AlexNet, entrenada durante cinco o seis días en dos GPU NVIDIA GTX 580, ganó el desafío ImageNet con un error top-5 del 15,3 %, frente al 26,2 % del segundo clasificado. Actualmente, PyTorch, TensorFlow y JAX funcionan en GPU NVIDIA mediante CUDA, en GPU AMD mediante ROCm y en los chips Apple mediante Metal; los clústeres de miles de GPU entrenan los mayores modelos fundacionales.
Cómo aceleran las GPU el aprendizaje profundo#
Una CPU dedica la mayor parte de la superficie del chip a las cachés y la lógica de control para que unos pocos núcleos puedan ejecutar rápidamente código con bifurcaciones. Una GPU dedica esa superficie al cálculo: una GPU NVIDIA se divide en multiprocesadores de transmisión, cada uno de los cuales ejecuta grupos de 32 subprocesos, llamados warps, que realizan la misma instrucción con datos distintos. Mientras unos warps esperan a la memoria, otros calculan, por lo que el chip sigue ocupado siempre que haya suficiente trabajo en paralelo. Desde la generación Volta, en 2017, las GPU NVIDIA también incluyen Tensor Cores, unidades que multiplican matrices pequeñas en un solo paso y con precisión reducida; ahora admiten FP8 y, desde Blackwell, FP4. Una NVIDIA A100 alcanza un máximo de 19,5 TFLOPS en operaciones FP32 estándar y de 312 TFLOPS en BF16 con sus Tensor Cores, por lo que la mayoría de los entrenamientos en GPU utilizan precisión mixta. Este código mide el tiempo de la misma multiplicación de matrices en la CPU y la GPU:
import time
import torch
gpu = torch.accelerator.current_accelerator() # cuda, mps, or xpu device on this machine
a = torch.randn(4096, 4096)
b = torch.randn(4096, 4096)
for device in (torch.device("cpu"), gpu):
x, y = a.to(device), b.to(device)
x @ y # warm-up run
torch.accelerator.synchronize()
start = time.perf_counter()
for _ in range(10):
x @ y
torch.accelerator.synchronize() # GPU calls return immediately, so wait for them to finish
seconds = (time.perf_counter() - start) / 10
print(f"{device.type}: {seconds * 1000:.1f} ms per multiply, {2 * 4096**3 / seconds / 1e12:.1f} TFLOPS")En un portátil Apple M5 Pro imprime cpu: 80.0 ms per multiply, 1.7 TFLOPS y mps: 18.3 ms per multiply, 7.5 TFLOPS, por lo que la GPU integrada del portátil es aproximadamente 4,4 veces más rápida en FP32. Las GPU de los centros de datos amplían aún más la diferencia, tanto por tener más núcleos como por utilizar memoria de gran ancho de banda (HBM), que ofrece varios terabytes por segundo y mantiene los núcleos abastecidos de pesos y activaciones. La memoria de la GPU, llamada a menudo VRAM, también determina qué tamaño de modelo y tamaño de lote caben en un dispositivo; técnicas como la recomputación de gradientes y el entrenamiento distribuido permiten sortear ese límite.
Entrenamiento y despliegue de modelos en GPU#
Un trabajo de entrenamiento solo mantiene ocupada la GPU si el resto de la canalización puede seguirle el ritmo: los procesos de CPU deben decodificar y aumentar las imágenes con suficiente rapidez, los lotes deben ser lo bastante grandes para ocupar los núcleos y los cálculos deben ejecutarse con precisión reducida en los Tensor Cores. Una utilización baja de la GPU suele indicar que hay un problema en uno de estos pasos:
Ultralytics YOLO entrena de forma predeterminada en la primera GPU CUDA disponible, acepta device=[0, 1] para el entrenamiento con varias GPU y, con batch=-1, ejecuta AutoBatch, que mide la memoria libre de la GPU y elige un tamaño de lote que utiliza aproximadamente el 60 % de esta. Los equipos sin hardware local pueden elegir una GPU en la nube en Ultralytics Platform para cada ejecución de entrenamiento. Para la inferencia, un modelo YOLO26n exportado a TensorRT procesa una imagen de 640 píxeles en 1,7 ms en una GPU NVIDIA T4, frente a los 38,9 ms con ONNX en una CPU. Este código entrena YOLO26 en la primera GPU con AutoBatch:
from ultralytics import YOLO
# Carga el modelo de detección YOLO26 más pequeño
model = YOLO("yolo26n.pt")
# Entrena en la GPU 0 y deja que AutoBatch ajuste el tamaño del lote a la memoria de la GPU
results = model.train(data="coco8.yaml", epochs=3, imgsz=640, device=0, batch=-1)GPU frente a CPU, TPU y NPU#
- CPU: Unos pocos núcleos potentes para código de propósito general con bifurcaciones. En la mayoría de las canalizaciones de entrenamiento, las CPU cargan y preprocesan los datos; también se encargan de la inferencia cuando no hay ningún acelerador disponible.
- GPU: Miles de núcleos programables, además de Tensor Cores. Las GPU ejecutan casi cualquier modelo y marco de trabajo, están disponibles de varios fabricantes y se ofrecen en las principales nubes.
- TPU: Chip de Google diseñado para una aplicación concreta y basado en grandes unidades de multiplicación de matrices. Las TPU sacrifican la flexibilidad de una GPU para ofrecer eficiencia en cargas de trabajo con matrices densas grandes y están disponibles a través de Google Cloud.
- NPU: Acelerador de redes neuronales de bajo consumo integrado en móviles, portátiles y dispositivos periféricos; se utiliza para inferencia, no para entrenamiento.
Aplicaciones en el mundo real#
- Entrenamiento de modelos grandes: Los modelos de lenguaje y visión con miles de millones de parámetros se entrenan en clústeres de miles de GPU de centros de datos conectadas mediante enlaces de alta velocidad, como NVLink e InfiniBand.
- Análisis de vídeo en tiempo real: Una sola GPU puede ejecutar la detección y el seguimiento de objetos en muchas secuencias de cámaras a la vez, para controlar el tráfico, analizar tiendas o inspeccionar fábricas.
- Robótica y vehículos autónomos: Los módulos GPU integrados, como NVIDIA Jetson, ejecutan modelos de percepción a bordo, donde enviar los datos de las cámaras a un servidor añadiría demasiada latencia.
- Diagnóstico por imagen: Las GPU procesan grandes volúmenes 3D de TC y resonancias magnéticas para segmentar órganos y tumores en segundos, en lugar de minutos.










