Почему Tensorflow не распознает мой графический процессор после установки conda?

Я новичок в глубоком обучении, и последние 2 дня тщетно пытался установить версию tensorflow-gpu на свой компьютер. Я избегал установки драйверов CUDA и cuDNN, поскольку некоторые форумы в Интернете не рекомендуют это из-за многочисленных проблем с совместимостью. Поскольку раньше я уже использовал дистрибутив python conda, я выбрал conda install -c anaconda tensorflow-gpu, как написано на их официальном веб-сайте здесь: https://anaconda.org/anaconda/tensorflow-gpu.

Однако даже после установки версии gpu в новой виртуальной среде (чтобы избежать потенциальных конфликтов с установленными библиотеками pip в базовой среде env), по какой-то загадочной причине tenorflow, похоже, даже не распознает мой графический процессор.

Некоторые фрагменты кода, которые я запустил (в приглашении anaconda), чтобы понять, что он не распознает мой графический процессор: -

1.

>>>from tensorflow.python.client import device_lib
        >>>print(device_lib.list_local_devices())
                    [name: "/device:CPU:0"
                device_type: "CPU"
                memory_limit: 268435456
                locality {
                }
                incarnation: 7692219132769779763
                ]

Как видите, он полностью игнорирует графический процессор.

2.

>>>tf.debugging.set_log_device_placement(True)
    >>>a = tf.constant([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
2020-12-13 10:11:30.902956: I tensorflow/core/platform/cpu_feature_guard.cc:142] This 
TensorFlow 
binary is optimized with oneAPI Deep Neural Network Library (oneDNN)to use the following CPU 
instructions in performance-critical operations:  AVX AVX2
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
>>>b = tf.constant([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]])
>>>c = tf.matmul(a, b)
>>>print(c)
tf.Tensor(
[[22. 28.]
[49. 64.]], shape=(2, 2), dtype=float32)

