УНИТе

Портал > Документация > Добавяне на Tensorflow-GPU модула към инсталацията на Intel Python 3 под CentOS 7 и 8

Добавяне на Tensorflow-GPU модула към инсталацията на Intel Python 3 под CentOS 7 и 8

Съдържание:

  1. Предварителна информация
  2. Инсталиране на CUDA
  3. Инсталиране на cuDNN
  4. Инсталиране на Tensorflow-GPU
  5. Тест дали Tensorflow разпознава и зарежда библиотеката cuDNN
  6. Тест за изпълнението на задачи върху GPU устройството, през библиотеките cuDNN и CUDA

 

1. Предварителна информация

В документа "Добавяне на модули към инсталацията на Intel Python 3 под CentOS 7 и 8" е описано как да бъде инсталиран Tensorflow. Инсталиран по този начин, той не предоставя GPU съвместимост, която е нужна при използване на библиотеки за "deep neural networks". По-долу е обяснено как да се добави GPU съвместимост към инсталацията на Tensorflow.

 

2. Инсталиране на CUDA

ВНИМАНИЕ! В CentOS 8 се поддържат само версиите 10.1 и 10.2.

За да може да покриете разнообразните изисквания на клиентския софтуер откъм версии на CUDA библиотеките, е нужно да имате инсталирани всички на CUDA, които поддържат cuDNN. За да инсталирате в системата CUDA библиотеките, трябва да добавите към конфигурацуията на хранилища, използвани от yum и/или dnf, тази за хранилището на CUDA:

  • CentOS 7:

    Добавете настройките за хранилището на пакети:

    $ sudo yum-config-manager --add-repo http://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-rhel7.repo

    След това инсталирайте набора версии на CUDA от 9.2 до последната (към момента на написване на този документ последната е 10.2):

    $ sudo yum install cuda-9.0 cuda-9.2 cuda-10.0 cuda-10.1 cuda-10.2
  • CentOS 7:

    Добавете настройките за хранилището на пакети:

    $ sudo dnf config-manager --add-repo http://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-rhel8.repo

    След това инсталирайте набора версии на CUDA от 10.1 до последната (към момента на написване на този документ последната е 10.2):

    $ sudo dnf clean all
    $ sudo dnf -y install cuda-10-1 cuda-10-2

При инсталиране на пакетите CUDA, драйвера за GPU ще бъде инсталиран автиматично!

 

3. Инсталиране на cuDNN

ВНИМАНИЕ! Вече не се предлага cuDNN библиотека за CUDA 9.1. Не инсталирайте старти версии на cuDNN!

За да може да използвате Tensorflow-GPU, не е достатъчно да имате CUDA библиотеките. Нужно е да имате инсталирани допълнително библиотеките cuDNN, като трябва да ги инсталирате за всяка една от инсталираните версии на CUDA. Може да изтеглите версиите на библиотеката cuDNN за всяка от инсталираните версии на CUDA, указани по-горе, от https://developer.nvidia.com/cudnn. Там не изтегляйте RPM пакетите с cuDNN библиотеките! Вместо това изтеглете стандартните tar.gz архиви (следвайте връзката "cuDNN Library for Linux"). След като изтеглите всички нужни архиви с библиотеката, ще имате локално файловете (ако по времето, по което изтегляте файловете, версията на библиотеката е 7.6.5.32):

  • CentOS 7:

    cudnn-9.0-linux-x64-v7.6.5.32.tgz
    cudnn-9.2-linux-x64-v7.6.5.32.tgz
    cudnn-10.0-linux-x64-v7.6.5.32.tgz
    cudnn-10.1-linux-x64-v7.6.5.32.tgz
    cudnn-10.2-linux-x64-v7.6.5.32.tgz
  • CentOS 8:

    cudnn-10.1-linux-x64-v7.6.5.32.tgz
    cudnn-10.2-linux-x64-v7.6.5.32.tgz

За да инсталирате тези библиотеки в системата, използвайте следната процедура:

  • CentOS 7:

    $ sudo tar --strip-components 1 -xf cudnn-9.0-linux-x64-v7.6.5.32.tgz -C /usr/local/cuda-9.0
    $ sudo tar --strip-components 1 -xf cudnn-9.2-linux-x64-v7.6.5.32.tgz -C /usr/local/cuda-9.2
    $ sudo tar --strip-components 1 -xf cudnn-10.0-linux-x64-v7.6.5.32.tgz -C /usr/local/cuda-10.0
    $ sudo tar --strip-components 1 -xf cudnn-10.1-linux-x64-v7.6.5.32.tgz -C /usr/local/cuda-10.1
    $ sudo tar --strip-components 1 -xf cudnn-10.2-linux-x64-v7.6.5.32.tgz -C /usr/local/cuda-10.2
  • CentOS 8:

    $ sudo tar --strip-components 1 -xf cudnn-10.1-linux-x64-v7.6.5.32.tgz -C /usr/local/cuda-10.1
    $ sudo tar --strip-components 1 -xf cudnn-10.2-linux-x64-v7.6.5.32.tgz -C /usr/local/cuda-10.2

