torch.no_grad() para inferencia
Omita el seguimiento del grafo para ahorrar memoria
torch.no_grad() para inferencia es una lección gratuita de Deep Learning Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Deep Learning Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Deep Learning Academy incluye 4 lecciones en total.
No todos los pasos necesitan gradientes
Solo necesita gradientes durante el entrenamiento. Cuando únicamente quiere obtener predicciones, rastrear el grafo supone trabajo innecesario, así que PyTorch permite desactivarlo. 🛑
Conozca torch.no_grad
Rodee el código con un bloque torch.no_grad() y autograd dejará de registrar las operaciones que haya dentro. No se construye ningún grafo ni se almacenan gradientes.
with torch.no_grad():
preds = model(x)Por qué omitir el grafo
Construir el grafo consume memoria para recordar cada paso de un backward que nunca llegará. Durante la inferencia, ese coste adicional es puro desperdicio.
Más rápido y ligero
Dentro de no_grad, el paso forward usa menos memoria y se ejecuta un poco más rápido. En modelos grandes, esto permite usar batches más grandes cuando solo se hacen predicciones.
Las salidas quedan separadas del grafo
Los tensores creados dentro del bloque tienen requires_grad establecido en false. Son resultados normales que puede imprimir, guardar o convertir a NumPy sin problemas.
Úselo para la evaluación
Los bucles de validación y prueba siempre deberían ejecutarse dentro de no_grad. Está evaluando el modelo, no entrenándolo, así que no hay motivo para rastrear los gradientes.
with torch.no_grad():
for x, y in val_loader:
out = model(x)Combínelo con el modo eval
Para la inferencia, establezca model.eval() y envuelva las llamadas en no_grad. eval corrige el comportamiento de capas como dropout; no_grad detiene el grafo. Resuelven problemas distintos.
Es un administrador de contexto
no_grad solo afecta al código que está dentro del bloque with. Cuando sale de él, autograd vuelve a activar automáticamente el rastreo para el siguiente paso de entrenamiento.
La forma de decorador
También puede marcar una función completa con @torch.no_grad(). Todas las operaciones con tensores dentro de esa función se ejecutarán sin construir un grafo.
@torch.no_grad()
def predict(x):
return model(x)Separe un solo tensor del grafo
¿Necesita liberar del grafo un solo tensor en lugar de todo un bloque? Llame a .detach() sobre él para obtener una copia sin historial de gradientes.
frozen = output.detach()Un hábito seguro y habitual
Use no_grad siempre que no esté aprendiendo: durante la inferencia, al calcular métricas o al guardar salidas. Es un pequeño cambio que ahorra discretamente memoria y tiempo.
Comprobación rápida
Repaso
Envuelva la inferencia en torch.no_grad() para evitar construir el grafo y ahorrar memoria y tiempo. Combínelo con model.eval() siempre que haga predicciones en lugar de entrenar. 🚀
Aprende Python con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 30
- Lecciones
- 120
Preguntas frecuentes
¿La lección «torch.no_grad() para inferencia» es gratis?
Sí — el texto completo de «torch.no_grad() para inferencia» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Deep Learning Academy, actualiza a CoddyKit PRO. El curso de Deep Learning Academy incluye 4 lecciones en total.
¿Qué aprenderé en «torch.no_grad() para inferencia»?
Omita el seguimiento del grafo para ahorrar memoria Practicas Deep Learning Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Deep Learning Academy?
No se requiere experiencia previa. Deep Learning Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «torch.no_grad() para inferencia»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Deep Learning Academy?
Sí. Cada lección de Deep Learning Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- requires_grad y el grafo de cómputo
- Llame a backward() para obtener gradientes
- Leer y poner a cero .grad
- torch.no_grad() para inferencia