Qué es PyTorch: tensores, diferenciación automática y modelos
Arquitectura de autograd: del cálculo directo a los gradientes
Lee el contrato de entrada de Python sin atribuirle una auditoría completa del motor.
Qué aprenderás
- Relaciones del cálculo directo
- Responsabilidad de la entrada Python
- Gestionar grafo y estado
Antes de empezar
- Python y cálculo básicos
- Entorno aislado para ejercicios posteriores
Compara derivadas analíticas y salidas observadas sin ocultar los fallos.
Conclusiones clave
- La entrada no describe todo el motor.
- Conservar y crear grafos son operaciones distintas.
- Un grafo nuevo no limpia gradientes.
Relaciones del cálculo directo
Las operaciones diferenciables crean relaciones necesarias para calcular derivadas. Desde una pérdida escalar, la propagación inversa recorre esas dependencias; formas y operaciones determinan el resultado.
Distingue los tensores que participan del cálculo de las hojas que almacenan gradientes. Participar como valor intermedio no implica guardar automáticamente una derivada en su campo grad.
Responsabilidad de la entrada Python
La entrada backward revisada normaliza argumentos y gradientes antes de invocar el motor con accumulate_grad=True. Este análisis no sigue la planificación interna del motor nativo.
retain_graph toma por defecto el valor de create_graph. El primero conserva el grafo existente; el segundo construye un cálculo diferenciable para las propias derivadas. No son opciones equivalentes.
Gestionar grafo y estado
Limpiar los gradientes de parámetros y gestionar la vida del grafo son tareas distintas. Recalcular crea un grafo nuevo, pero no elimina los valores acumulados en hojas anteriores.
La documentación advierte que backward con create_graph puede formar ciclos de referencias. Introduce derivadas de orden superior solo cuando las necesites y comprueba versión y comportamiento de memoria.
Cómo elegir
| Criterio | Opción A | Opción B |
|---|---|---|
| Best when | You need predictable behavior and easy auditing | You need adaptive optimization and have reliable telemetry |
| Main risk | May leave performance on the table | Can become difficult to explain or debug |
Pasos de implementación
- 1
Seguir las dependencias del cálculo.
- 2
Leer los argumentos enviados al motor.
- 3
Gestionar grafo y gradientes por separado.
Ejemplo para copiar
forward operations -> loss
backward(..., accumulate_grad=True) -> leaf .grad
fresh forward != automatic gradient resetPreguntas frecuentes
¿retain_graph equivale a create_graph?
No. Conservación y diferenciación del cálculo de derivadas tienen contratos distintos.
¿Se auditaron todos los backends?
No, solo las entradas Python fijadas.
Fuentes
- PyTorch / torch/autograd/__init__.pyFuente verificada 2026-09-23