Шпаргалка по установке CUDA, cuDNN, Tensorflow и PyTorch на Windows 10

В очередной раз после переустановки Windows осознал, что надо накатить драйвера, CUDA, cuDNN, Tensorflow/Keras для обучения нейронных сетей.
Каждый раз для меня это оказывается несложной, но времязатратной операцией: найти подходящую комбинацию Tensorflow/Keras, CUDA, cuDNN и Python несложно, но вспоминаю про эти зависимости только в тот момент, когда при импорте Tensorflow вижу, что видеокарта не обнаружена и начинаю поиск нужной страницы в документации Tensorflow.
В этот раз ситуация немного усложнилась. Помимо установки Tensorflow мне потребовалось установить PyTorch. Со своими зависимостями и поддерживаемыми версиями Python, CUDA и cuDNN.
По итогам нескольких часов экспериментов решил, что надо зафиксировать все полезные ссылки в одном посте для будущего меня.
Краткий алгоритм установки Tensorflow и PyTorch
Примечание: Установить Tensorflow и PyTorch можно в одном виртуальном окружении, но в статье этого алгоритма нет.
Подготовка к установке
- Определить какая версия Python поддерживается Tensorflow и PyTorch (на момент написания статьи мне не удалось установить PyTorch в виртуальном окружении с Python 3.9.5)
- Для выбранной версии Python найти подходящие версии Tensorflow и PyTorch
- Определить, какие версии CUDA поддерживают выбранные ранее версии Tensorflow и PyTorch
- Определить поддерживаемую версию cuDNN для Tensorflow – не все поддерживаемые CUDA версии cuDNN поддерживаются Tensorflow. Для PyTorch этой особенности не заметил
Установка CUDA и cuDNN
- Скачиваем подходящую версию CUDA и устанавливаем. Можно установить со всеми значениями по умолчанию
- Скачиваем cuDNN, подходящую для выбранной версии Tensorflow (п.1.2). Для скачивания cuDNN потребуется регистрация на сайте NVidia. “Установка” cuDNN заключается в распакове архива и заменой существующих файлов CUDA на файлы из архива
Устанавливаем Tensorflow
- Создаём виртуальное окружение для Tensorflow c выбранной версией Python. Назовём его, например, py38tf
- Переключаемся в окружение py38tf и устанавливаем поддерживаемую версию Tensorflow pip install tensorflow==x.x.x
- Проверяем поддержку GPU командой
python -c "import tensorflow as tf; print('CUDA available' if tf.config.list_physical_devices('GPU') else 'CUDA not available')"
Устанавливаем PyTorch
- Создаём виртуальное окружение для PyTorch c выбранной версией Python. Назовём его, например, py38torch
- Переключаемся в окружение py38torch и устанавливаем поддерживаемую версию PyTorch
- Проверяем поддержку GPU командой
python -c "import torch; print('CUDA available' if torch.cuda.is_available() else 'CUDA not available')"
В моём случае заработала комбинация:
- Python 3.8.8
- Драйвер NVidia 441.22
- CUDA 10.1
- cuDNN 7.6
- Tensorflow 2.3.0
- PyTorch 1.7.1+cu101
Tensorflow и PyTorch установлены в разных виртуальных окружениях.
Итого
Польза этой статьи будет понятна не скоро: систему переустанавливаю я не часто.
Если воспользуетесь этим алгоритмом и найдёте какие-то ошибки – пишите в комментарии
Как узнать, какая версия TensorFlow установлена в моей системе?
Это зависит от того, как вы установили TensorFlow. Я собираюсь использовать те же заголовки, что и инструкции по установке TensorFlow, чтобы структурировать этот ответ.
Установка пистолета
python -c 'import tensorflow as tf; print(tf.__version__)' # for Python 2 python3 -c 'import tensorflow as tf; print(tf.__version__)' # for Python 3
Обратите внимание, что python символически привязан к /usr/bin/python3 в некоторых дистрибутивах Linux, поэтому используйте python вместо python3 в этих случаях. pip list | grep tensorflow для Python 2 или pip3 list | grep tensorflow для Python 3 также будет показана версия Tensorflow.
Установка Virtualenv
python -c 'import tensorflow as tf; print(tf.__version__)' # for both Python 2 and Python 3
pip list | grep tensorflow также покажет версию Tensorflow. Например, я установил TensorFlow 0.9.0 в virtualenv для Python 3. Итак, я получаю:
$ python -c 'import tensorflow as tf; print(tf.__version__)' 0.9.0 $ pip list | grep tensorflow tensorflow (0.9.0)
Установка Tensorflow + Python на Windows.

