Как определить, какая оптимизация тензорного потока используется? [Дубликат]

Я получил эту ошибку на своем mac, потому что он запускал сервер Apache по умолчанию, используя тот же порт, что и тот, который используется сервером узлов, который в моем случае был портом 80. Все, что мне нужно было сделать, это остановить его с помощью sudo apachectl stop

Надеюсь, это кому-то поможет.

107
задан talonmies 24 June 2016 в 09:37
поделиться

11 ответов

Нет, я не думаю, что «открыть библиотеку CUDA» достаточно, чтобы сказать, потому что разные узлы графика могут быть на разных устройствах.

Чтобы узнать, какое устройство используется, вы можете включить лог устройства, например:

sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
124
ответ дан Yao Zhang 16 August 2018 в 02:30
поделиться
  • 1
    Я попробовал это, и он ничего не печатает. Любая идея, почему это может быть? – Qubix 1 February 2017 в 09:01
  • 2
    Вы сделали это на ноутбуке jupyter? – Tamim Addari 17 March 2017 в 10:51
  • 3
    То же, что и @Qubix, ничего не печатает. Я выполняю его в ноутбуке Jupyter. Я попытался напечатать sess, но у меня ничего не было. – richar8086 2 April 2017 в 18:51
  • 4
    Вывод может быть выполнен на консоли, откуда вы запустили ноутбук Jupyter. – musically_ut 9 April 2017 в 10:31
  • 5
    Qubix и richar8086, он печатает на терминале, где вы запустили блокнот jupyter – wafflecat 5 October 2017 в 06:50

Это должно предоставить список устройств, доступных для Tensorflow (под Py-3.6):

tf = tf.Session(config=tf.ConfigProto(log_device_placement=True))
tf.list_devices()
# _DeviceAttributes(/job:localhost/replica:0/task:0/device:CPU:0, CPU, 268435456)
7
ответ дан f0nzie 16 August 2018 в 02:30
поделиться
  • 1
    человек, я поставил ваш вопрос по ошибке ... если вы отредактируете свой вопрос, я аннулирую свой downvote – Francesco Boi 17 February 2018 в 17:33

Я думаю, что есть более простой способ добиться этого.

import tensorflow as tf
if tf.test.gpu_device_name():
    print('Default GPU Device: {}'.format(tf.test.gpu_device_name()))
else:
    print("Please install GPU version of TF")

Обычно печатает как

Default GPU Device: /device:GPU:0

Мне кажется, что это легче для меня, чем для тех подробных журналов.

20
ответ дан Ishan Bhatt 16 August 2018 в 02:30
поделиться
118
ответ дан Kirill Slatin 16 August 2018 в 02:30
поделиться
  • 1
    Результат: [[22. 28.] [49. 64.]] – Georgios Pligoropoulos 5 June 2017 в 16:46
  • 2
    @GeorgePligor результат здесь не очень важен. Либо у вас есть результат, либо графический процессор, либо у вас есть ошибка, а это значит, что он не использовался – Salvador Dali 5 June 2017 в 18:23
  • 3
    Это не сработало для меня. Я запустил это внутри своего контейнера Docker, который вызывается nvidia-docker и т. Д. Однако я не получаю ошибки, а процессор - тот, который выполняет эту работу. Я немного увеличил количество матриц (10k * 10k), чтобы обеспечить его вычисление на некоторое время. CPU util поднялся до 100%, но GPU оставался прохладным, как всегда. – pascalwhoop 13 December 2017 в 20:00
  • 4
    Я получил "нет устройств, соответствующих & quot; при запуске в консоли. В среде IDE, такой как pycharm, нет ошибки. Я предполагаю, что это связано с сеансом, который я использовал, который отличается от консоли. – cn123h 24 February 2018 в 14:15
  • 5
    Легко понять. Если доступ к GPU, он напечатает что-то вроде Found device 0 with properties: name: GeForce GTX 1080 Ti major: 6 minor: 1 memoryClockRate(GHz): 1.582 pciBusID: 0000:02:00.0 totalMemory: 10.92GiB freeMemory: 10.76GiB – Leoli 6 August 2018 в 04:04

Хорошо, сначала запустите ipython shell с терминала и import TensorFlow

$ ipython --pylab
Python 3.6.5 |Anaconda custom (64-bit)| (default, Apr 29 2018, 16:14:56) 
Type 'copyright', 'credits' or 'license' for more information
IPython 6.4.0 -- An enhanced Interactive Python. Type '?' for help.
Using matplotlib backend: Qt5Agg

In [1]: import tensorflow as tf

Теперь мы можем смотреть использование памяти GPU с помощью команды:

# realtime update for every 2s
$ watch -n 2 nvidia-smi

Поскольку мы только import выпустили TensorFlow, но еще не использовали какой-либо графический процессор, статистика использования будет:

Обратите внимание, что использование памяти GPU очень мало (~ 200 МБ).



Теперь давайте загрузим графический процессор в наш код. Как указано в tf documentation , do:

In [2]: sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

Теперь статистика watch должна показывать обновленную память использования GPU, как показано ниже:

Обратите внимание, что наш Python-процесс из оболочки ipython использует 7,7 ГБ памяти GPU.


PS Вы можете продолжить смотреть эти статистические данные по мере запуска кода, чтобы узнать, насколько интенсивным является использование GPU.

3
ответ дан kmario23 16 August 2018 в 02:30
поделиться
  • 1
    Мне жаль, что я не смогу ответить на вопросы. Этот золотой – Zain Rizvi 20 July 2018 в 17:45
  • 2
    @ ZainRizvi Спасибо за ваши добрые слова! – kmario23 21 July 2018 в 08:34

