Contenido del curso

Eventos Exclusivos

Semana Platzi

Cómo las GPU aceleran la IA con CUDA

Resumen

Programar GPU con CUDA es la habilidad que separa a quien consume modelos de inteligencia artificial de quien los crea. Si ya usas Copilot o ChatGPT y te preguntas cómo entrenar tus propias herramientas, entender la arquitectura de una GPU y el modelo de programación paralela es el siguiente salto técnico hacia ingeniería de IA real.

Este recorrido por la charla de Jener, ingeniero del equipo de inteligencia artificial de Platzi, conecta la historia de Nvidia, la matemática detrás del deep learning y un ejemplo práctico en CUDA con Google Colab para que veas, capa por capa, cómo se procesa la IA hoy.

Por qué usamos GPU y no CPU para inteligencia artificial

La diferencia entre una CPU y una GPU no es solo de velocidad, sino de filosofía de diseño. Una CPU tiene una sola unidad de control, pocos cores y una memoria caché jerárquica (L1, L2, L3) optimizada para baja latencia: ideal para abrir Chrome, Visual Studio o cambiar de ventana con Command+Tab. Una GPU, en cambio, tiene miles de cores, muchas unidades de control y está diseñada para alta latencia con poder de cómputo masivo en paralelo [04:30].

El ejemplo de MythBusters lo ilustra: la CPU pinta punto por punto, la GPU pinta una Mona Lisa entera de un solo disparo. Esa capacidad se mide en teraflops, trillones de operaciones de coma flotante por segundo, y es la razón por la que entrenar redes neuronales en CPU es prácticamente inviable.

¿Por qué la GPU tiene latencia si procesa más rápido? Porque los datos viajan más etapas: RAM, CPU, memoria global, memoria compartida y registros. La CPU acorta ese camino, pero no escala a billones de operaciones simultáneas.

Qué cambió en 2007 con CUDA

Antes de 2007, las GPU servían para videojuegos como World of Warcraft o renders de Toy Story. El 16 de febrero de 2007, Nvidia lanzó CUDA, una plataforma general de programación paralela que permitió a científicos usar GPU para análisis numérico, simulaciones físicas y resolución de polinomios [13:20].

En 2011, Alex Krizhevsky, Ilya Sutskever y Geoffrey Hinton publicaron el paper ImageNet Classification with Deep Convolutional Neural Networks en la Universidad de Toronto. Entrenaron AlexNet sobre GPU GeForce y rompieron todos los benchmarks. Sutskever cofundó OpenAI; Hinton ganó el Nobel de Física en 2024. Ese paper marcó el inicio de la era moderna de la IA.

Cómo escala el cómputo de AlexNet a GPT-4

La progresión en petaflops es exponencial:

  • AlexNet: alrededor de 10 millones de parámetros.
  • ResNet, BERT y GPT-2: cientos de millones a miles de millones.
  • GPT-3 y GPT-4: hasta cuatro billones de parámetros, según estimaciones públicas.

Cada salto requirió más GPU encadenadas y más memoria, no algoritmos radicalmente nuevos.

Cómo está construida una GPU por dentro

Una GPU moderna se organiza como un árbol jerárquico que conviene memorizar antes de programarla [22:00]:

  • GPC (Graphics Processing Cluster): agrupaciones grandes de cores.
  • TPC (Texture Processing Cluster): subdivisión dentro del GPC.
  • SM (Streaming Multiprocessor): unidad mínima de planificación de tareas.
  • Warp: grupo de cores que ejecutan la misma instrucción.
  • CUDA core: el procesador individual que ejecuta una operación.

Dentro de cada core hay aproximadamente 410.000 transistores que imprimen, en silicio, una sola operación: A x B + C, llamada Fused Multiply and Add. Esa es la misma fórmula del perceptrón y de la ecuación de la recta m*x + b, lo que explica por qué las GPU son perfectas para machine learning.

Qué hacen los Tensor Cores y los Ray Tracing Cores

Los Tensor Cores imprimen en silicio la multiplicación y suma de matrices 4x4 en un solo ciclo, en lugar de los 48 ciclos que tomaría con CUDA cores tradicionales. Los Ray Tracing Cores simulan el rebote de la luz para videojuegos como Cyberpunk. Cada generación de Nvidia añade más capacidad y nuevas unidades especializadas.

La memoria también escala apilando chips con la técnica Through Silicon Vias, lo que da origen a la HBM (High Bandwidth Memory). Un componente extra, el Gigathread Engine, distribuye trabajo entre miles de cores como lo haría la unidad de control de una CPU, pero a otra escala [38:50].

Cómo programar una GPU con CUDA

CUDA es un framework sobre C++ que añade directivas para paralelizar código, similar a los decoradores de FastAPI en Python. La regla de oro: no intentes hacer nada serial en una GPU, sería más lento que en una CPU [44:00].

¿Qué es un kernel en CUDA? Es simplemente una función que se ejecuta en paralelo, una por cada thread. El nombre suena complejo, pero conceptualmente es igual a una función en Python o Java.

La jerarquía de hilos en CUDA renombra la jerarquía de hardware: el GPC se llama grid, el TPC se llama thread block y dentro están los threads. La memoria también es jerárquica: global, compartida por bloque y registros por thread (256 KB típicamente, mucho más que los 16 KB con los que el Apolo llegó a la Luna).

Cómo se aplana una matriz para procesarla en GPU

La memoria del computador es lineal, así que una matriz de 2x3 con tres canales RGB se convierte en un vector unidimensional usando un stride que indica dónde empieza cada fila. Para acceder a un píxel del canal C en la posición I, la fórmula es I + C*N, donde N es el total de píxeles [1:08:00].

En el ejemplo práctico, convertir una imagen RGB a escala de grises en Python puro tomó 1.65 segundos. La misma operación con un kernel CUDA tomó 2.95 milisegundos, tres órdenes de magnitud menos.

Cómo se invoca un kernel en CUDA

La llamada usa la sintaxis kernel<<<bloques, threads>>>(args). Para una imagen de 32.400 píxeles con 256 threads por bloque, se necesitan 127 bloques (división redondeada hacia arriba). Por eso siempre hay que validar if (i < N) dentro del kernel: evita que los threads sobrantes accedan a memoria fuera del array.

Cómo empezar a aprender CUDA y arquitectura de GPU

La ruta recomendada por Jener combina hardware, software y comunidad:

  • Leer Programming Massively Parallel Processors, cuarta edición. Es la biblia del tema.
  • Seguir el canal de YouTube GPU Mode (antes CUDA Mode), especialmente la lección tres.
  • Seguir a Maharshi en Twitter, un creador que comparte únicamente contenido técnico de CUDA con repositorios y guías.

Antes de saltar a CUDA conviene dominar C++ o explorar Mojo, un lenguaje con sintaxis de Python pensado para IA y portable entre fabricantes de GPU. También vale la pena conocer alternativas como Metal de Apple, ROCm de AMD, JAX y PyTorch, que abstraen la GPU sin perder rendimiento.

¿Cuánto gana un programador CUDA? En Estados Unidos, las ofertas superan los 500.000 dólares anuales. Hay poca gente que lo haga bien, así que la demanda crece más rápido que la oferta.

El salto de consumidor a creador de IA empieza con curiosidad por el hardware. Si te animaste con este recorrido, cuéntame en los comentarios qué tarjeta gráfica tienes y qué kernel quisieras escribir primero.