Развитие машинного обучения неизбежно приводит к появления удобных инструментов для повышения качества работы. Одним из таких инструментов стал фреймворк Tensorflow . Сегодня мы разберемся как установить данный фреймворк, если базовой системой является Windows 10, а работать он должен с вашей видеокартой Nvidia (для примера GTX 1060).
1. Исследование зависимостей.
В данный момент на вашей машине установлена ОС Windows 10, которая уже видит вашу видеокарту. Теперь надо выяснить какие обязательные компоненты для работы с Tensorflow нам необходимы. Для этого заходим на на официальный сайт https://www.tensorflow.org/install/source_windows и в самом низу страницы видим таблицу совместимостей. Нас интересует таблица для версии GPU . Выбираем интересующую нас версию Tensorflow , для примера 1.13.0. Теперь можно определить необходимый набор компонент для установки:
— Python 3.5 – 3.7 (установим 3.6).
2. Загрузка дистрибутивов.
Чтобы скачать python 3.6 перейдем на официальный сайт и выберем версию доступную для скачивания в виде инсталлятора под windows . Переходим на https://www.python.org/downloads/release/python-368/ и выбираем « Windows x86-64 executable installer»(Рисунок 1).

Рисунок 1 — Страница загрузки инсталлятора Python 3.6.
Для загрузки cuDNN переходим на https://developer.nvidia.com/rdp/cudnn-archive и скачиваем соответствующую версию( Рисунок 2 ).

Рисунок 2 — Страница загрузки библиотеки cuDNN 7.4.

Рисунок 3 — Страница загрузки CUDA 10.
Tensorflow мы загрузим после установки Python .
3. Установка Python .
Запускаем дистрибутив и выбираем кастомную инсталляцию ( Рисунок 4 ) .

Рисунок 4 — Выбор режима установки Python 3.6.
В следующем окне нужно проставить все галочки и нажать кнопку NEXT ( Рисунок 5 ) .

Рисунок 5 — Параметры установки Python 3.6.
На последней странице отметьте все галочки как на рисунке 6 и жмите Install .

Рисунок 6 — Расширенные параметры установки Python 3.6.
Дождитесь завершения установки. После чего откройте командную строку и введите в не q «python». Если вы увидите в выводе версию вашего python , значит установка прошла успешно.
4. Установка CUDA
Запустите дистрибутив и перейдите к выборочной установке. В первом окне снимите все галочки кроме раздела « CUDA »( Рисунок 7 ).

