Deep Learning · Inteligencia Artificial

Frameworks: PyTorch y TensorFlow

Definir, entrenar y guardar un modelo profundo en un framework moderno, manejando tensores, autodiferenciación, bucles de entrenamiento y serialización de pesos.

Frameworks de deep learning

Declarar, dejar que derive PyTorch y TensorFlow no inventan las matemáticas: las automatizan. Declaras el modelo y la pérdida, y el framework deriva, mueve tensores a la GPU y guarda el resultado. Dominar esa mecánica es el oficio diario.

El tensor como unidad

Todo dato y todo parámetro es un tensor: un array multidimensional con un dispositivo asociado. Las operaciones entre tensores se registran en un grafo que hará posible la retropropagación.

Definir el modelo

Autodiferenciación

El framework construye el grafo de operaciones y aplica la regla de la cadena por ti. Solo programas el avance; el gradiente llega con llamar a retroceder, sin derivadas manuales.

Cubos de datos fluyen hacia bloques de capas conectados por flechas de avance, con una flecha curva que regresa indicando la retropropagación automática.
El framework registra el grafo de operaciones: programas el pase hacia delante y el gradiente llega solo.

El bucle de entrenamiento

Cada iteración limpia gradientes, avanza el lote, calcula la pérdida, retropropaga y actualiza con el optimizador. Ese ciclo de cinco pasos, repetido por épocas, es el corazón de todo entrenamiento.

Pérdida y optimizador

Se elige una función de pérdida acorde a la tarea y un optimizador que combine el gradiente con su tasa de aprendizaje. La mayoría de decisiones de ajuste viven en estas dos piezas.

Datos y lotes

Un dataset expone muestras y un dataloader las agrupa en lotes, los baraja y los carga en paralelo. Alimentar bien la tubería de datos suele marcar la velocidad tanto como la propia red.

Guardar y cargar

Se serializan los pesos —el estado del modelo— y a veces también la arquitectura. Un checkpoint permite reanudar un entrenamiento interrumpido o exportar el modelo entrenado para servirlo.

Elegir framework

PyTorch domina la investigación por su estilo imperativo y natural; TensorFlow aportó despliegue robusto y herramientas como TFLite. Ambos son maduros; la decisión suele ser de ecosistema y equipo.

Errores frecuentes

Ejemplo resuelto: el ciclo de cinco pasos

Vas a entrenar tu primera red en PyTorch y la pérdida no baja. Revisas el bucle de entrenamiento paso a paso:

  1. Limpiar los gradientes acumulados del paso anterior con cero_grad.
  2. Avanzar el lote por el modelo para obtener la predicción.
  3. Calcular la pérdida comparando predicción y etiquetas.
  4. Retropropagar con backward para poblar los gradientes.
  5. Actualizar los pesos con el optimizador y repetir por épocas.

¿Para qué sirve en la realidad?

Manejar un framework es el oficio diario del deep learning aplicado: casi nadie escribe ya la retropropagación a mano, y dominar tensores, bucle y checkpoints es lo que separa una idea de un modelo entrenado y desplegado.

En un framework moderno, ¿qué hace la autodiferenciación por el programador?

Guardar el estado de un modelo suele implicar serializar sus parámetros aprendibles en un checkpoint.

Frameworks

Array multidimensional con dispositivo asociado
tensor
Registro de operaciones que permite derivar
grafo
Paso del bucle que borra gradientes acumulados
cero grad
Archivo con los pesos para reanudar o servir
checkpoint
Framework imperativo favorito en investigación
pytorch

Ordena los pasos del bucle de entrenamiento de un framework:

Limpiar
Avanzar
Perdida
Atras
Actualizar

PyTorch
Documentación del framework de tensors y autodiferenciación.

Une cada pieza del framework con su función.

Declarar, dejar que derive

# Frameworks de deep learning
## Tensor
### datos y pesos
### en CPU o GPU
## Modelo
### capas compuestas
### parámetros registrados
## Bucle
### limpiar
### avanzar
### retroceder
### actualizar
## Guardar
### checkpoint de pesos
### reanudar o servir

TensorFlow
El otro gran framework de aprendizaje profundo automático.

Tu entrenamiento va lento aunque la GPU apenas se usa. Mirando el bucle y el dataloader, ¿qué dos cuellos de botella sospechas y cómo los comprobarías?