Настройка среды Conda tensorflow-GPU с CUDA 11.2 и cuDNN 8.1-8.2 (драйвер CUDA 460

Я пытаюсь создать среду conda для tensorflow-GPU. У меня есть GeForce RTX 3080, работающая под управлением Ubuntu 21.04 с установленным драйвером CUDA 460 (безопасная загрузка отключена). Я попытался установить cudatoolkit с помощью conda, но последняя версия, доступная с использованием conda, — 11.0, которая поддерживает только драйвер CUDA до 450. Я не могу найти в Интернете ничего о том, как установить новые версии CUDA в среду conda, только на глобальном уровне. среда с использованием или файлы .run (от которых я хочу держаться подальше). Я предполагаю, что использую или что-то подобное, но я не уверен.

Любая помощь будет принята с благодарностью, так как я новичок в Linux и еще не терминальный ниндзя.

Спасибо

1 ответ

ОБНОВЛЕНИЕ (30.08.21): на канале Esri conda есть пакет, который, кажется, работает правильно из коробки. Его можно установить с помощью:

      conda install -c esri tensorflow-gpu

Если это не сработает, посмотрите, поможет ли следующее.

У меня есть система Linux Mint 20.1 (на основе Ubuntu 20.04 LTS) с GeForce RTX 3080 (версия драйвера 460.80), и у меня было много проблем при попытке запустить Tensorflow в среде conda.

Похоже, проблема в том, что в настоящее время нет среды conda, которая правильно упакована с Tensorflow 2.4+, CUDA 11+ и CuDNN 8+, которые необходимы для работы на этой новой архитектуре GPU (подробнее здесь ). Если вы используете conda install -c anaconda tensorflow-gpu​, по умолчанию будут установлены TF v2.2, cudatoolkit 10.x и cudnn 7.x. Если вы попытаетесь установить более новую версию, используя tensorflow-gpu=2.4​он либо просто установит более старые несовместимые библиотеки cudatoolkit 10.x/cudnn 7.x, либо не установит их вообще.

Вероятно, есть несколько разных способов сделать это, но вот что сработало для меня после множества проб и ошибок:

Шаг 1: Создайте среду conda и установите в нее cudatoolkit и cudnn.

      conda create -n tf_gpu_env -c conda-forge cudatoolkit cudnn python=3.8

На момент написания этой статьи в этой новой среде будут установлены cudatoolkit 11.2, cudnn 8.2 и python 3.8.10. Я использовал канал conda-forge, но представьте себе anacondaа также nvidiaканалы тоже будут работать.

Шаг 2. Активируйте среду и установите tensorflow-gpu, используя pip не конда . Установка из conda либо займет очень много времени, поскольку conda пытается разрешить конфликты до того, как выдаст ошибку, либо принудительно понизит версию cudatoolkit и cudnn до более старых версий.

      conda activate tf_gpu_env​
pip install tensorflow-gpu

На момент написания этой статьи устанавливается Tensorflow-gpu2.5.0.

Шаг 3 : Убедитесь, что Tensorflow работает и использует GPU. Убедитесь, что у вас активирована новая среда, и запустите сеанс Python в терминале. Я использую следующие утверждения для моей проверки.

      >>> import tensorflow as tf 

должен вернуть сообщение о том, что он успешно открыт libcudart

      >>> tf.config.list_physical_devices('GPU')

должен вернуть длинное сообщение о том, что он успешно открыл кучу библиотек cuda и, что более важно, список в конце с именованным кортежем, указывающим, что он нашел GPU (например, [PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]). Если это возвращает пустой список, то Tensorflow не использует графический процессор.

Наконец, создайте случайный тензор с tf.constantили же tf.random. Эта проверка очень важна. Tensorflow по-прежнему может распознавать ваш GPU , даже если библиотеки cuda несовместимы, и возвращать аналогичные сообщения при вводе двух приведенных выше команд, указывая, что все в порядке. Однако, если он работает правильно, следующая команда (или аналогичная) должна выполниться и почти мгновенно вернуть тензор:

      >>> tf.random.uniform([4, 4, 4, 4])

Если что-то не так, ответ будет очень долгим (хотя последующие звонки могут быть быстрыми). Это будет еще хуже, если вы попытаетесь запустить реальные модели с задержками, длящимися много минут или почти час до запуска первой эпохи, в дополнение к непредсказуемому поведению, такому как получение nanзначения для определенных сетей, таких как CNN.

Напоследок пара замечаний:

  • Будьте осторожны при беге conda installили же conda updateв этой среде и внимательно проверьте план пакета, прежде чем нажать Enter. Например, если вы используете conda для установки tensorflow-probability, он также может установить tensorflow-baseкак зависимость, которая может переопределить tensorflow-gpu.
  • Вы также можете установить другие версии Tensorflow и библиотеки cuda. Например, вы также можете использовать TF 2.4.1, cudatoolkit 11.0 и cudnn 8.0 с помощью cudatoolkit=11.0, cudnn=8.0, tensorflow-gpu==2.4.1(двойное равно для pip) в приведенных выше командах установки.
Другие вопросы по тегам