Подготовка к глубокому обучению с использованием графических процессоров: руководство по установке

В последнее десятилетие произошло бурное внедрение подходов, интенсивно использующих данные, для решения критических задач, таких как рекомендации, определение спроса, мошенничество, визуальное руководство и т. д., в различных отраслях. Поскольку данные играют все более важную роль и сопровождаются увеличением их объема, скорости и достоверности, крайне важно проводить соответствующий анализ для выявления желаемых закономерностей. Такой анализ требует от нас расширения вычислительных возможностей за пределы ЦП и выполнения приложений, использующих распределенную и более высокую вычислительную мощность. В этом контексте несколько реализаций глубокого обучения (DL) используют графические процессоры (GPU) для ускорения цикла разработки модели.

В нашем недавнем проекте представления двунаправленного кодировщика от Transformers (BERT) использовались для решения проблемы языкового моделирования, и этот процесс показал нам сложность настройки графического процессора для выполнения приложений DL. В этом руководстве будет подробно описан процесс установки, а также рассмотрены необходимые компоненты и их зависимости. Он также определяет соответствующие ресурсы для подтверждения совместимости различных компонентов. Поставщики облачных услуг, такие как Amazon Web Services (AWS), Google Cloud Platform (GCP) и т. д., предоставляют образы машин с установленными компонентами. Тем не менее, это руководство может помочь вам понять, как переплетаются различные компоненты, и может быть использовано при настройке локальной или локальной инфраструктуры.

В целом, для настройки графического процессора требуются четыре ключевых компонента:

  • Драйвер Nvidia: программное обеспечение, позволяющее операционной системе и приложениям обмениваться данными с графической картой Nvidia.
  • CUDA: как аппаратная и программная технология, CUDA позволяет использовать множество вычислительных ядер в графическом процессоре для выполнения математических вычислений общего назначения, обеспечивая значительное ускорение вычислительной производительности.

Вообще говоря, существует обратная совместимость драйверов с наборами инструментов CUDA. Например, последний драйвер должен работать с любым старым набором инструментов CUDA. Старый драйвер может не работать с новым набором инструментов CUDA. (ссылка на переполнение стека)

Минимальную версию драйвера, необходимую для набора инструментов CUDA, можно получить здесь.

  • CuDNN:ускоряемая графическим процессором библиотека примитивов для глубоких нейронных сетей, обеспечивающая точно настроенные реализации стандартных процедур нейронных сетей.
  • Среда глубокого обучения. Среды для разработки приложений глубокого обучения, таких как PyTorch, TensorFlow и т. д. PyTorch поставляется в комплекте с CUDA/CuDNN. Однако упаковка других фреймворков может отличаться и требует дополнительных компонентов. В этом руководстве рассматривается установка инструментов Nvidia и CUDA с последующей настройкой PyTorch. Для других платформ может потребоваться дополнительная настройка.

Мы будем использовать виртуальные машины Google Cloud Platform, чтобы проиллюстрировать процесс, но это руководство должно работать и для других облачных сервисов или локальных систем. Кроме того, в качестве базовой операционной системы (ОС) будет использоваться Ubuntu 18.04, и при использовании других ОС могут наблюдаться различия.

1. Получите компьютер с поддержкой графического процессора

Очевидным требованием для процесса установки является наличие компьютера с поддержкой графического процессора. При использовании облачных платформ обычно требуется подать запрос на увеличение лимитов квоты GPU. По умолчанию установлено нулевое значение. Следующее изображение кратко иллюстрирует процесс выполнения этого с помощью GCP. Как правило, процесс утверждения должен завершиться в течение нескольких часов.

После утверждения графические процессоры могут быть добавлены к виртуальным машинам во время запуска. Для этого руководства в качестве конфигурации запуска использовался один Tesla K80 вместе с 8 ядрами виртуального ЦП и Ubuntu 18.04 LTS с постоянным диском на 30 ГБ.

SSH в экземпляр и проверьте доступ к графическому процессору.

#Fetch new package versions
sudo apt-get update && sudo apt-get dist-upgrade -y
#verify access to GPU
#Install lspci through pciutils
sudo apt-get install pciutils
#Verify Nvidia device is present
lspci | grep -i nvidia

Следует наблюдать вывод, подтверждающий доступность графического процессора.

#Output:
00:04.0 3D controller: NVIDIA Corporation GK210GL [Tesla K80] (rev a1)

2. Установите драйвер Nvidia

Установку драйвера Nvidia можно выполнить с помощью Advanced Package Tool (apt-get) или, альтернативно, с помощью файла запуска, доступного в разделе Загрузки драйверов Nvidia. Установка APT проще в выполнении, но может не предоставить последнюю версию драйвера.

Кроме того, предполагается, что существующего драйвера Nvidia не существует. Если это не так, требуются дополнительные шаги, как описано в разделе 2B. Можно запустить nvidia-smi на терминале, чтобы убедиться в этом.