Это подтвердит, что тензорный поток с использованием GPU также тренируется?

Код

sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

Выход

I tensorflow/core/common_runtime/gpu/gpu_device.cc:885] Found device 0 with properties: 
name: GeForce GT 730
major: 3 minor: 5 memoryClockRate (GHz) 0.9015
pciBusID 0000:01:00.0
Total memory: 1.98GiB
Free memory: 1.72GiB
I tensorflow/core/common_runtime/gpu/gpu_device.cc:906] DMA: 0 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:916] 0:   Y 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:975] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 730, pci bus id: 0000:01:00.0)
Device mapping:
/job:localhost/replica:0/task:0/gpu:0 -> device: 0, name: GeForce GT 730, pci bus id: 0000:01:00.0
I tensorflow/core/common_runtime/direct_session.cc:255] Device mapping:
/job:localhost/replica:0/task:0/gpu:0 -> device: 0, name: GeForce GT 730, pci bus id: 0000:01:00.0
23
ответ дан Nander Speerstra 16 August 2018 в 02:30
поделиться
  • 1
    Пожалуйста, добавьте небольшое объяснение в why ваш ответ работает (что делает log_device_placement и как видеть CPU и GPU на выходе?). Это улучшит качество вашего ответа! – Nander Speerstra 6 December 2016 в 08:40
  • 2
    Попробуйте правильно отформатировать код – MashukKhan 6 December 2016 в 08:58

Я предпочитаю использовать nvidia-smi для мониторинга использования GPU. если он значительно повышается при запуске программы, это сильный признак того, что ваш тензорный поток использует графический процессор.

9
ответ дан scott huang 16 August 2018 в 02:30
поделиться
  • 1
    Это косвенный путь – papabiceps 26 September 2017 в 12:08
  • 2
    Как вы используете nvidia-smi для мониторинга использования GPU? – Razin 10 October 2017 в 02:32
  • 3
    после установки cuda. nvidia-smi должен быть в вашей системе. Обычно я использую «nvidia-smi -l» для мониторинга использования. – scott huang 10 October 2017 в 02:45
  • 4
    Вы также можете использовать watch nvidia-smi, обновлять экран каждые 2 секунды – Perseus14 10 January 2018 в 11:27
  • 5
    Смотреть nvidia-smi хорошо работает для меня. Я также могу видеть на выходе, что мой процесс python использует графический процессор – formica 16 April 2018 в 17:02

В дополнение к другим ответам следующее должно помочь вам убедиться, что ваша версия тензорного потока включает поддержку графического процессора.

import tensorflow as tf
print(tf.test.is_built_with_cuda())
6
ответ дан Sepideh Kharaghani 16 August 2018 в 02:30
поделиться

Следующий фрагмент кода должен предоставить вам все устройства, доступные для тензорного потока.

from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())

Образец вывода

[имя: "/ cpu: 0" device_type: " CPU "memory_limit: 268435456 местонахождение {} воплощение: 4402277519343584096,

имя:" / gpu: 0 "device_type:" GPU "memory_limit: 6772842168 locality {bus_id: 1} воплощение: 7471795903849088328 physical_device_desc:" device: 0 , имя: GeForce GTX 1070, идентификатор шины pci: 0000: 05: 00.0 "]

35
ответ дан Sheraz 16 August 2018 в 02:30
поделиться

Я считаю, что просто запрос gpu из командной строки проще всего:

nvidia-smi

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 384.98                 Driver Version: 384.98                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 980 Ti  Off  | 00000000:02:00.0  On |                  N/A |
| 22%   33C    P8    13W / 250W |   5817MiB /  6075MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1060      G   /usr/lib/xorg/Xorg                            53MiB |
|    0     25177      C   python                                      5751MiB |
+-----------------------------------------------------------------------------+

, если ваше обучение является фоновым процессом, pid из jobs -p должен соответствовать pid из nvidia-smi

7
ответ дан Tim 16 August 2018 в 02:30
поделиться

Выполните следующее в Jupyter,

import tensorflow as tf
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

. Если вы настроили среду должным образом, вы получите следующий вывод в терминале, где вы запустили «jupyter notebook»,

2017-10-05 14:51:46.335323: I c:\tf_jenkins\home\workspace\release-win\m\windows-gpu\py\35\tensorflow\core\common_runtime\gpu\gpu_device.cc:1030] Creating TensorFlow device (/gpu:0) -> (device: 0, name: Quadro K620, pci bus id: 0000:02:00.0)
Device mapping:
/job:localhost/replica:0/task:0/gpu:0 -> device: 0, name: Quadro K620, pci bus id: 0000:02:00.0
2017-10-05 14:51:46.337418: I c:\tf_jenkins\home\workspace\release-win\m\windows-gpu\py\35\tensorflow\core\common_runtime\direct_session.cc:265] Device mapping:
/job:localhost/replica:0/task:0/gpu:0 -> device: 0, name: Quadro K620, pci bus id: 0000:02:00.0

Вы можете видеть здесь, я использую TensorFlow с Nvidia Quodro K620.

4
ответ дан wafflecat 16 August 2018 в 02:30
поделиться
  • 1
    Юпитер вообще не нужен, пожалуйста, не добавляйте сложность к вопросу – Patrizio Bertoni 3 August 2018 в 10:01
  • 2
    Некоторые пользователи могут захотеть, чтобы GPU использовался в Jupyter. Кроме того, это можно запустить из сценария Python. – wafflecat 4 August 2018 в 11:37
Другие вопросы по тегам:

Похожие вопросы: