Anaconda устанавливает Cudnn 7.3.1 в каталог среды - вызывает сбой Tensorflow 2.0 - PullRequest
0 голосов
/ 30 мая 2019

Я пытался запустить какой-нибудь простой код tensorflow-gpu 2.0 для выполнения свертки на изображении.У меня есть среда Anaconda ubuntu 18.04x64 с питоном 3.6.8.

Ошибка, по-видимому, заключается в том, что при установке tensorflow-gpu Anaconda установит старую версию cudnn-7.3.1 в каталог пакетов для среды conda.Tensorflow использует эту старую версию cudnn, и это вызывает ошибку cudnn при запуске кода ниже.

import tensorflow as tf
import matplotlib.pyplot as plt
import numpy as np
from sklearn.datasets import load_sample_image

# Load sample images
china = load_sample_image("china.jpg") / 255
flower = load_sample_image("flower.jpg") / 255
images = np.array([china, flower])
batch_size, height, width, channels = images.shape

# Create 2 filters
filters = np.zeros(shape=(7, 7, channels, 2), dtype=np.float32)
filters[:, 3, :, 0] = 1  # vertical line
filters[3, :, :, 1] = 1  # horizontal line

outputs = tf.nn.conv2d(images, filters, strides=1, padding="SAME")

plt.imshow(outputs[0, :, :, 1], cmap="gray") # plot 1st image's 2nd feature map
plt.axis("off") # Not shown in the book
plt.show()

Я пытаюсь запустить этот код и получаю сообщение об ошибке, говорящее о

tensorflow/stream_executor/cuda/cuda_dnn.cc:328]
Loaded runtime CuDNN library: 7.3.1 but source was
compiled with: 7.4.2.  CuDNN library major and
minor version needs to match or have higher minor
version in case of CuDNN 7.0 or later version. If
using a binary install, upgrade your CuDNN 

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

На самом деле на моем компьютере установлена ​​cudnn версия 7.6, так что это противоречиво cudnn 7.3.1определенно из Анаконды.Я искал в каталоге среды Anaconda «cudnn» и нашел все эти старые версии библиотеки.Существует также множество старых tensorflow версий, хотя, похоже, они не вызывают каких-либо проблем.

Есть идеи, как решить эту проблему?Я могу буквально скопировать правильные cudnn.h файлы и тому подобное, но я не уверен, что это будет лучшей идеей.Это может дестабилизировать мою систему, если некоторые символы изменились и т.д.Первый был об установке нескольких версий cuda и cudnn на компьютер - это не то, что я хотел бы сделать.Но в посте пользователь указывает, что Anaconda установила версию 7.3.1.

Как использовать новейшую версию 7.5 cudnn в среде conda?

ОБНОВЛЕНИЕ 2:

Я отправил сообщение о проблеме на githubдля этой проблемы Анаконде.В основном не получил ответа.Похоже, они неправильно истолковали проблему.Их ответ состоял в том, что они не поддерживают pip установленные колеса для Tensorflow.Но я использовал менеджер пакетов conda, чтобы установить тензор потока-2.0, поэтому кажется, что они неправильно истолковали проблему.Но это есть на GitHub.

https://github.com/conda/conda/issues/8736

Ответы [ 2 ]

0 голосов
/ 13 июня 2019

Похоже, что Anaconda только что обновила свою сборку, чтобы включить cudnn 7.6 и cudatoolkit 10.1.168.Так что эта проблема должна уйти сейчас.Простое решение, если вы столкнулись с этой проблемой, состоит в том, чтобы активировать вашу среду с помощью

conda activate <environment_name>

, затем обновить пакеты в вашей среде

conda update --all

Или вы также можете обновить только отдельные пакетывместо всей среды.

0 голосов
/ 03 июня 2019

Хорошо, я наконец нашел хакерский способ обойти это.Это может сработать или не сработать для других пользователей, но у меня сработало.

В итоге я последовал предложению этого блога post .

https://medium.com/@shaolinkhoa/install-tensorflow-gpu-2-0-alpha-on-anaconda-for-windows-10-ubuntu-ced099010b21?fbclid=IwAR1n3qGGmuG_b2Dns3SnnSmmcFYfooLdm292ZpvGJZ9fgwRUzwDxZVU5pak

Основная идея заключается в том, что вы можете зайти в папку Anaconda и обменять старые библиотечные файлы cudnn на новые.

Подробная информация о том, как это сделать, в сообщении в блоге.Но вот в основном шаги, которым я следовал.

  1. Установите пакет numba с conda install numba в моей среде tenorflow-2.0.Также установите последнюю версию пакета cudatoolkit 10 с conda install -c anaconda cudatoolkit.

  2. Загрузите последнюю версию cudnn с nvidia.Я использовал версию 7.6

  3. , чтобы распаковать файлы во временную директорию.

  4. В Ubuntu я открыл файловый менеджер Nautilus в своей папке сред Anaconda и искал cudnn.Поля cudnn находились в каталогах /lib и /include моей среды Tensorflow-2.0.

  5. Я скопировал файл cudnn.h из временного каталога в каталог /include среды Anaconda.

  6. Я скопировал оставшиеся файлы библиотеки cudnn/lib64 из временного каталога, включая файлы libcudnn.so, libcudnn.so.7, libcudnn.so.7.6.0, libcudnn_static.a, в каталог /lib среды Anaconda.

7. Затем я запустил numba -s, чтобы убедиться, что новые библиотечные файлы были распознаны средой.

После этого я смог запустить свой код tenorflow-2.0, и он работал просто отлично.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...