Настройка среды 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, только на глобальном уровне. среда с использованием
Любая помощь будет принята с благодарностью, так как я новичок в 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) в приведенных выше командах установки.