Не удается использовать пакет pip, полученный из сборки Tensorflow 2.3 из исходников.

Вопрос или проблема

Мне удалось собрать 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, но не может её найти в вашей системе.

Возможные причины и решения

  1. Версия 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
  2. Пути библиотек и переменные окружения:
    Убедитесь, что путь, содержащий библиотеки CUDA, находится в переменной окружения LD_LIBRARY_PATH. Это можно сделать с помощью команды:

    export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

    Добавьте эту строку в ваш файл конфигурации оболочки (~/.bashrc или ~/.zshrc), чтобы изменения были постоянными.

  3. Совместимость между версиями:
    Вы правильно заметили, что TensorFlow 2.5, собранный на основе CUDA 11.1, работает, тогда как TensorFlow 2.3 требует специфичной версии библиотеки. Важно всегда проверять совместимость между версиями TensorFlow и CUDA, чтобы избежать подобных ошибок.

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

  5. Использование установленного TensorFlow:
    Если после выполнения всех шагов проблема не решается, рассмотрите возможность использования предустановленного пакета TensorFlow из PyPI, который уже собран с нужной поддержкой CUDA и cuDNN. Это может сэкономить время и избежать проблем с совместимостью.

Заключение

Собирая TensorFlow из исходников, важно внимательно следить за версиями всех зависимостей и их совместимостью. Если вы продолжаете сталкиваться с ошибками, попробуйте использовать предустановленную версию TensorFlow или обратиться к официальной документации TensorFlow для получения актуальных данных о совместимых версиях. Это также поможет устранить возможные конфликты и обеспечит более плавное функционирование вашей среды разработки.

Оцените материал
Добавить комментарий

Капча загружается...