Почему Keras не видит мой графический процессор, в то время как TensorFlow видит?

После ответ от SO я запустил:

# confirm TensorFlow sees the GPU
from tensorflow.python.client import device_lib
assert 'GPU' in str(device_lib.list_local_devices())

# confirm Keras sees the GPU
from keras import backend
assert len(backend.tensorflow_backend._get_available_gpus()) > 0

# confirm PyTorch sees the GPU
from torch import cuda
assert cuda.is_available()
assert cuda.device_count() > 0
print(cuda.get_device_name(cuda.current_device()))

Первый тест работает, а остальные нет.

Запуск nvcc --version дает:

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Sep__1_21:08:03_CDT_2017
Cuda compilation tools, release 9.0, V9.0.176

И nvidia-smi тоже работают.

list_local_devices() обеспечивает:

[name: "/device:CPU:0" device_type: "CPU" memory_limit: 268435456 locality { } incarnation: 459307207819325532, name: "/device:XLA_GPU:0" device_type: "XLA_GPU" memory_limit: 17179869184 locality { } incarnation: 9054555249843627113 physical_device_desc: "device: XLA_GPU device", name: "/device:XLA_CPU:0" device_type: "XLA_CPU" memory_limit: 17179869184 locality { } incarnation: 5902450771458744885 physical_device_desc: "device: XLA_CPU device"]

sess = tf.Session(config=tf.ConfigProto(log_device_placement=True)) возвращает:

Device mapping: /job:localhost/replica:0/task:0/device:XLA_GPU:0 -> device: XLA_GPU device /job:localhost/replica:0/task:0/device:XLA_CPU:0 -> device: XLA_CPU device

Почему Keras и PyTorch не могут работать на моем графическом процессоре? (RTX 2070)

какая версия кераса это?

Paritosh Singh 09.12.2018 22:05

на самом деле тоже не работает с tf tf.test.is_gpu_available() возвращает False

guhur 09.12.2018 22:06

@ParitoshSingh keras - 2.2.4

guhur 09.12.2018 22:06

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

Paritosh Singh 09.12.2018 22:21

что ты имеешь в виду? Я установил tenorflow-gpu с помощью pip

guhur 10.12.2018 10:18
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
5
1 581
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Мне было трудно найти проблему. Собственно, запуск образцов CUDA дал мне отличную информацию:

CUDA error at ../../common/inc/helper_cuda.h:1162 code=30(cudaErrorUnknown) "cudaGetDeviceCount(&device_count)"

Пока с sudo: MapSMtoCores for SM 7.5 is undefined. Default to use 64 Cores/SM GPU Device 0: "GeForce RTX 2070" with compute capability 7.5

Итак, проблема заключалась в том, что мою библиотеку не могли читать все.

Моя ошибка была исправлена:

sudo chmod -R a+r /usr/local/cuda*

Я недавно столкнулся с этой проблемой. Оказалось, что необходимые пакеты, установленные pip (например, keras), не включают флаги, связанные с XLA. Если я перешел на полную установку необходимых пакетов miniconda или anaconda, я смог запустить свой код. В моем случае я запускал AI-код facebook.

Работает ранний индикатор того, что есть проблема:

nvidia-smi

и видя, что ваша глубокая сеть не использует гигабиты данных, а вместо этого использует килобайты. Тогда вы знаете, даже без предупреждений (которые иногда трудно найти в журналах), что проблема заключается в том, как было скомпилировано необходимое программное обеспечение. Вы знаете это, потому что графический процессор не получает соответствия по типу устройства и в результате по умолчанию использует ЦП. Затем код выгружается на процессоры.

В моем случае я установил tenorflow-gpu, ipython, imutils, imgaug и несколько других пакетов с помощью miniconda. Если вы обнаружите, что в conda отсутствует необходимый пакет, используйте:

conda -c conda-forge <package-name>

чтобы подобрать недостающие предметы, такие как imutils и imgaug.

Другие вопросы по теме