За да могат приложенията да намират библиотеките на cuDNN, трябва да ги включите в каталога с библиотеки на системата, като изпълните:

$ sudo ldconfig

Проверете дали това включване е успешно:

$ ldconfig -p | grep cudnn

Ако библиотеките са успешно инсталирани и включени в каталога, ще получите следния списък:

  • CentOS 7:

    libcudnn.so.7 (libc6,x86-64) => /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn.so.7
    libcudnn.so.7 (libc6,x86-64) => /usr/local/cuda-10.1/targets/x86_64-linux/lib/libcudnn.so.7
    libcudnn.so.7 (libc6,x86-64) => /usr/local/cuda-10.0/targets/x86_64-linux/lib/libcudnn.so.7
    libcudnn.so.7 (libc6,x86-64) => /usr/local/cuda-9.2/targets/x86_64-linux/lib/libcudnn.so.7
    libcudnn.so.7 (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libcudnn.so.7
    libcudnn.so (libc6,x86-64) => /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn.so
    libcudnn.so (libc6,x86-64) => /usr/local/cuda-10.1/targets/x86_64-linux/lib/libcudnn.so
    libcudnn.so (libc6,x86-64) => /usr/local/cuda-10.0/targets/x86_64-linux/lib/libcudnn.so
    libcudnn.so (libc6,x86-64) => /usr/local/cuda-9.2/targets/x86_64-linux/lib/libcudnn.so
    libcudnn.so (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libcudnn.so
  • CentOS 8:

    libcudnn.so.7 (libc6,x86-64) => /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn.so.7
    libcudnn.so.7 (libc6,x86-64) => /usr/local/cuda-10.1/targets/x86_64-linux/lib/libcudnn.so.7
    libcudnn.so (libc6,x86-64) => /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn.so
    libcudnn.so (libc6,x86-64) => /usr/local/cuda-10.1/targets/x86_64-linux/lib/libcudnn.so

 

4. Инсталиране на Tensorflow-GPU

За да може да инсталирате Tensorflow-GPU, трябва да имате вече инсталиран Tensorflow, по начина, описан в документа "Добавяне на модули към инсталацията на Intel Python 3 под CentOS 7 и 8". Инсталирането на Tensorflow-GPU се извършва по следния начин:

$ sudo /opt/intel/intelpython3/bin/python3 /opt/intel/intelpython3/bin/pip install tensorflow-gpu

Отбележете, че след инсталацията няма да имате зареждаем модул tensorflow_gpu. Причината е, че Tensorflow-GPU е добавка към Tensorflow, а не самостоятелен модул (включва се при нужда и това включване е автоматично). Той е помощтно парче код, което помага на Tensorflow да осъществява комуникацията с cuDNN и CUDA.

 

5. Тест дали Tensorflow разпознава и зарежда библиотеката cuDNN

За да може да инсталирате Tensorflow-GPU, трябва да имате вече инсталиран Tensorflow, по начина, описан в документа "Добавяне на модули към инсталацията на Intel Python 3 под CentOS 7 и 8". След това, инсталирането на Tensorflow-GPU протича така:

$ /opt/intel/intelpython3/bin/jupyter-console
In [1]: import ctypes 
 
In [2]: t=ctypes.cdll.LoadLibrary("libcudnn.so")
     
In [3]: print(t._name)

При успешно разпознаване и зареждане на библиотеката на cuDNN, след изпълнението на третия ред, ще бъде изведен следния резултат:

libcudnn.so

 

6. Тест за изпълнението на задачи върху GPU устройството, през библиотеките cuDNN и CUDA

Изтеглете тестовия скрипт, който извършва умножение на матрици от висок ранг, локално, по следния начин:

$ wget https://raw.githubusercontent.com/yaroslavvb/stuff/master/matmul_benchmark.py

ВНИМАНИЕ! Не изпълнявайте този тестови скрипт, ако GPU устройството ви има памет по-малка от 4GB.

и го изпълнете, използвайки python3 от пакета Intel Python 3:

$ /opt/intel/intelpython3/bin/python3 matmul_benchmark.py

Най-важната информация (освен числения резултат, разбира се), която трябва да видите при изпълнението и която е индикатор за добре изпълнената инсталация на библитеките, е тази, която се отнася до зареждането на библиотеките на cuDNN и CUDA:

2019-09-16 18:33:47.608676: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcudart.so.10.0
2019-09-16 18:33:47.792306: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcublas.so.10.0
2019-09-16 18:33:47.891584: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcufft.so.10.0
2019-09-16 18:33:47.956737: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcurand.so.10.0
2019-09-16 18:33:48.173936: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcusolver.so.10.0
2019-09-16 18:33:48.304803: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcusparse.so.10.0
2019-09-16 18:33:48.311791: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcudnn.so.7
2019-09-16 18:33:48.327999: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcudart.so.10.0

 


Последна актуализация: 19 ноември 2019

2019 УНИТе, Веселин Колев