Рисунок 7 — Параметры установки CUDA 10.
Нажмите далее и на следующей странице оставьте все пути по умолчанию. Дождитесь завершения установки.
5. Распаковка cuDNN .
Распакуйте архив cuDNN в удобное место и внести в переменную PATH путь до папки bin с библиотекой cudnn64_7.dll.
6. Установка Tensorflow .
В командной строке введите
pip install --upgrade tensorflow-gpu==1.13.2
Начнется установка Tensorflow . По завершению в командной строке введите
python -c "import tensorflow as tf;print(tf.reduce_sum(tf.random.normal([1000, 1000])))"
Если команда выполнилась без ошибок, значит Tensorflow установлен правильно и готов к работе.
Возможные проблемы
Проблемы могут быть связаны в первую очередь с тем, что не все библиотеки видны. Убедитесь что в переменной среды PATH прописаны пути до скриптов и исполняемого файла Python «\Python\Python36\Scripts\» и » \Python\Python36\ «. Прописан путь до папки из пакета cuDNN «\cuda\bin». Прописаны пути до набора инструментов CUDA «\NVIDIA GPU Computing Toolkit\CUDA\v10.0\bin» и «\ NVIDIA GPU Computing Toolkit\CUDA\v10.0\libnvvp». Так же работоспособность может быть нарушена, если отсутствует соответствующий распространяемый пакет visual C++ для Visual Studio(в нашем случае 2015).
- ← Nlp. Вложения
- Установка TensorFlow на Ubuntu 18.04/CUDA/TensorRT →
Почему tensorflow версии 2.5 и выше работает, а 2.4 и ниже нет?
Мне понадобилась использовать более старую версию tensorflow для работы с этим репозиторием, так как там используется версия 2.3, а попробовав использовать последнюю версию 2.6 я получил ошибку при конвертации из tf в tflite. Но установив tensorflow 2.3, и просто импортировав его, я получил вот такой столбик ошибок:
import tensorflow ImportError Traceback (most recent call last) E:\PitonGandon\lib\site-packages\tensorflow\python\pywrap_tensorflow.py in 63 try: ---> 64 from tensorflow.python._pywrap_tensorflow_internal import * 65 # This try catch logic is because there is no bazel equivalent for py_extension. ImportError: DLL load failed with error code 3221225501 while importing _pywrap_tensorflow_internal During handling of the above exception, another exception occurred: ImportError Traceback (most recent call last) in ----> 1 import tensorflow E:\PitonGandon\lib\site-packages\tensorflow\__init__.py in 39 import sys as _sys 40 ---> 41 from tensorflow.python.tools import module_util as _module_util 42 from tensorflow.python.util.lazy_loader import LazyLoader as _LazyLoader 43 E:\PitonGandon\lib\site-packages\tensorflow\python\__init__.py in 38 # pylint: disable=wildcard-import,g-bad-import-order,g-import-not-at-top 39 ---> 40 from tensorflow.python.eager import context 41 42 # pylint: enable=wildcard-import E:\PitonGandon\lib\site-packages\tensorflow\python\eager\context.py in 33 from tensorflow.core.protobuf import config_pb2 34 from tensorflow.core.protobuf import rewriter_config_pb2 ---> 35 from tensorflow.python import pywrap_tfe 36 from tensorflow.python import tf2 37 from tensorflow.python.client import pywrap_tf_session E:\PitonGandon\lib\site-packages\tensorflow\python\pywrap_tfe.py in 26 27 # pylint: disable=invalid-import-order,g-bad-import-order, wildcard-import, unused-import ---> 28 from tensorflow.python import pywrap_tensorflow 29 from tensorflow.python._pywrap_tfe import * E:\PitonGandon\lib\site-packages\tensorflow\python\pywrap_tensorflow.py in 81 for some common reasons and solutions. Include the entire stack trace 82 above this error message when asking for help.""" % traceback.format_exc() ---> 83 raise ImportError(msg) 84 85 # pylint: enable=wildcard-import,g-import-not-at-top,unused-import,line-too-long ImportError: Traceback (most recent call last): File "E:\PitonGandon\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 64, in from tensorflow.python._pywrap_tensorflow_internal import * ImportError: DLL load failed with error code 3221225501 while importing _pywrap_tensorflow_internal Failed to load the native TensorFlow runtime. See https://www.tensorflow.org/install/errors for some common reasons and solutions. Include the entire stack trace above this error message when asking for help.
Затем попробовал 2.2 и 2.4, но они выдавали ту же ошибку, потом я установил 2.5, которая благополучно заработала, но не работал уже код. Следуя разным советам в интернете, я переустановил анаконду, все библиотеки vs c++ и версию cuda с cudnn как в таблице на сайте tensorflow поставил, но ничего не поменялось. На сайте tensorflow я ошибки с таким кодом не нашёл. В чём может быть проблема?