- Вопрос или проблема
- Ответ или решение
- Решение проблемы с ошибкой ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory при использовании TensorFlow-GPU на Ubuntu 16.04
- 1. Проверка совместимости версий
- 2. Установка зависимости версии CUDA 9.0
- 3. Создание символической ссылки
- 4. Установка TensorFlow с помощью pip
- 5. Проверка других установленных библиотек
- Заключение
Вопрос или проблема
Я получаю эту ошибку, когда хочу импортировать tensorflow-gpu на Ubuntu 16.04.
Я правильно установил CUDA 9.1, cudNN 7.1 и протестировал их, не столкнувшись с проблемами. (используя python 3.5 2.)
Я использовал pip3 различными способами (с несколькими версиями tensorflow):
я пробовал:
#для tensorflow 1.4
pip3 install tensorflow-gpu==1.4
# для tensorflow 1.8 из исходников
pip3 install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.8.0rc1-cp35-cp35m-linux_x86_64.whl
Я попытался установить несколько версий tensorflow-gpu, 1.4, 1.5, 1.8, 1.9.
по-прежнему получаю ту же ошибку при запуске
import tensorflow as tf
ImportError: libcublas.so.9.0: не удается открыть общий файловый объект: Нет такого файла или каталога
Есть ли способ избавиться от этого? Или это просто установка cuda 9.0 (что будет неприятно, так как на установку cuda 9.1 у меня ушла неделя из-за проблем с nvidia и Ubuntu!)
Я также установил libcupti (обязательно) и Bazel (обязательно).
из этой страницы:
http://www.python36.com/install-tensorflow141-gpu/2/
Кроме того, я установил ту же конфигурацию на Windows (tensorflow 1.8, cuda 9.1) без каких-либо проблем.
Вы пытаетесь установить tensorflow-gpu 1.4
, что слишком устарело, чтобы быть совместимым с CUDA 9.1.
У вас есть три варианта:
-
Вы можете попробовать создать символьную ссылку, чтобы заставить систему использовать CUDA 9.1, хотя не уверенно, что это сработает
-
Вы можете следовать этому руководству, в котором объясняется, как легко установить CUDA 9.0 на Ubuntu 16.04.
-
Если это все еще не работает и вы действительно хотите попробовать установить Tensorflow с CUDA 9.1, вы можете попробовать установить CUDA, CUDNN и NCCL из исходников с сайта NVIDIA, а затем эмулировать способ установки этих пакетов из ppa.
После того как вы загрузите пакеты tar
, введите следующее, чтобы настроить CUDA:
sudo mkdir -p /usr/local/cuda /usr/local/cuda/extras/CUPTI /usr/local/cuda/nvvm
sudo ln -s /usr/bin /usr/local/cuda/bin
sudo ln -s /usr/include /usr/local/cuda/include
sudo ln -s /usr/lib/x86_64-linux-gnu /usr/local/cuda/lib64
sudo ln -s /usr/local/cuda/lib64 /usr/local/cuda/lib
sudo ln -s /usr/include /usr/local/cuda/extras/CUPTI/include
sudo ln -s /usr/lib/x86_64-linux-gnu /usr/local/cuda/extras/CUPTI/lib64
sudo ln -s /usr/lib/nvidia-cuda-toolkit/libdevice /usr/local/cuda/nvvm/libdevice
Затем вы можете либо загрузить cuDNN и NCCL из исходников и настроить их аналогичным образом (это статья здесь объясняет, как это сделать), либо загрузить их .deb
пакет и посмотреть, работает ли установка сейчас. Если нет, тогда попробуйте установить из исходников.
Ответ или решение
Решение проблемы с ошибкой ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory
при использовании TensorFlow-GPU на Ubuntu 16.04
Ошибка, с которой вы столкнулись, указывает на то, что TensorFlow пытается найти библиотеку libcublas.so.9.0
, которая является частью CUDA 9.0. Однако у вас установлена версия CUDA 9.1. Это несоответствие между требуемыми и установленными библиотеками и является источником возникшей проблемы. Рассмотрим несколько возможных решений.
1. Проверка совместимости версий
Прежде всего, стоит отметить, что TensorFlow 1.4 и более ранние версии не совместимы с CUDA 9.1. Версии TensorFlow, поддерживающие CUDA 9.1, начиная с 1.8. Таким образом, наиболее оптимальной стратегией будет установить более новую версию TensorFlow, которая будет совместима с текущей версией CUDA.
2. Установка зависимости версии CUDA 9.0
Если вы предпочитаете оставаться с TensorFlow 1.4 или другой совместимой версией, вам необходимо установить CUDA 9.0. Это решение может потребовать дополнительных усилий, но оно гарантирует, что все зависимости правильно настроены. Вы можете воспользоваться следующим руководством по установке CUDA 9.0:
-
Удалите установленный CUDA 9.1:
sudo apt-get --purge remove "*cublas*" "*cudnn*" "cuda*"
-
Следуйте официальному руководству NVIDIA для загрузки и установки CUDA 9.0 на Ubuntu 16.04.
3. Создание символической ссылки
Как временное решение, вы можете попробовать создать символическую ссылку на библиотеки CUDA 9.1, чтобы заставить систему использовать их вместо ожидаемых библиотек CUDA 9.0. Выполните следующие команды:
sudo ln -s /usr/local/cuda-9.1/lib64/libcublas.so /usr/local/cuda-9.1/lib64/libcublas.so.9.0
Однако это решение может не сработать и потенциально привести к другим проблемам.
4. Установка TensorFlow с помощью pip
Если переход на новую версию TensorFlow вам подходит, попробуйте установить TensorFlow, совместимый с CUDA 9.1:
pip3 install tensorflow-gpu==1.8.0
5. Проверка других установленных библиотек
Также убедитесь, что у вас установлены все необходимые зависимые библиотеки, такие как cuDNN и CUPTI. В инструкции по установке TensorFlow указаны конкретные версии, которые должны соответствовать установленной версии CUDA.
Для установки cuDNN:
- Загрузите подходящую версию cuDNN с официального сайта NVIDIA.
- Распакуйте библиотеку и переместите файлы в соответствующие папки CUDA.
Заключение
Ошибка ImportError: libcublas.so.9.0
сигнализирует о проблеме совместимости версий. Либо обновите TensorFlow до версии 1.8 или выше, совместимых с CUDA 9.1, либо вернитесь к CUDA 9.0 для поддержки устаревших версий TensorFlow. Если возникнут дополнительные трудности, рассмотрите возможность установки необходимых библиотек и зависимостей и выполните их конфигурацию в соответствии с документацией от NVIDIA.
Эти рекомендации должны помочь вам устранить ошибку и настроить рабочую среду TensorFlow-GPU на Ubuntu 16.04. Удачи в вашем проекте!