Поддержка GPU для TensorFlow и PyTorch

#tensorflow #pytorch #gpu

#tensorflow #pytorch #графический процессор

Вопрос:

Хорошо, итак, я работал над кучей проектов глубокого обучения и стажировок, и мне никогда не приходилось проходить тяжелые тренировки. Но в последнее время я подумывал о том, чтобы провести некоторое обучение передаче, для чего мне нужно будет запустить свой код на GPU. Теперь у меня есть система с Windows 10 и выделенным графическим процессором NVIDIA GeForce 940M. Я провел много исследований в Интернете, но я все еще немного сбит с толку. Я еще не установил NVIDIA Cuda Toolkit или cuDNN или tensorflow-gpu в своей системе. В настоящее время я использую tensorflow и pytorch для обучения своих моделей DL. Вот мои запросы —

  1. Когда я определяю тензор в tf или pytorch, по умолчанию это тензор процессора. Итак, все обучение, которое я проводил до сих пор, было на процессоре. Итак, если я удостоверюсь, что установил правильные версии Cuda и cuDNN и tensorflow-gpu (специально для tensorflow), я смогу запускать свои модели на своем GPU, используя tf-gpu и pytorch, и все? (Я знаю о torch.cuda.is_available() в pytorch, чтобы убедиться, что pytorch может получить доступ к моему графическому процессору и модулю device_lib в tf, чтобы проверить, виден ли мой графический процессор для tensorflow) (я также знаю о том факте, что tf не поддерживает все графические процессоры Nvidia)

  2. Почему у tf есть отдельный модуль для поддержки GPU? Похоже, что в PyTorch этого нет, и все, что вам нужно сделать, это перевести ваш тензор из cpu () в cuda (), чтобы переключаться между ними.

  3. Зачем устанавливать cuDNN? Я знаю, что это высокоуровневый API CUDA, созданный для поддержки обучения глубоких нейронных сетей на GPU. Но используют ли tf-gpu и torch их в серверной части при обучении на gpu?

  4. После tf == 1.15 они объединили поддержку CPU и GPU в один пакет?

Ответ №1:

Прежде всего, к сожалению, 940M — довольно слабый графический процессор для обучения. Я предлагаю вам использовать Google colab для более быстрого обучения, но, конечно, это будет быстрее, чем CPU. Итак, вот мои ответы на ваши четыре вопроса.

1-) Да, если вы правильно установите требования, то сможете работать на GPU. Вы также можете вручную поместить свои данные в свой графический процессор. Вы можете проверить реализации в TensorFlow. В PyTorch вам следует указать устройство, которое вы хотите использовать. Как вы сказали, вы должны сделать, device = torch.device("cuda" if args.cuda else "cpu") тогда для моделей и данных вы всегда должны вызывать .to(device) , тогда он будет автоматически использовать GPU, если он доступен.

2-) PyTorch также нуждается в дополнительной установке (модуле) для поддержки GPU. Однако с недавними обновлениями как TF, так и PyTorch стали простыми в использовании для кода, совместимого с GPU.

3-) И Tensorflow, и PyTorch основаны на cuDNN. Вы можете использовать их без cuDNN, но, насколько я знаю, это снижает производительность, но я не уверен в этой теме.

4-) Нет, это все еще разные пакеты. tensorflow-gpu==1.15 and tensorflow==1.15 то, что они сделали с tf2, делало tensorflow более похожим на Keras. Таким образом, он более упрощен, чем 1.15 или ранее.

Комментарии:

1. в вашем втором ответе, что вы имеете в виду, PyTorch также нуждается в дополнительной установке? Я предполагаю, что вы имеете в виду установку совместимых версий Cuda и cuDNN с PyTorch, верно?

2. @vikram71198 да, для cuda вам следует установить другой модуль PyTorch (например, torch ==1.6.0 cu101). Я не уверен, что cuDNN является обязательным условием, но cudatoolkit является.

Ответ №2:

На остальное уже был дан ответ относительно 3) cuDNN оптимизирует layer и подобные операции на аппаратном уровне, и эти реализации являются чистой черной магией. Невероятно сложно написать код CUDA, который правильно использует ваш графический процессор (как загружать данные в графический процессор, как на самом деле выполнять их с использованием матриц и т.д.)