2А. Установка с помощью APT

  • В качестве первого шага установите ubuntu-drivers-common. Этот пакет объединяет и абстрагирует специфичную для Ubuntu логику и знания о сторонних пакетах драйверов.
sudo apt-get install ubuntu-drivers-common -y
  • Определить доступные версии драйверов Nvidia
sudo ubuntu-drivers devices

  • Установите рекомендуемый или выбранный вами драйвер и утилиту nvidia-modprobe- для загрузки модулей ядра Nvidia и автоматического создания файлов символьных устройств Nvidia при каждой загрузке машины.
sudo apt-get install nvidia-driver-435 nvidia-modprobe -y
  • По завершении процесса установки запуск nvidia-smi должен отобразить вывод, аналогичный рисунку 4. Хотя в выводе отображается версия CUDA, он отражает только совместимую версию (но не установку CUDA).

2Б. Удаление существующего драйвера Nvidia

Теперь, когда у нас уже есть драйвер Nvidia на устройстве, перед установкой нового драйвера необходимо выполнить дополнительные шаги по удалению. Метод зависит от того, был ли драйвер установлен через APT или файл запуска. Для более позднего метода потребуется файл установщика (ознакомьтесь с этим постом Переполнение стека).

#If installation was performed through APT
sudo apt-get purge nvidia* -y
sudo apt autoremove -y
#If installation was performed through installer
sudo ./NVIDIA-Linux-x86_64-440.33.01.run --uninstall

Прежде чем продолжить, необходимо отключить драйвер ядра Nouveau. Чтобы отключить драйвер Nouveau по умолчанию, создайте файл конфигурации

sudo nano /etc/modprobe.d/blacklist-nouveau.conf

и скопируйте следующее содержимое

blacklist nouveau
options nouveau modeset=0

initramfs — это крошечная версия ОС, которая загружается загрузчиком сразу после ядра. Он живет в оперативной памяти и предоставляет достаточно инструментов и инструкций, чтобы сообщить ядру, как настроить настоящую файловую систему, смонтировать жесткий диск для чтения/записи и начать загрузку всех системных служб. update-initramfs — это скрипт, который обновляет initramfs для работы с новым ядром. Перезагрузите машину, чтобы изменения вступили в силу.

sudo update-initramfs -u
sudo reboot

2С. Установка с помощью Runfile от Nvidia

  • Для установки через runfile требуются дополнительные зависимости.
sudo apt-get install build-essential gcc-multilib dkms -y
  • В качестве последнего шага в процессе установки драйвера Nvidia загрузите и установите файл .run, используя ссылку, полученную выше. Может появиться предупреждающее сообщение об установке файлов конфигурации библиотеки поставщика libglvnd EGL, которое можно игнорировать.
#Download the runfile
wget http://us.download.nvidia.com/tesla/440.33.01/NVIDIA-Linux-x86_64-440.33.01.run
#Add execute permission
chmod +x NVIDIA-Linux-x86_64-440.33.01.run
#Execute the run script
sudo ./NVIDIA-Linux-x86_64-440.33.01.run --dkms -s
  • Запустите nvidia-smi, чтобы убедиться, что версия драйвера Nvidia обновлена.

3. Установите CUDA

Следующим шагом в процессе установки является установка CUDA. Можно подтвердить, существует ли существующая установка, выполнив следующую команду. Это не вернет никаких результатов в отсутствие установки.

ls /usr/local | grep cuda 

Инструментарий CUDA поставляется с драйвером по умолчанию. Если требуется обновленный драйвер, обратитесь к разделу 2 за подробными инструкциями. После установки может потребоваться перезагрузка.

Перейдите по ссылке Загрузки Nvidia CUDA и выберите соответствующие параметры, чтобы получить и выполнить инструкции по загрузке.

5. Установите платформу глубокого обучения

PyTorch более удобен для пользователя, интуитивно понятен, Pythonic и поддерживает динамические графики (лично я предпочитаю PyTorch). При этом у Tensorflow есть отличные функции, такие как Tensorflow Extended, возможности визуализации и т. Д., И они могут найти ценность в зависимости от требований.

PyTorch также поставляется с CUDA. Таким образом, для успешного выполнения приложений PyTorch дополнительно требуется только драйвер Nvidia. Перейдите по ссылке PyTorch и выберите соответствующую конфигурацию для получения инструкций по установке.

Обратите внимание, что последняя поддерживаемая версия CUDA — 10.1, и если версия драйвера более новая, чем минимальная версия, поддерживающая CUDA 10.1, все должно работать.

Чтобы установить PyTorch через pip, может потребоваться сначала установить pip.

sudo apt install python3-pip -y
pip3 install torch torchvision

5. Теперь все готово!

Процесс установки завершен. Запустите следующие команды факела в терминале Python3. Он должен идентифицировать одно устройство Tesla K80,

import torch
torch.cuda.is_available()
torch.cuda.get_device_name(0)

Спасибо, что прочитали это. Я надеюсь, что это поможет вам подготовить ваш GPU к разработке приложений глубокого обучения.