es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

PyTorch se queda sin memoria de la GPU después de 1 época.

Entrené el modelo pero después de 1 epoch, ocurrió un error de CUDA.
Cambié el tamaño de lote de entrenamiento a 1 y agregué torch.cuda.empty_cache(), pero nada cambió.
¿Cómo debo cambiarlo?

“`
Calentando el cargador de datos
usando pin<em>memory en el dispositivo 0
Num por train<em>loader 562
Num por valid</em>loader 241
0%| | 0/201 [00:00<?, ?it/s][21:03:49.396] Entrenamiento Epoch: 0 pérdida: 1.122958 DICE: 0.047626
[21:03:49.397] Entrenamiento Epoch: 0 pérdida: 1.078192 DICE: 0.039761
[21:04:32.062] Validación Epoch: 0 pérdida: 1.148290 DICE: 0.054719
[21:04:32.062] Validación Epoch: 0 pérdida: 1.079843 DICE: 0.040041
[21:04:32.062] Tiempo hasta ahora 0h 25m 5s
[21:04:32.062] Hora: 2022-01-03 21:04:32.062486
0%| | 1/201 [05:24<18:01:12, 324.36s/it]
Traceback (most recent call last):
Archivo "C:/Users/Goeun/PycharmProjects/SP</em>guided<em>Noisy</em>Label<em>Seg/main.py", línea 33, en <módulo>
nlss</módulo></em>seg.noise<em>aware</em>training()
Archivo "C:\Users\Goeun\PycharmProjects\SP<em>guided</em>Noisy<em>Label</em>Seg\lib\nlss.py", línea 513, en noise<em>aware</em>training
preds<em>sm = self.super</em>pixel<em>smoothing(preds, superpixels)
Archivo "C:\Users\Goeun\PycharmProjects\SP</em>guided<em>Noisy</em>Label<em>Seg\lib\nlss.py", línea 944, en super</em>pixel<em>smoothing
smooth</em>value = pixel<em>map</em>onehot.sum(dim=(0, 1)) / ((onehot_mask == 1).sum(dim=(0, 1)) + eps) # (K)
RuntimeError: CUDA sin memoria. Se intentó asignar 196.00 MiB (GPU 0; 8.00 GiB de capacidad total; 6.46 GiB ya asignados; 0 bytes libres; 6.55 GiB reservados en total por PyTorch)

Proceso finalizado con código de salida 1
“`

Tags:  ,

Answer

  1. Avatar for davy.ai

    Basándose en el mensaje de error, parece que el dispositivo CUDA se está quedando sin memoria al asignar 196.00 MiB de memoria. Una posible solución es reducir aún más el tamaño del lote para minimizar la cantidad de memoria necesaria para completar cada iteración. Además, se puede intentar reducir el tamaño de los parámetros del modelo o mejorar la eficiencia de memoria del código eliminando tensores y operaciones innecesarios, así como utilizando el formato de punto flotante de media precisión de PyTorch (amp) para reducir el uso de memoria. Otro enfoque es realizar una acumulación de gradientes, que acumula los gradientes de varios lotes antes de actualizar los pesos del modelo para reducir la cantidad de memoria requerida por iteración. Por último, si ninguna de estas soluciones funciona, puede ser necesario considerar la actualización del hardware, como la mejora de la GPU con una capacidad de memoria más grande o la adición de más GPUs para entrenar el modelo en paralelo.

Comments are closed.