Здесь предполагалось указать, что он работал с графическим процессором, показывая Executing op MatMul in device /job:localhost/replica:0/task:0/device:GPU:0 (как написано здесь: https://www.tensorflow.org/guide/gpu), но ничего подобного нет. Также я не уверен, что означает сообщение после 2-й строки.

Я также искал несколько решений в Интернете, в том числе здесь, но почти все проблемы связаны с первым методом ручной установки, который я еще не пробовал, поскольку все рекомендовали этот подход.

Я больше не использую cmd, так как переменные среды каким-то образом испортились после удаления tensorflow-cpu из базового env и при повторной установке, он отлично работал с приглашением anaconda, но не с cmd. Это отдельная проблема (и тоже широко распространенная), но я упомянул ее на тот случай, если она сыграет здесь свою роль. Я установил версию gpu в новую виртуальную среду, чтобы обеспечить чистую установку, и, насколько я понимаю, переменные пути необходимо настраивать только для ручной установки библиотек CUDA и cuDNN.

Карта, которую я использую :-( которая поддерживает CUDA)

C:\WINDOWS\system32>wmic path win32_VideoController get name
Name
NVIDIA GeForce 940MX
Intel(R) HD Graphics 620

Версия Tensorflow и Python, которую я использую в настоящее время: -

>>> import tensorflow as tf
>>> tf.__version__
'2.3.0'

Python 3.8.5 (default, Sep  3 2020, 21:29:08) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.

Информация о системе: Windows 10 Home, 64-битная операционная система, процессор на базе x64.

Любая помощь могла бы быть полезна. Заранее спасибо.


person Sarosij Bose    schedule 13.12.2020    source источник
comment
Извините за плохое форматирование, StackOverflow не позволил мне опубликовать вопрос без отступа в коде терминала.   -  person Sarosij Bose    schedule 13.12.2020
comment
У меня такая же проблема. Я обнаружил, что когда я сделал conda list, я увидел, что cudatoolkit не установлен для меня, хотя был установлен tenorflow-gpu. Я также видел, что cudnn не установлен. Я пытаюсь conda install это сейчас. Когда я сделал conda install cudnn, мне потребовалось понизить версию cudatoolkit 11, которую я только что установил, до cudatoolkit 10. Возможно, conda create -n tf-gpu tensorflow-gpu плохо работает для последних выпусков (например, cudatoolkit 11).   -  person user3731622    schedule 16.12.2020
comment
@ user3731622 да, мне тоже пришлось понизить версию. Похоже, conda еще не поддерживает новые библиотеки Tf и CUDA.   -  person Sarosij Bose    schedule 16.12.2020
comment
Мне удалось установить TensorFlow 2.1 с помощью conda, а затем использовать pip для установки TensorFlow 2.4. Мне не нравится смешивать conda и pip, но это способ запустить новую версию TensorFlow.   -  person user3731622    schedule 17.12.2020


Ответы (7)


В настоящее время conda install tensorflow-gpu устанавливает tensorflow v2.3.0 и НЕ устанавливает пакеты conda cudnn или cudatoolkit. Их установка вручную (например, с conda install cudatoolkit=10.1) тоже не решает проблему.

Решение состоит в том, чтобы установить более раннюю версию tensorflow, которая устанавливает cudnn и cudatoolkit, а затем выполнить обновление с помощью pip

conda install tensorflow-gpu=2.1
pip install tensorflow-gpu==2.3.1

(2.4.0 использует cuda 11.0 и cudnn 8.0, однако cudnn 8.0 отсутствует в Anaconda по состоянию на 16/12/2020)

Изменить: также см. Ответ @ GZ0, который ссылается на обсуждение github с однострочным решением

person geometrikal    schedule 16.12.2020
comment
Спасибо @geometrikal, это помогло мне! - person Sarosij Bose; 16.12.2020
comment
Пытался решить это уже некоторое время. Благодарю вас! - person Edward; 24.12.2020
comment
Привет @geometrikal, я пытаюсь следовать вашему ответу при создании новой среды (в Win10), например: `` conda create -n tf_gpu_2_3 tensorflow-gpu = 2.1 - ›pip install tensorflow-gpu == 2.3.1` `` Но это делает среду непоследовательной, и tf-gpu не обнаруживает графический процессор в python. Я делаю что-то неправильно? - person tu_curious; 10.01.2021
comment
@TusharAgarwal попробуйте conda create -n tf_231 python = 3.7, conda activate tf_231, conda install tensorflow-gpu = 2.1, pip install tensorflow-gpu == 2.3.1. Обратите внимание, что «-gpu» может не понадобиться - person geometrikal; 10.01.2021
comment
@TusharAgarwal См. этот пост для временного решения. - person GZ0; 13.01.2021
comment
@ GZ0, пожалуйста, добавьте и этот пост в качестве ответа - person geometrikal; 13.01.2021
comment
@ GZ0 geometrikal: Спасибо вам обоим. Оба подхода работали в контексте вопроса ОП, но в данный момент я не смог достичь своей конечной цели. Я пытался использовать последнюю версию cudatoolkit, но мне нужно выяснить это или дождаться следующего обновления от anaconda. - person tu_curious; 16.01.2021
comment
@TusharAgarwal В этом случае я бы предложил установить все зависимые пакеты (с правильными версиями) в conda (cuda, cudnn и т. Д.), А затем использовать pip для установки последней версии tensorflow. - person GZ0; 16.01.2021

Сборка tensorflow, автоматически выбранная Anaconda в Windows 10 во время установки tensorflow-gpu 2.3, кажется ошибочной. Обходной путь можно найти здесь (рассмотрите возможность проголосовать за ответ GitHub, если вы есть учетная запись GitHub).

Python 3.7: conda install tensorflow-gpu=2.3 tensorflow=2.3=mkl_py37h936c3e2_0

Python 3.8: conda install tensorflow-gpu=2.3 tensorflow=2.3=mkl_py38h1fcfbd6_0

person GZ0    schedule 13.01.2021
comment
оно работает. Проверяю это решение сейчас. - person Laser Cho; 23.05.2021
comment
исправь мою проблему, спасибо - person Yiling Liu; 31.05.2021
comment
На полпути вниз 15-й страницы я просмотрел TL; DR, и я нашел это? и это работает? бесценно! - person J B; 05.06.2021

Решение @geometrikal почти сработало для меня. Но между установкой tensorflow-gpu с conda и установкой tensorflow 2.3 с помощью pip мне нужно было удалить части tenorflow пакета tensorflow-gpu, чтобы избежать предупреждений о согласованности с помощью pip. Конда удалил бы весь пакет. Я знаю, что Conda не рекомендует смешивать pip с conda но это решение сработало, и я устал тратить еще один день на эту проблему.

conda create -n tfgpu python=3.7
conda activate tfgpu
conda install tensorflow-gpu=2.1

pip uninstall tensorflow
pip uninstall tensorflow-estimator
pip uninstall tensorboard 
pip uninstall tensorboard-plugin-wit
pip install tensorflow==2.3
pip check
person tobi.tobt    schedule 12.01.2021
comment
Проблема в том, что spyder, jupyter и т. Д. Установлены в базовой среде и не распознают установку tenorflow. Теперь я не могу снова устанавливать каждый пакет в новой среде tenorflow. - person samarendra chandan bindu Dash; 01.05.2021
comment
@samarendrachandanbinduDash Извините, у меня нет опыта работы со spyder или jupyter. Я использую Pycharm только в сочетании с conda. - person tobi.tobt; 23.06.2021

Я также не смог (пока) заставить TF 2.3.0 распознавать мой графический процессор Nvidia Quadro Pro 620.

Примечание. У меня есть 2 других «среды» на этом ПК (Windows Pro). Все они установлены через Anaconda:

  1. Python 3.7.8 TF 2.0.0 ... распознает (и использует) графический процессор Nvidia
  2. Python 3.6.9 TF 2.1.0 ... распознает (и использует) графический процессор Nvidia
  3. Python 3.8.6 TF 2.3.0 ... НЕ видит графический процессор

Моя машина имеет Cuda 11.1; cuDNN 8.0.5

Моя следующая мысль - рассмотреть возможность понижения версии Python с 3.8.6 до 3.7.8 в третьей конфигурации, где TF = 2.3.0.

Стив

person steve Schneider    schedule 13.12.2020
comment
то же самое здесь ... какие-нибудь обновления? - person Fábio; 08.02.2021

Использование conda для установки TensorFlow - всегда лучший способ управлять несколькими версиями самого TensorFlow, а также CUDA и CUDNN. Недавно я создал новую среду conda и также готовлюсь к установке новейшего TensorFlow. Я также столкнулся с проблемой, о которой вы упомянули. Я проверил список зависимостей из conda install tensorflow-gpu и обнаружил, что пакеты cudatoolkit и cudnn отсутствуют. Поскольку последняя версия tensorflow-gpu в Anaconda - 2.3, я думаю, что проблема уже была указана в ответе @ GZ0 в выпуске GitHub.

Здесь я перечисляю результат ниже:

Использование conda install tensorflow=2.3:

PS > conda install tensorflow-gpu=2.3
## Package Plan ##

  environment location: C:\Anaconda3\envs\test_cuda_38

  added / updated specs:
    - tensorflow-gpu=2.3


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    absl-py-0.12.0             |   py38haa95532_0         176 KB
    aiohttp-3.7.4              |   py38h2bbff1b_1         513 KB
    astunparse-1.6.3           |             py_0          17 KB
    async-timeout-3.0.1        |   py38haa95532_0          14 KB
    blas-1.0                   |              mkl           6 KB
    blinker-1.4                |   py38haa95532_0          23 KB
    brotlipy-0.7.0             |py38h2bbff1b_1003         412 KB
    cachetools-4.2.1           |     pyhd3eb1b0_0          13 KB
    cffi-1.14.5                |   py38hcd4344a_0         224 KB
    chardet-3.0.4              |py38haa95532_1003         194 KB
    click-7.1.2                |     pyhd3eb1b0_0          64 KB
    coverage-5.5               |   py38h2bbff1b_2         272 KB
    cryptography-3.4.7         |   py38h71e12ea_0         643 KB
    cython-0.29.23             |   py38hd77b12b_0         1.7 MB
    gast-0.4.0                 |             py_0          15 KB
    google-auth-1.29.0         |     pyhd3eb1b0_0          76 KB
    google-auth-oauthlib-0.4.4 |     pyhd3eb1b0_0          18 KB
    google-pasta-0.2.0         |             py_0          46 KB
    grpcio-1.36.1              |   py38hc60d5dd_1         1.7 MB
    h5py-2.10.0                |   py38h5e291fa_0         841 KB
    hdf5-1.10.4                |       h7ebc959_0         7.9 MB
    icc_rt-2019.0.0            |       h0cc432a_1         6.0 MB
    idna-2.10                  |     pyhd3eb1b0_0          52 KB
    importlib-metadata-3.10.0  |   py38haa95532_0          34 KB
    intel-openmp-2021.2.0      |     haa95532_616         1.8 MB
    keras-applications-1.0.8   |             py_1          29 KB
    keras-preprocessing-1.1.2  |     pyhd3eb1b0_0          35 KB
    libprotobuf-3.14.0         |       h23ce68f_0         1.9 MB
    markdown-3.3.4             |   py38haa95532_0         144 KB
    mkl-2021.2.0               |     haa95532_296       115.5 MB
    mkl-service-2.3.0          |   py38h2bbff1b_1          49 KB
    mkl_fft-1.3.0              |   py38h277e83a_2         137 KB
    mkl_random-1.2.1           |   py38hf11a4ad_2         223 KB
    multidict-5.1.0            |   py38h2bbff1b_2          61 KB
    numpy-1.20.1               |   py38h34a8a5c_0          23 KB
    numpy-base-1.20.1          |   py38haf7ebc8_0         4.2 MB
    oauthlib-3.1.0             |             py_0          91 KB
    opt_einsum-3.1.0           |             py_0          54 KB
    protobuf-3.14.0            |   py38hd77b12b_1         242 KB
    pyasn1-0.4.8               |             py_0          57 KB
    pyasn1-modules-0.2.8       |             py_0          72 KB
    pycparser-2.20             |             py_2          94 KB
    pyjwt-1.7.1                |           py38_0          48 KB
    pyopenssl-20.0.1           |     pyhd3eb1b0_1          49 KB
    pyreadline-2.1             |           py38_1         145 KB
    pysocks-1.7.1              |   py38haa95532_0          31 KB
    requests-2.25.1            |     pyhd3eb1b0_0          52 KB
    requests-oauthlib-1.3.0    |             py_0          23 KB
    rsa-4.7.2                  |     pyhd3eb1b0_1          28 KB
    scipy-1.6.2                |   py38h66253e8_1        13.0 MB
    tensorboard-plugin-wit-1.6.0|             py_0         630 KB
    tensorflow-2.3.0           |mkl_py38h8557ec7_0           6 KB
    tensorflow-base-2.3.0      |eigen_py38h75a453f_0        49.5 MB
    tensorflow-estimator-2.3.0 |     pyheb71bc4_0         271 KB
    termcolor-1.1.0            |   py38haa95532_1           9 KB
    typing-extensions-3.7.4.3  |       hd3eb1b0_0          12 KB
    typing_extensions-3.7.4.3  |     pyh06a4308_0          28 KB
    urllib3-1.26.4             |     pyhd3eb1b0_0         105 KB
    werkzeug-1.0.1             |     pyhd3eb1b0_0         239 KB
    win_inet_pton-1.1.0        |   py38haa95532_0          35 KB
    wrapt-1.12.1               |   py38he774522_1          49 KB
    yarl-1.6.3                 |   py38h2bbff1b_0         153 KB
    ------------------------------------------------------------
                                           Total:       210.0 MB

Использование conda install tensorflow=2.1:

PS > conda install tensorflow-gpu=2.1
## Package Plan ##

  environment location: C:\Anaconda3\envs\test_cuda

  added / updated specs:
    - tensorflow-gpu=2.1


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    _tflow_select-2.1.0        |              gpu           3 KB
    absl-py-0.12.0             |   py37haa95532_0         175 KB
    aiohttp-3.7.4              |   py37h2bbff1b_1         507 KB
    astor-0.8.1                |   py37haa95532_0          47 KB
    async-timeout-3.0.1        |   py37haa95532_0          14 KB
    blas-1.0                   |              mkl           6 KB
    blinker-1.4                |   py37haa95532_0          23 KB
    brotlipy-0.7.0             |py37h2bbff1b_1003         337 KB
    cachetools-4.2.1           |     pyhd3eb1b0_0          13 KB
    cffi-1.14.5                |   py37hcd4344a_0         220 KB
    chardet-3.0.4              |py37haa95532_1003         192 KB
    click-7.1.2                |     pyhd3eb1b0_0          64 KB
    coverage-5.5               |   py37h2bbff1b_2         273 KB
    cryptography-3.4.7         |   py37h71e12ea_0         641 KB
    cudatoolkit-10.1.243       |       h74a9793_0       300.3 MB
    cudnn-7.6.5                |       cuda10.1_0       179.1 MB
    cython-0.29.23             |   py37hd77b12b_0         1.7 MB
    gast-0.2.2                 |           py37_0         155 KB
    google-auth-1.29.0         |     pyhd3eb1b0_0          76 KB
    google-auth-oauthlib-0.4.4 |     pyhd3eb1b0_0          18 KB
    google-pasta-0.2.0         |             py_0          46 KB
    grpcio-1.36.1              |   py37hc60d5dd_1         1.7 MB
    h5py-2.10.0                |   py37h5e291fa_0         808 KB
    hdf5-1.10.4                |       h7ebc959_0         7.9 MB
    icc_rt-2019.0.0            |       h0cc432a_1         6.0 MB
    idna-2.10                  |     pyhd3eb1b0_0          52 KB
    importlib-metadata-3.10.0  |   py37haa95532_0          34 KB
    intel-openmp-2021.2.0      |     haa95532_616         1.8 MB
    keras-applications-1.0.8   |             py_1          29 KB
    keras-preprocessing-1.1.2  |     pyhd3eb1b0_0          35 KB
    libprotobuf-3.14.0         |       h23ce68f_0         1.9 MB
    markdown-3.3.4             |   py37haa95532_0         144 KB
    mkl-2021.2.0               |     haa95532_296       115.5 MB
    mkl-service-2.3.0          |   py37h2bbff1b_1          48 KB
    mkl_fft-1.3.0              |   py37h277e83a_2         133 KB
    mkl_random-1.2.1           |   py37hf11a4ad_2         214 KB
    multidict-5.1.0            |   py37h2bbff1b_2          85 KB
    numpy-1.20.1               |   py37h34a8a5c_0          23 KB
    numpy-base-1.20.1          |   py37haf7ebc8_0         4.1 MB
    oauthlib-3.1.0             |             py_0          91 KB
    opt_einsum-3.1.0           |             py_0          54 KB
    protobuf-3.14.0            |   py37hd77b12b_1         240 KB
    pyasn1-0.4.8               |             py_0          57 KB
    pyasn1-modules-0.2.8       |             py_0          72 KB
    pycparser-2.20             |             py_2          94 KB
    pyjwt-1.7.1                |           py37_0          49 KB
    pyopenssl-20.0.1           |     pyhd3eb1b0_1          49 KB
    pyreadline-2.1             |           py37_1         143 KB
    pysocks-1.7.1              |           py37_1          28 KB
    requests-2.25.1            |     pyhd3eb1b0_0          52 KB
    requests-oauthlib-1.3.0    |             py_0          23 KB
    rsa-4.7.2                  |     pyhd3eb1b0_1          28 KB
    scipy-1.6.2                |   py37h66253e8_1        12.8 MB
    six-1.15.0                 |   py37haa95532_0          51 KB
    tensorboard-plugin-wit-1.6.0|             py_0         630 KB
    tensorflow-2.1.0           |gpu_py37h7db9008_0           4 KB
    tensorflow-base-2.1.0      |gpu_py37h55f5790_0       105.3 MB
    tensorflow-estimator-2.1.0 |     pyhd54b08b_0         251 KB
    tensorflow-gpu-2.1.0       |       h0d30ee6_0           3 KB
    termcolor-1.1.0            |   py37haa95532_1           9 KB
    typing-extensions-3.7.4.3  |       hd3eb1b0_0          12 KB
    typing_extensions-3.7.4.3  |     pyh06a4308_0          28 KB
    urllib3-1.26.4             |     pyhd3eb1b0_0         105 KB
    werkzeug-0.16.1            |             py_0         258 KB
    win_inet_pton-1.1.0        |   py37haa95532_0          35 KB
    wrapt-1.12.1               |   py37he774522_1          49 KB
    yarl-1.6.3                 |   py37h2bbff1b_0         151 KB
    ------------------------------------------------------------
                                           Total:       745.0 MB

Поэтому вы можете установить последнюю версию (v2.3) tenorflow-gpu от Anaconda на платформе Windows, используя советы от @ GZ0 и @geometrikal, или просто используя conda install tensorflow-gpu=2.1, чтобы получить новейшую и правильную среду.

Обратите внимание, что tensorflow-gpu v2.1 поддерживает Python только между 3.5–3.7.

person yxnchen    schedule 25.04.2021

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

Сначала проверьте совместимую версию здесь.

cuDNN можно найти здесь (требуется бесплатная учетная запись).

Набор инструментов CUDA можно найти здесь.

Опять же, проверьте совместимую версию ПЕРЕД установкой. Более новые версии не имеют обратной совместимости.

person Royce Schultz    schedule 13.12.2020
comment
но разве они не устанавливаются автоматически, когда я устанавливаю tenorflow-gpu с помощью conda? - person Sarosij Bose; 13.12.2020
comment
Нет, это библиотеки низкого уровня, не относящиеся к python. - person Royce Schultz; 13.12.2020
comment
да, это правда, но я увидел здесь, что внешняя установка не требуется: todatascience.com/ - person Sarosij Bose; 13.12.2020
comment
Я не использую conda, поэтому я не уверен, но он говорит, что установите все пакеты, необходимые для tensorflow-gpu, включая cuda и cuDNN совместимые версии, а не сам cuda или cuDNN. Это может быть метод управления ранее установленными пакетами без графического процессора. - person Royce Schultz; 13.12.2020
comment
да, но в списке пакетов есть cuDNN и cuda. Вы активировали свое окружение? - person Royce Schultz; 13.12.2020
comment
Это неверно. Conda установит все необходимые компоненты среды выполнения из набора инструментов CUDA и CNN. То, что он не установит, - это поддерживаемый драйвер NVIDIA GPU. - person talonmies; 13.12.2020

Я вижу, что у вашего графического процессора есть вычислительные возможности 5.0, и это нормально, TensorFlow это должно понравиться. Таким образом, я предполагаю, что во время настройки среды что-то пошло не так. Попробуйте создать новую среду, используя:

conda create --name tf_gpu tensorflow-gpu 

Затем установите все остальные нужные пакеты в tf_gpu и повторите попытку.

P.S: действительно важно, чтобы в окружении был только один пакет TensorFlow (один gpu). Если у вас их несколько, нет гарантии, что

import tensorflow as tf

импортирует тот, который вы хотите ...

person Vasil Yordanov    schedule 13.12.2020