Вопрос или проблема
Мне удалось собрать Tensorflow 2.3 из исходников, следуя этим инструкциям: https://towardsdatascience.com/how-to-compile-tensorflow-2-3-with-cuda-11-1-8cbecffcb8d3
Но когда я устанавливаю полученный пакет pip в новой среде conda и импортирую tensorflow, я получаю следующую ошибку: Не удалось загрузить динамическую библиотеку 'libcudart.so.11.1'; dlerror: libcudart.so.11.1: не удается открыть общий объектный файл: Нет такого файла или директории
Мне удалось использовать поддержку GPU с CUDA 11.1 для Tensorflow 2.5 nightlies, не создавая символические ссылки между библиотеками (я получаю сообщение Успешно открыта динамическая библиотека libcudart.so.11.0
).
Любая помощь будет оценена.
Он работает с символической ссылкой: libcudart.so.11.1 -> libcudart.so.11.0
Я думаю, это потому, что ночная сборка полностью поддерживает CUDA 11.1.
Ответ или решение
Проблема, с которой вы столкнулись при использовании пакета pip, собранного из исходников TensorFlow 2.3, связана с отсутствием динамической библиотеки libcudart.so.11.1
. Это сообщение об ошибке говорит о том, что TensorFlow пытается загрузить специфичную библиотеку CUDA, но не может её найти в вашей системе.
Возможные причины и решения
-
Версия CUDA:
Убедитесь, что у вас установлена версия CUDA, которая соответствует требованиям TensorFlow 2.3. Вы построили TensorFlow 2.3 с использованием CUDA 11.1, но система не может найти библиотекуlibcudart.so.11.1
. Проверьте, установлена ли правильная версия CUDA. Проверьте, есть ли в пути к библиотекам символические ссылки наlibcudart.so.11.1
.ls -l /usr/local/cuda/lib64/libcudart.so*
Если файл
libcudart.so.11.1
не существует, вы можете создать символическую ссылку на существующийlibcudart.so.11.0
:sudo ln -s /usr/local/cuda/lib64/libcudart.so.11.0 /usr/local/cuda/lib64/libcudart.so.11.1
-
Пути библиотек и переменные окружения:
Убедитесь, что путь, содержащий библиотеки CUDA, находится в переменной окруженияLD_LIBRARY_PATH
. Это можно сделать с помощью команды:export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
Добавьте эту строку в ваш файл конфигурации оболочки (
~/.bashrc
или~/.zshrc
), чтобы изменения были постоянными. -
Совместимость между версиями:
Вы правильно заметили, что TensorFlow 2.5, собранный на основе CUDA 11.1, работает, тогда как TensorFlow 2.3 требует специфичной версии библиотеки. Важно всегда проверять совместимость между версиями TensorFlow и CUDA, чтобы избежать подобных ошибок. -
Проверка конфигурации:
Также вам стоит убедиться, что все библиотеки и зависимости TensorFlow, такие как cuDNN, соответствуют вашей версии CUDA. Они должны быть установлены и доступные в системе. -
Использование установленного TensorFlow:
Если после выполнения всех шагов проблема не решается, рассмотрите возможность использования предустановленного пакета TensorFlow из PyPI, который уже собран с нужной поддержкой CUDA и cuDNN. Это может сэкономить время и избежать проблем с совместимостью.
Заключение
Собирая TensorFlow из исходников, важно внимательно следить за версиями всех зависимостей и их совместимостью. Если вы продолжаете сталкиваться с ошибками, попробуйте использовать предустановленную версию TensorFlow или обратиться к официальной документации TensorFlow для получения актуальных данных о совместимых версиях. Это также поможет устранить возможные конфликты и обеспечит более плавное функционирование вашей среды разработки.