Я получил эту ошибку на своем mac, потому что он запускал сервер Apache по умолчанию, используя тот же порт, что и тот, который используется сервером узлов, который в моем случае был портом 80. Все, что мне нужно было сделать, это остановить его с помощью sudo apachectl stop
Надеюсь, это кому-то поможет.
Нет, я не думаю, что «открыть библиотеку CUDA» достаточно, чтобы сказать, потому что разные узлы графика могут быть на разных устройствах.
Чтобы узнать, какое устройство используется, вы можете включить лог устройства, например:
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
Это должно предоставить список устройств, доступных для 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)
Я думаю, что есть более простой способ добиться этого.
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
Мне кажется, что это легче для меня, чем для тех подробных журналов.
Помимо использования sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
, который описан в других ответах, а также в официальной документации TF , вы можете попытаться назначить вычисление для gpu и посмотреть, есть ли у вас ошибка.
import tensorflow as tf
with tf.device('/gpu:0'):
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
c = tf.matmul(a, b)
with tf.Session() as sess:
print (sess.run(c))
Здесь
Невозможно назначить устройство узлу «MatMul»: не удалось удовлетворить явную спецификацию устройства / устройство: GPU: 0, потому что ни одно устройство, соответствующее этой спецификации регистрируются в этом процессе
blockquote>
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.
Это подтвердит, что тензорный поток с использованием 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
log_device_placement
и как видеть CPU и GPU на выходе?). Это улучшит качество вашего ответа!
– Nander Speerstra
6 December 2016 в 08:40
Я предпочитаю использовать nvidia-smi для мониторинга использования GPU. если он значительно повышается при запуске программы, это сильный признак того, что ваш тензорный поток использует графический процессор.
В дополнение к другим ответам следующее должно помочь вам убедиться, что ваша версия тензорного потока включает поддержку графического процессора.
import tensorflow as tf
print(tf.test.is_built_with_cuda())
Следующий фрагмент кода должен предоставить вам все устройства, доступные для тензорного потока.
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 "]
blockquote>
Я считаю, что просто запрос 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
Выполните следующее в 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.