a-ceron / tesis-ia

Códigos y documentos desarrollados durante la tesis de maestria en ciencias e ingieneria de la computación
1 stars 0 forks source link

RuntimeError: CUDA error: out of memory #10

Closed a-ceron closed 1 year ago

a-ceron commented 1 year ago

¿Qué?

Después de entrenar un modelo la memoria del GPU se puede llenar. Al intentar ejecutrar un nuevo entrenamiento el siguiente error aparece

(pytorch) ariel@rumelhart:~/Documents/tesis-ia/lens_effect_project$ python main.py
Traceback (most recent call last):
  File "main.py", line 25, in <module>
    main()
  File "main.py", line 22, in main
    trainer.train(generator, discriminator, dataloader)
  File "/home/ariel/Documents/tesis-ia/lens_effect_project/trainer.py", line 30, in train
    generator.to(device)
  File "/home/ariel/anaconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py", line 612, in to
    return self._apply(convert)
  File "/home/ariel/anaconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py", line 359, in _apply
    module._apply(fn)
  File "/home/ariel/anaconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py", line 359, in _apply
    module._apply(fn)
  File "/home/ariel/anaconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py", line 381, in _apply
    param_applied = fn(param)
  File "/home/ariel/anaconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py", line 610, in convert
    return t.to(device, dtype if t.is_floating_point() else None, non_blocking)
RuntimeError: CUDA error: out of memory

Cómo

Se ejecuta el siguiente comando

nvidia-smi

Buscamos el proceso que este usando la memoria, usualmente se llama python

Mon Feb 27 21:21:42 2023       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.161.03   Driver Version: 470.161.03   CUDA Version: 11.4     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  Off  | 00000000:01:00.0 Off |                  N/A |
| 54%   82C    P2   145W / 180W |   7873MiB /  8119MiB |    100%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
|   1  NVIDIA GeForce ...  Off  | 00000000:02:00.0 Off |                  N/A |
| 27%   30C    P8     6W / 180W |      6MiB /  8119MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A       967      G   /usr/lib/xorg/Xorg                  8MiB |
|    0   N/A  N/A      1230      G   /usr/bin/gnome-shell                2MiB |
|    0   N/A  N/A    924757      C   python                           7857MiB |
|    1   N/A  N/A       967      G   /usr/lib/xorg/Xorg                  4MiB |
+-----------------------------------------------------------------------------+

Después de haber identificado el proceso, se elimina para liberar la memoria

sudo kill -9 {PID}

Esta acción requiere a un usuario con privilegios para ser ejecutada.

Enlace original

a-ceron commented 1 year ago

Solución 1.

De forma temporal voy a usar el CPU en vez del GPU.

Solución 2.

La solución definitiva debe ser eliminar el proceso y evitar que se vuelva a llenar la memoria. Usar cuda:1

a-ceron commented 1 year ago

Resultados usando GPU

Resultados con los datos de Pedro

830 704

Hay una mejora en los resultados observados Captura de pantalla 2023-02-27 a la(s) 22 49 24

Resultados con los datos descargados

93

El entrenamiento para estos datos siguen teniendo un comportamiento extraño Captura de pantalla 2023-02-27 a la(s) 22 54 20

La última parte cambio su comportamiento, tal vez con más iteraciones el resultado se ponga mejor. Pero por su comportamiento inicial no creo que este cambio se positivo.

Captura de pantalla 2023-02-27 a la(s) 23 16 38

776

a-ceron commented 1 year ago

Usando cuda:1 Captura de pantalla 2023-02-28 a la(s) 23 21 17 208