Deep Learning · Inteligencia Artificial

GPU y entrenamiento a escala

Aprovechar la aceleración por hardware, el dimensionado de lotes y la precisión mixta para entrenar modelos grandes de forma eficiente.

GPU y entrenamiento a escala

Que la GPU no espere Una GPU multiplica miles de operaciones a la vez, perfecta para las matrices de una red. Pero tenerla no basta: hay que alimentarla con lotes grandes, mover los datos una sola vez y, si se puede, calcular en menos bits.

Por qué la GPU

Un entrenamiento es una sucesión de productos de matrices y convoluciones altamente paralelizables. La GPU, con sus múltiples núcleos, calcula esos bloques a la vez y acelera órdenes de magnitud frente a una CPU.

Alimentar la tubería

El tamaño del lote

Lotes grandes dan gradientes más estables y mejor paralelismo, pero menos ruido regularizador y más memoria. Lotes pequeños generalizan a veces mejor y caben en tarjetas modestas. Es un equilibrio entre calidad, memoria y throughput.

Un chip con miles de pequeños núcleos procesa en paralelo grandes bloques de matrices mientras un flujo de datos lo alimenta sin interrupción.
La GPU reparte los productos de matrices entre sus núcleos; por eso barre a la CPU en el entrenamiento.

Memoria y su gestión

La memoria de la GPU limita modelo y lote. Concretar, no guardar el grafo donde no hace falta, o acumular gradientes entre micro-lotes permite entrenar redes que de otro modo no cabrían.

Precisión mixta

Calcular en fp16 o bf16 en vez de fp32 reduce memoria y multiplica el ancho de banda casi sin perder precisión, usando un guardián de escala para no desbordar. Es hoy el estándar para entrenar grande.

Paralelismo de datos

Con varias GPU, cada una procesa un sub-lote y se sincronizan los gradientes. Repartir el batch aganta más muestras por segundo casi linealmente mientras el intercambio de gradientes no sature.

Paralelismo de modelo

Cuando un modelo no cabe en una tarjeta, se parte por capas o por tensor entre dispositivos. Es más complejo y comunicativo, pero hace posibles redes gigantes.

Medir el throughput

De nada presume una GPU que se pasa el tiempo esperando datos. Medir muestras por segundo y uso de memoria revela si el límite es el cómputo, el ancho de banda o la tubería de entrada.

Errores frecuentes

Ejemplo resuelto: exprimir una GPU sin romper la calidad

Tu entrenamiento cabe justo en una GPU y va lento. Lo aceleras por etapas midiendo en cada una:

  1. Mide el throughput base en muestras por segundo con el lote actual.
  2. Activa precisión mixta con su guardián de escala para liberar memoria.
  3. Sube el lote hasta llenar la memoria sin desbordar y vuelve a medir.
  4. Si la GPU aún no satura, mejora la carga paralela de datos.
  5. Compara la pérdida y la validación antes de dar por bueno el cambio.

¿Para qué sirve en la realidad?

Saber exprimir el hardware decide si entrenar cuesta horas o días y cuánto se paga en la nube; es lo que permite experimentar a escala en lugar de limitarse a un único intento.

La precisión mixta acelera el entrenamiento sobre todo porque:

Duplicar el número de GPU en paralelo de datos reparte el lote entre tarjetas y sincroniza los gradientes.

A escala

Hardware con miles de núcleos ideal para matrices
gpu
Subconjunto de muestras por paso de entrenamiento
batch
Calcular en fp16 o bf16 para ahorrar memoria
precision mixta
Repartir el lote entre varias tarjetas es paralelismo de...
datos
Dividir un modelo enorme por capas entre dispositivos es paralelismo de...
modelo

Ordena la lógica para acelerar un entrenamiento en GPU:

Datos
Lote
Precision
Tarjetas

GPU
Procesador gráfico y su papel en el cómputo paralelo.

Une cada técnica de escalado con lo que consigue.

Que la GPU no espere

# Entrenamiento a escala
## Hardware
### miles de núcleos
### memoria limitada
## Lote
### gradiente estable
### llena la GPU
## Precision
### fp16 o bf16
### guardián de escala
## Paralelo
### de datos
### de modelo

Tu entrenamiento cabe justo en una GPU y va lento. ¿Probarías antes precisión mixta, un lote mayor o una segunda tarjeta? Justifica por qué ese orden.