обновление: этот вопрос связан с Google Colab "Настройки ноутбука: Аппаратный ускоритель: GPU". Этот вопрос был написан до того, как была добавлена опция «TPU».
Прочитав несколько восторженных объявлений о том, что Google Colaboratory предоставляет бесплатный графический процессор Tesla K80, я попытался запустить на нем урок fast.ai, чтобы он никогда не завершился - быстро закончилась память. Я начал выяснять, почему.
Суть в том, что «бесплатная Tesla K80» не «бесплатна» для всех - для некоторых «бесплатна» лишь небольшая ее часть.
Я подключаюсь к Google Colab из западного побережья Канады и получаю только 0,5 ГБ из того, что должно было быть 24 ГБ оперативной памяти графического процессора. Остальные пользователи получают доступ к 11 ГБ оперативной памяти графического процессора.
Очевидно, что 0,5 ГБ ОЗУ графического процессора недостаточно для большинства операций ML / DL.
Если вы не уверены, что получите, вот небольшая функция отладки, которую я собрал вместе (работает только с настройкой графического процессора ноутбука):
# 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()
Выполнение его в блокноте jupyter перед запуском любого другого кода дает мне:
Gen RAM Free: 11.6 GB | Proc size: 666.0 MB
GPU RAM Free: 566MB | Used: 10873MB | Util 95% | Total 11439MB
Удачливые пользователи, получившие доступ к полной карте, увидят:
Gen RAM Free: 11.6 GB | Proc size: 666.0 MB
GPU RAM Free: 11439MB | Used: 0MB | Util 0% | Total 11439MB
Видите ли вы какой-нибудь изъян в моих расчетах доступности оперативной памяти графического процессора, заимствованных из GPUtil?
Можете ли вы подтвердить, что вы получите аналогичные результаты, если запустите этот код в блокноте Google Colab?
Если мои расчеты верны, есть ли способ получить больше этой оперативной памяти графического процессора в бесплатной коробке?
обновление: я не уверен, почему некоторые из нас получают 1/20 того, что получают другие пользователи. например, человек, который помог мне отладить это, из Индии, и он получает все!
Примечание : пожалуйста, не присылайте больше предложений о том, как убить потенциально застрявшие / выходящие из строя / параллельные ноутбуки, которые могут потреблять части графического процессора. Независимо от того, как вы это делаете, если вы находитесь в той же лодке, что и я, и должны были запустить код отладки, вы увидите, что вы все еще получаете в общей сложности 5% ОЗУ графического процессора (на момент этого обновления).
Ответы:
Итак, чтобы предотвратить еще одну дюжину ответов, предполагающих недействительность в контексте предложения этого потока для! Kill -9-1, давайте закроем этот поток:
Ответ прост:
На момент написания этой статьи Google просто предоставляет лишь 5% графического процессора одним из нас, а другим - 100%. Период.
Обновление декабрь-2019: проблема все еще существует - ответы на этот вопрос все еще продолжаются.
Обновление за март-2019: год спустя сотрудник Google @AmiF прокомментировал положение вещей, заявив, что проблемы не существует, и любому, у кого, похоже, есть эта проблема, необходимо просто сбросить время выполнения, чтобы восстановить память. Тем не менее, голоса продолжаются, что для меня говорит о том, что проблема все еще существует, несмотря на предложение @ AmiF об обратном.
Обновление за декабрь 2018 г .: у меня есть теория, что у Google может быть черный список определенных учетных записей или, возможно, отпечатков пальцев браузера, когда его роботы обнаруживают нестандартное поведение. Это могло быть полным совпадением, но в течение некоторого времени у меня была проблема с Google Re-captcha на любом веб-сайте, который требовал этого, где мне приходилось решать десятки головоломок, прежде чем меня пропускали, часто на выполнение у меня ушло 10+ минут. Так продолжалось много месяцев. Внезапно, начиная с этого месяца, у меня вообще нет головоломок, и любая повторная капча Google решается одним щелчком мыши, как это было почти год назад.
И зачем я рассказываю эту историю? Ну потому что при этом мне дали 100% RAM GPU на Colab . Вот почему я подозреваю, что если вы находитесь в теоретическом черном списке Google, то вам не доверяют предоставление большого количества ресурсов бесплатно. Интересно, найдет ли кто-нибудь из вас такую же корреляцию между ограниченным доступом к графическому процессору и кошмаром Re-captcha. Как я уже сказал, это тоже могло быть полным совпадением.
источник
Вчера вечером я запустил ваш фрагмент и получил именно то, что вы получили:
но сегодня:
Я думаю, что наиболее вероятная причина заключается в том, что графические процессоры совместно используются виртуальными машинами, поэтому каждый раз, когда вы перезапускаете среду выполнения, у вас есть возможность переключить графический процессор, а также есть вероятность, что вы переключитесь на тот, который используется другими пользователями.
ОБНОВЛЕНО: Оказывается, я могу использовать графический процессор в обычном режиме, даже когда объем свободной оперативной памяти графического процессора составляет 504 МБ, что я считал причиной ResourceExhaustedError, которую я получил вчера вечером.
источник
RuntimeError: cuda runtime error (2) : out of memory at /pytorch/torch/lib/THC/generated/../THCTensorMathCompare.cuh:84
Если вы выполните ячейку, в которой есть только
! Kill -9-1
, это приведет к тому, что все состояние вашей среды выполнения (включая память, файловую систему и графический процессор) будет очищено и перезапущено. Подождите 30-60 секунд и нажмите кнопку ПОДКЛЮЧЕНИЕ в правом верхнем углу для повторного подключения.
источник
Вводящее в заблуждение описание со стороны Google. Думаю, я тоже был слишком взволнован. Настроил все, загрузил данные, и теперь я не могу с ними ничего делать, так как для моего ноутбука выделено только 500 МБ памяти.
источник
Найдите pid Python3 и убейте pid. См. Изображение ниже
Примечание: уничтожьте только python3 (pid = 130), а не jupyter python (122).
источник
GPU RAM Free: 564MB
Перезапустите ядро Jupyter IPython:
источник
GPU RAM Free: 564MB
CMD/CTRL+M
Я не уверен, что этот черный список правдив! Вполне возможно, что ядра поделены между пользователями. Я также провел тест, и мои результаты следующие:
Gen RAM Бесплатно: 12,9 ГБ | Размер процесса: 142,8 МБ ОЗУ графического процессора Свободно: 11441 МБ | Использовано: 0MB | Использовать 0% | Всего 11441MB
Кажется, я тоже получаю полное ядро. Однако я запускал его несколько раз и получил тот же результат. Возможно, я повторю эту проверку несколько раз в течение дня, чтобы увидеть, есть ли какие-либо изменения.
источник
просто дайте Google Colab тяжелую задачу, он попросит нас поменять на 25 ГБ оперативной памяти.
пример запустите этот код дважды:
затем нажмите получить больше баранов :)
источник
Я думаю, если у нас открыто несколько записных книжек. Просто его закрытие на самом деле не останавливает процесс. Я не понял, как это остановить. Но я использовал top, чтобы найти PID python3, который работал дольше всего и использовал большую часть памяти, и я убил его. Теперь все в норме.
источник