Проблема с настройкой поддержки графического процессора Tensorflow

#python #linux #tensorflow #ubuntu

Вопрос:

Я пытаюсь установить поддержку графического процессора Tensorflow, используя следующее руководство:

https://www.tensorflow.org/install/gpu

Я на Ubuntu (20.04 LTS)

Я следовал инструкциям для последней версии Ubuntu ниже (Cuda 11).:

 # Add NVIDIA package repositories
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /"
sudo apt-get update

wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb

sudo apt install ./nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
sudo apt-get update

wget https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/libnvinfer7_7.1.3-1 cuda11.0_amd64.deb
sudo apt install ./libnvinfer7_7.1.3-1 cuda11.0_amd64.deb
sudo apt-get update

# Install development and runtime libraries (~4GB)
sudo apt-get install --no-install-recommends 
    cuda-11-0 
    libcudnn8=8.0.4.30-1 cuda11.0  
    libcudnn8-dev=8.0.4.30-1 cuda11.0

# Reboot. Check that GPUs are visible using the command: nvidia-smi

# Install TensorRT. Requires that libcudnn8 is installed above.
sudo apt-get install -y --no-install-recommends libnvinfer7=7.1.3-1 cuda11.0 
    libnvinfer-dev=7.1.3-1 cuda11.0 
    libnvinfer-plugin7=7.1.3-1 cuda11.0
 

После запуска и перезагрузки у меня есть Cuda 11 и cuDNN 8.

После этого я установил tensorflow с помощью простого pip install tensorflow , как я понял в Интернете, нет необходимости tensorflow-gpu явно устанавливать в более новых версиях tensorflow.

Это то, что я получаю после попытки импортировать tensorflow и проверить физические устройства:

 import tensorflow as tf
 

Результат:

 2021-06-02 16:04:03.347039: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library libcudart.so.11.0
 
 tf.config.list_physical_devies('GPU')
 

Результат:

 2021-06-02 16:11:19.035743: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library libcuda.so.1
2021-06-02 16:11:19.067500: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:937] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2021-06-02 16:11:19.067753: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1733] Found device 0 with properties: 
pciBusID: 0000:01:00.0 name: GeForce GTX 1060 6GB computeCapability: 6.1
coreClock: 1.759GHz coreCount: 10 deviceMemorySize: 5.93GiB deviceMemoryBandwidth: 178.99GiB/s
2021-06-02 16:11:19.067771: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library libcudart.so.11.0
2021-06-02 16:11:19.069485: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library libcublas.so.11
2021-06-02 16:11:19.069529: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library libcublasLt.so.11
2021-06-02 16:11:19.069625: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcufft.so.10'; dlerror: libcufft.so.10: cannot open shared object file: No such file or directory
2021-06-02 16:11:19.069689: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcurand.so.10'; dlerror: libcurand.so.10: cannot open shared object file: No such file or directory
2021-06-02 16:11:19.069736: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcusolver.so.11'; dlerror: libcusolver.so.11: cannot open shared object file: No such file or directory
2021-06-02 16:11:19.069796: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcusparse.so.11'; dlerror: libcusparse.so.11: cannot open shared object file: No such file or directory
2021-06-02 16:11:19.069930: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library libcudnn.so.8
2021-06-02 16:11:19.069938: W tensorflow/core/common_runtime/gpu/gpu_device.cc:1766] Cannot dlopen some GPU libraries. Please make sure the missing libraries mentioned above are installed properly if you would like to use GPU. Follow the guide at https://www.tensorflow.org/install/gpu for how to download and setup the required libraries for your platform.
Skipping registering GPU devices...
[]
 

Похоже, что tensorflow жалуется на 4 файла (библиотеки.so):

  • libcufft.so.10
  • libcurand.so.10
  • libcusolver.so.11
  • libcusparse.so.11

Я попытался найти их в своей системе, используя locate команду в Ubuntu, но их нигде нет.

Я ничего не добавил в свой .bashrc, так как не был уверен, каким должен быть LD_LIBRARY_PATH.

Ответ №1:

Поместите этот путь к библиотеке в файл ~/.bashrc и исходный код, затем попробуйте

 export PATH=/usr/local/cuda-11.0/bin:${PATH}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:${LD_LIBRARY_PATH}
export LD_LIBRARY_PATH=/usr/local/cuda-11.0/lib64:${LD_LIBRARY_PATH}
export CUDA_HOME=/usr/local/cuda
 

Пожалуйста, измените свой путь в соответствии с вашими настройками.

Комментарии:

1. У меня есть каталог, usr/local/cuda-11.0/ и у меня также есть каталог, в /usr/lib/cuda/ котором я установил с помощью sudo apt-get nvidia-cuda-toolkit (мне это вообще нужно?), После добавления этого в .bashrc 2 файла были разрешены, но осталось еще 2

2. 2021-06-02 16:50:20: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcusolver.so.11'; dlerror: libcusolver.so.11: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/cuda-11.0/lib64:/usr/local/cuda/lib64: 2021-06-02 16:50:20: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcusparse.so.11'; dlerror: libcusparse.so.11: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/cuda-11.0/lib64:/usr/local/cuda/lib64:

3. Похоже , что в частности, есть некоторые отсутствующие файлы usr/local/cuda-11.0/lib64 libcusolver.so.11 , и libcusparse.so.11 разве я что-то не установил?

4. У вас повреждена установка. Инструкции, которые вы опубликовали в своем вопросе, были правильными. Однако вам также не следовало этого делать sudo apt-get nvidia-cuda-toolkit . Эта команда нигде не указана в инструкциях, которые вы опубликовали в своем вопросе. Мое предложение состояло бы в том, чтобы начать все сначала с новой установки Ubuntu и следовать инструкциям, которые вы опубликовали в своем вопросе.

5. Это было немного запутанно, потому что они просят вас установить CUPTI и установить переменную среды перед этими командами, и они упомянули, что CUPTI входит в набор инструментов cuda.