В Интернете есть множество сообщений о настройке вашего графического процессора. Я пытался следовать за многими из них, чтобы настроить мою машину, но почему-то не смог. В этом процессе так много переменных, которые охватывают версию драйвера nvidia, версию набора инструментов cuda, версию CUDnn, версию python, версию tenorflow и т. Д. Список можно продолжить. Также неплохо здесь проверить, поддерживает ли ваш графический процессор интеграцию CUDA.
Я предполагаю следующее:
- На машине нет предыдущих драйверов nvidia. Если есть, я рекомендую сначала удалить их, иначе следование моим инструкциям может сработать, а может и не сработать.
- Python уже установлен на машине. Я рекомендую использовать anaconda, поскольку он упрощает отслеживание версий библиотек и виртуальных сред.
Вот что я сделал:
1. Установка драйверов NVIDIA через репозитории ubuntu
Откройте терминал и выполните следующие команды.
$ sudo add-apt-repository ppa:graphics-drivers/ppa $ sudo apt update $ sudo apt install nvidia-390 $ sudo reboot $ nvidia-smi
Если все пойдет по плану, вы сможете увидеть аналогичный результат на экране.
2. Установите набор инструментов CUDA (9.0).
Перейдите сюда и скачайте инструментарий для linux, x86_64, ubuntu, 17.04, deb.
После завершения загрузки откройте терминал в каталоге базового установщика и выполните следующие команды:
$ sudo dpkg -i cuda-repo-ubuntu1704-9-0-local_9.0.176-1_amd64.deb $ sudo apt-key add /var/cuda-repo-9-0-local/7fa2af80.pub $ sudo apt-get update $ sudo apt-get install cuda
Также загрузите и установите некоторые исправления (необязательно), которые являются некоторыми улучшениями в cuBLAS.
3. Обновите переменную PATH.
Добавьте эти две строки в файл .bashrc, расположенный в домашнем каталоге.
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}$ export LD_LIBRARY_PATH=/usr/local/cuda- 9.0/lib64${LD_LIBRARY_PATH:+${LD_LIBRARY_PATH}}
Не забудьте указать источник файла .bashrc после внесения в него изменений.
4. Установите CUDNN 7.0.5.
Перейдите сюда и выберите CUDNN 7.0.5 (5 декабря 2017 г.) для CUDA 9.0. Вам необходимо создать учетную запись здесь, если у вас ее еще нет. Загрузите tar-файл и перейдите туда, где он находится, через терминал. Затем введите следующие команды.
$ tar -xzvf cuda-9.0-linux-x64-v7.tgz $ sudo cp cuda/include/cudnn.h /ur/local/cuda/include $ sudo cp cuda cuda/lib64/libcudnn* /usr/local/cuda/lib64 $ sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
5. Установите Tensorflow GPU.
Я предполагаю, что в вашей системе уже установлена анаконда. К сожалению, последняя версия python 3.7 имеет некоторые проблемы совместимости с интеграцией cuda. Чтобы обойти это, я создаю новую среду Python 3.6.
$ conda create -n tfgpu python=3.6 $ conda activate tfgpu
Чтобы выйти из этой среды, просто введите conda deactivate.
Теперь пришла последняя часть установки версии графического процессора tensorflow.
$ conda install tensorflow-gpu==1.12 cudatoolkit==9.0 cudnn==7.1.2 h5py
Установите все зависимости, которые поставляются с этой установкой. Если все пойдет хорошо, по сути, мы закончили! Пора проверить установку.
$ python >>> import tensorflow as tf >>> sess = tf.Session(config=tf.ConfigProto(log_device_placement=True)) 2019-04-24 21:57:54.300645: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA 2019-04-24 21:57:54.516014: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:964] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero 2019-04-24 21:57:54.516685: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1432] Found device 0 with properties: name: Quadro P1000 major: 6 minor: 1 memoryClockRate(GHz): 1.5185 pciBusID: 0000:01:00.0 totalMemory: 3.94GiB freeMemory: 2.67GiB 2019-04-24 21:57:54.516704: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1511] Adding visible gpu devices: 0 2019-04-24 21:57:56.372624: I tensorflow/core/common_runtime/gpu/gpu_device.cc:982] Device interconnect StreamExecutor with strength 1 edge matrix: 2019-04-24 21:57:56.372706: I tensorflow/core/common_runtime/gpu/gpu_device.cc:988] 0 2019-04-24 21:57:56.372732: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1001] 0: N 2019-04-24 21:57:56.373124: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1115] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 2370 MB memory) -> physical GPU (device: 0, name: Quadro P1000, pci bus id: 0000:01:00.0, compute capability: 6.1) Device mapping: /job:localhost/replica:0/task:0/device:XLA_CPU:0 -> device: XLA_CPU device /job:localhost/replica:0/task:0/device:XLA_GPU:0 -> device: XLA_GPU device /job:localhost/replica:0/task:0/device:GPU:0 -> device: 0, name: Quadro P1000, pci bus id: 0000:01:00.0, compute capability: 6.1 2019-04-24 21:57:56.376584: I tensorflow/core/common_runtime/direct_session.cc:307] Device mapping: /job:localhost/replica:0/task:0/device:XLA_CPU:0 -> device: XLA_CPU device /job:localhost/replica:0/task:0/device:XLA_GPU:0 -> device: XLA_GPU device /job:localhost/replica:0/task:0/device:GPU:0 -> device: 0, name: Quadro P1000, pci bus id: 0000:01:00.0, compute capability: 6.1
6. Установите PyTorch с поддержкой графического процессора.
Поскольку мы уже проделали тяжелую работу, установив совместимые версии cuda toolkit, CUDNN и python, установка PyTorch превращается в однострочную задачу.
$ conda install pytorch torchvision cuda90 -c pytorch $ python >>> import torch >>> torch.cuda.get_device_name(0) 'Quadro P1000' >>> torch.cuda.is_available() True >>> torch.cuda.device_count() 1 >>>