Сообщение об ошибке нехватки памяти графического процессора в Google Colab - PullRequest
1 голос
/ 17 января 2020

Я использую графический процессор в Google Colab для выполнения некоторого кода глубокого обучения.

Я прошел 70% всего обучения, но теперь у меня появляется следующая ошибка:

RuntimeError: CUDA out of memory. Tried to allocate 2.56 GiB (GPU 0; 15.90 GiB total capacity; 10.38 GiB already allocated; 1.83 GiB free; 2.99 GiB cached)

Я пытаюсь понять, что это значит. Это говорит о памяти RAM? Если это так, код должен просто запускаться так же, как это было, не так ли? Когда я пытаюсь перезапустить его, сообщение о памяти появляется немедленно. Почему он использует больше оперативной памяти, когда я запускаю ее сегодня, чем когда я запускал ее вчера или накануне?

Или это сообщение о месте на жестком диске? Я мог бы понять это, потому что код сохраняет вещи по ходу дела и поэтому использование жесткого диска будет кумулятивным.

Любая помощь будет высоко ценится.


Так что, если это просто GPU не хватает памяти - может кто-нибудь объяснить, почему в сообщении об ошибке указано 10.38 GiB already allocated - как может быть память уже выделена, когда я начинаю что-то запускать. Может ли это быть использовано кем-то еще? Мне просто нужно подождать и повторить попытку позже?

Вот скриншот использования графического процессора при запуске кода, непосредственно перед тем, как ему не хватит памяти:

enter image description here


Я нашел этот пост , в котором люди, похоже, имеют похожие проблемы. Когда я запускаю код, предложенный для этого потока, я вижу:

Gen RAM Free: 12.6 GB  | Proc size: 188.8 MB
GPU RAM Free: 16280MB | Used: 0MB | Util   0% | Total 16280MB

, который, по-видимому, говорит о том, что 16 ГБ свободной оперативной памяти.

Я в замешательстве.

1 Ответ

2 голосов
/ 17 января 2020

Вам не хватает памяти в GPU. Если вы используете код python, попробуйте запустить этот код перед вашим. Он покажет количество памяти у вас есть. Обратите внимание, что если вы попытаетесь загрузить изображения, размер которых превышает общий объем памяти, произойдет сбой.

# memory footprint support libraries/code
!ln -sf /opt/bin/nvidia-smi /usr/bin/nvidia-smi
!pip install gputil
!pip install psutil
!pip install humanize

import psutil
import humanize
import os
import GPUtil as GPU

GPUs = GPU.getGPUs()
# XXX: only one GPU on Colab and isn’t guaranteed
gpu = GPUs[0]
def printm():
    process = psutil.Process(os.getpid())
    print("Gen RAM Free: " + humanize.naturalsize(psutil.virtual_memory().available), " |     Proc size: " + humanize.naturalsize(process.memory_info().rss))
    print("GPU RAM Free: {0:.0f}MB | Used: {1:.0f}MB | Util {2:3.0f}% | Total     {3:.0f}MB".format(gpu.memoryFree, gpu.memoryUsed, gpu.memoryUtil*100, gpu.memoryTotal))
printm()
...