Tensor Cores, Triton, redes residuales y transformadores de visión

Entre 2015 y la actualidad, el aprendizaje profundo evolucionó desde código C++ para GPU ajustado a mano y redes convolucionales hasta motores matriciales acelerados por hardware y arquitecturas Transformer. Estos tres hitos definen cómo se diseñan y escalan los modelos modernos de IA.
1. Evolución moderna de CUDA: Tensor Cores y OpenAI Triton
En 2012, Alex Krizhevsky escribió CUDA C++ de bajo nivel (cuda-convnet) para calcular operaciones individuales de coma flotante en núcleos CUDA estándar. Hoy, el aprendizaje profundo depende de hardware matricial especializado y compiladores de alto nivel.
- De los núcleos CUDA a los Tensor Cores. Los núcleos CUDA tradicionales realizan una multiplicación y una suma escalares por ciclo de reloj. A partir de la arquitectura Volta (2017), NVIDIA introdujo los Tensor Cores, que multiplican matrices pequeñas completas (como bloques de 4×4 o 16×16) en un solo ciclo de reloj. Los Tensor Cores modernos usan formatos de precisión mixta como FP16, BF16 y FP8, y ofrecen aceleraciones de un orden de magnitud en las multiplicaciones de matrices.
- cuDNN y selección automática de kernels. En lugar de que los investigadores escriban convoluciones personalizadas en C++, la biblioteca cuDNN de NVIDIA contiene ahora cientos de kernels en ensamblador precompilados. En tiempo de ejecución, entornos como PyTorch evalúan distintos algoritmos para la forma exacta de tu tensor y eligen automáticamente la rutina de Tensor Cores más rápida.
- OpenAI Triton (programación de GPU basada en Python). Escribir directamente en CUDA C++ exige gestionar manualmente la indexación de hilos, los conflictos de bancos de memoria compartida y la sincronización de warps. Publicado por OpenAI, Triton permite a los investigadores escribir kernels de GPU de alto rendimiento directamente en Python. Defines operaciones a nivel de bloque (bloques de datos), y el compilador de Triton gestiona automáticamente la coalescencia de memoria, el procesamiento por bloques en memoria compartida y la planificación de Tensor Cores, a menudo igualando o superando el CUDA C++ ajustado a mano.
2. Conexiones de salto de ResNet y flujo de retropropagación
Antes de ResNet (2015), apilar más de ~20 capas convolucionales hacía que el error de entrenamiento se disparara. A medida que los gradientes viajaban hacia atrás a través de decenas de pasos de multiplicación, se reducían hacia cero (desvanecimiento de gradientes) o se volvían inestables.
- Aprender residuos en lugar de salidas directas. En un bloque de red estándar, las capas apiladas intentan aprender una correspondencia directa H(x) a partir de la entrada x. ResNet introduce una conexión de salto (atajo de identidad) que suma la entrada original x directamente a la salida del bloque:
y=F(x)+x
Aquí, F(x) representa las capas convolucionales apiladas. En lugar de reconstruir toda la representación desde cero, las capas solo necesitan aprender el residuo (el pequeño ajuste F(x) = y - x). Si una capa no es necesaria, la red puede llevar fácilmente F(x) hacia cero, dejando un paso directo de identidad sin alteraciones.
- Vía ininterrumpida para el gradiente. Durante la retropropagación, la regla de la cadena calcula el gradiente de la pérdida (L) con respecto a la entrada x:
(∂ L)/(∂ x)=(∂ L)/(∂ y)((∂ F(x))/(∂ x)+1)
Gracias al término + 1 creado por el atajo de identidad, el gradiente procedente de la salida ((∂ L)/(∂ y)) fluye directamente hacia atrás hasta las capas anteriores sin reducirse por las pequeñas matrices de pesos de (∂ F(x))/(∂ x). Esto permite que los gradientes se propaguen sin alteraciones a través de más de 100 o incluso más de 1.000 capas.
3. El cambio de las CNN a los transformadores de visión (ViT)
Durante casi una década después de AlexNet, las redes neuronales convolucionales (CNN) dominaron la visión por computadora deslizando pequeños filtros locales sobre las imágenes. En 2020, Google presentó el Vision Transformer (ViT), que adaptaba la arquitectura Transformer del procesamiento del lenguaje natural a las imágenes.
| Característica | Redes neuronales convolucionales (CNN) | Transformadores de visión (ViT) |
|---|---|---|
| Procesamiento de la entrada | Procesan la cuadrícula 2D completa de la imagen mediante filtros deslizantes (p. ej., de 3×3). | Dividen la imagen en regiones de tamaño fijo (p. ej., de 16×16 píxeles) y las aplanan en una secuencia de tokens. |
| Campo receptivo | Primero local. Las primeras capas solo ven píxeles vecinos; el contexto global se construye lentamente en las capas profundas. | Global de inmediato. La autoatención conecta cada región de la imagen con todas las demás desde la capa 1. |
| Sesgo inductivo | Alto. Las suposiciones incorporadas sobre la invariancia a la traslación y la localidad espacial 2D ayudan a las CNN a aprender bien con conjuntos de datos más pequeños. | Bajo. Carecen de reglas espaciales 2D incorporadas (dependen de representaciones posicionales), por lo que necesitan enormes conjuntos de datos para aprender la estructura visual. |
| Escalado del hardware | Dependen de kernels de convolución especializados y patrones complejos de acceso a memoria. | Dependen casi por completo de multiplicaciones de matrices densas (GEMMs), que saturan los Tensor Cores de las GPU modernas con la máxima eficiencia. |
- Por qué los ViT se impusieron en la IA moderna. Aunque las CNN siguen siendo eficientes para dispositivos móviles y de borde ligeros, los transformadores de visión escalan mucho mejor cuando se entrenan con cientos de millones de imágenes. Además, como los ViT representan las imágenes como secuencias de tokens, exactamente el mismo formato que se usa para texto y audio, permitieron que los modelos modernos de IA multimodal (como GPT-4o y Gemini) procesaran visión y lenguaje dentro de una única arquitectura unificada.