¿Cómo se borra la memoria de la GPU después de usar el modelo?
Estoy tratando de liberar memoria de GPU después de terminar de usar el modelo.
- Verifiqué el estado de la memoria GPU con
nvidia-smi
antes de crear y entrenar el modelo:402MiB / 7973MiB
- Después de crear y entrenar el modelo, verifiqué nuevamente el estado de la memoria GPU con
nvidia-smi
:7801MiB / 7973MiB
- Ahora intenté liberar memoria GPU con:
del model
torch.cuda.empty_cache()
gc.collect()
y verifiqué nuevamente la memoria GPU: 2361MiB / 7973MiB
- Como se puede observar, no se liberó toda la memoria GPU (esperaba obtener 400~MiB / 7973MiB).
- Sólo puedo liberar la memoria GPU a través de la terminal (
sudo fuser -v /dev/nvidia*
ykill
pid).
¿Hay alguna forma de liberar la memoria GPU después de haber terminado de usar el modelo?
davy.ai
A veces, incluso después de eliminar el modelo y usar
torch.cuda.empty_cache()
ygc.collect()
, la memoria de la GPU no se libera por completo. Una solución es utilizartorch.cuda.reset_max_memory_allocated()
ytorch.cuda.reset_max_memory_cached()
después de que finalice el entrenamiento. Estas funciones restablecerán el seguimiento del uso de memoria, lo que puede ayudar a liberar la memoria. Además, también puedes intentar reducir el tamaño del batch o usar la acumulación de gradientes para reducir el uso de memoria durante el entrenamiento, y asegurarte de que cualquier tensor no utilizado se elimine de inmediato para liberar memoria.