Я хотел бы знать, pytorch
использует ли мой графический процессор. Можно определить, nvidia-smi
есть ли какие-либо действия с графическим процессором во время процесса, но я хочу что-то записать в python
сценарии.
Есть ли способ сделать это?
Это будет работать:
In [1]: import torch
In [2]: torch.cuda.current_device()
Out[2]: 0
In [3]: torch.cuda.device(0)
Out[3]: <torch.cuda.device at 0x7efce0b03be0>
In [4]: torch.cuda.device_count()
Out[4]: 1
In [5]: torch.cuda.get_device_name(0)
Out[5]: 'GeForce GTX 950M'
In [6]: torch.cuda.is_available()
Out[6]: True
Это говорит мне о том, что GPU GeForce GTX 950M
используется PyTorch
.
torch.cuda.current_device()
был полезен для меня. Он показал, что мой GPU, к сожалению, слишком стар: «Найден GPU0 GeForce GTX 760, который имеет возможность cuda 3.0. PyTorch больше не поддерживает этот GPU, потому что он слишком старый».torch.cuda.is_available()
$ watch -n 2 nvidia-smi
делает работу. Для более подробной информации, пожалуйста, смотрите мой ответ ниже .Поскольку это не было предложено здесь, я добавляю метод, использующий
torch.device
, поскольку это очень удобно, также при инициализации тензоров на правильныхdevice
.Вывод:
Как уже упоминалось выше, с помощью
device
этого можно :Чтобы переместить тензоры в соответствующие
device
:Чтобы создать тензор непосредственно на
device
:Что делает переключение между процессором и графическим процессором удобным без изменения фактического кода.
Редактировать:
Поскольку возникли некоторые вопросы и путаница в отношении кэшированной и выделенной памяти, я добавляю дополнительную информацию об этом:
torch.cuda.max_memory_cached(device=None)
Возвращает максимальный объем памяти графического процессора, управляемый распределителем кэширования в байтах для данного устройства.
torch.cuda.memory_allocated(device=None)
Возвращает текущее использование памяти графическим процессором в тензорах в байтах для данного устройства.
Вы можете либо напрямую передать,
device
как указано выше в сообщении, либо оставить « Нет», и он будет использоватьcurrent_device()
.источник
## neural network in pytorch
, затем я добавлю ваш код в конце. Это все еще показывает Использование устройства: CUDA; и 0Gb для выделенного и кэшированного. Также попытался вставить его в конце цикла forfor i in range(epoch):
после обратного распространения, все еще 0GBmy_tensor_on_gpu * my_tensor_on_cpu
провалится.Found GPU0 GeForce GT 750M which is of cuda capability 3.0. PyTorch no longer supports this GPU because it is too old. The minimum cuda capability that we support is 3.5.
После того, как вы запустите обучающий цикл, если вы хотите вручную просмотреть его с терминала, использует ли ваша программа ресурсы GPU и в какой степени, то вы можете просто использовать
watch
как в:Это будет постоянно обновлять статистику использования каждые 2 секунды, пока вы не нажмете ctrl+c
Если вам нужен больший контроль над большей статистикой GPU, вы можете использовать более сложную версию
nvidia-smi
with--query-gpu=...
. Ниже приведена простая иллюстрация этого:который будет выводить статистику что-то вроде:
Примечание . Между именами запросов, разделенных запятыми, не должно быть пробелов
--query-gpu=...
. В противном случае эти значения будут игнорироваться и статистика не будет возвращена.Кроме того, вы можете проверить, правильно ли ваша установка PyTorch обнаруживает вашу установку CUDA, выполнив:
True
означает положение , что PyTorch настроен правильно , и это с помощью GPU , хотя вы должны переместить / место тензоров с необходимыми заявлениями в вашем коде.Если вы хотите сделать это внутри кода Python, посмотрите в этот модуль:
https://github.com/jonsafari/nvidia-ml-py или в pypi здесь: https://pypi.python.org/pypi/nvidia-ml-py/
источник
watch
полезноНа сайте office и на начальной странице get проверьте GPU для PyTorch, как показано ниже:
Ссылка: PyTorch | Начало работы
источник
С практической точки зрения только одно небольшое отступление:
Это
dev
теперь знает, если CUDA или CPU.И есть разница, как вы поступаете с моделью и с тензорами при переходе на cuda. Сначала это немного странно.
Это все сложно, и если вы поймете это однажды, это поможет вам быстрее справиться с меньшим количеством ошибок.
источник
M()
? ГдеM
определяется?Чтобы проверить, доступен ли графический процессор:
Если вышеуказанная функция возвращает
False
,CUDA_VISIBLE_DEVICES
. Когда значениеCUDA_VISIBLE_DEVICES
равно -1, то все ваши устройства скрыты. Вы можете проверить это значение в коде с помощью этой строки:os.environ['CUDA_VISIBLE_DEVICES']
Если вышеприведенная функция возвращает
True
, это не обязательно означает, что вы используете графический процессор. В Pytorch вы можете размещать тензоры для устройств при их создании. По умолчанию тензоры выделяются дляcpu
. Чтобы проверить, где расположен ваш тензор, выполните:Обратите внимание, что вы не можете работать с тензорами, расположенными в разных устройствах. Чтобы узнать, как выделить тензор для GPU, смотрите здесь: https://pytorch.org/docs/stable/notes/cuda.html.
источник
Практически на все ответы здесь ссылки
torch.cuda.is_available()
. Однако это только одна часть медали. Он сообщает вам, доступен ли графический процессор (фактически CUDA), а не используется ли он на самом деле. В типичной настройке вы бы настроили ваше устройство примерно так:но в более крупных средах (например, в научных исследованиях) также обычно дают пользователю больше возможностей, поэтому на основе ввода они могут отключить CUDA, указать идентификаторы CUDA и т. д. В таком случае, используется или нет графический процессор, зависит не только от того, доступен он или нет. После того, как устройство было установлено на устройство факела, вы можете получить его
type
свойство, чтобы проверить, является ли оно CUDA или нет.источник
Просто из командной строки или среды Linux выполните следующую команду.
Выше следует напечатать
True
Этот должен напечатать следующее:
источник
Если вы здесь , потому что ваш pytorch всегда дает
False
для того,torch.cuda.is_available()
что, вероятно , потому , что вы установили pytorch версию без поддержки GPU. (Например: вы запрограммированы на ноутбуке, а затем тестируете на сервере).Решение состоит в том, чтобы удалить и снова установить pytorch с помощью правильной команды на странице загрузок pytorch . Также обратитесь к этой проблеме pytorch.
источник
Создайте тензор на GPU следующим образом:
Не выходите, откройте другой терминал и проверьте, использует ли процесс python графический процессор, используя:
источник
nvidia-smi
с командной строкойnvidia-smi
.