Deep Learning Academy · Lección

torch.no_grad() para inferencia

Omita el seguimiento del grafo para ahorrar memoria

Lección 4 de 413 pasos

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

Confirme cuándo debe usar no_grad.

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. 🚀

Gratis para empezar

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

  1. requires_grad y el grafo de cómputo
  2. Llame a backward() para obtener gradientes
  3. Leer y poner a cero .grad
  4. torch.no_grad() para inferencia
← Volver a Deep Learning Academy