Введение

В настоящее время практически невозможно найти какое-либо приложение для машинного обучения, которое не работает на Графическом процессоре NVIDIA.

В этом руководстве мы покажем вам, как масштабировать ваше приложение с поддержкой CUDA с помощью Docker.

Предпосылки

  • Ubuntu 14.04 или новее (x86_64), требуется для среды выполнения контейнера NVIDIA.
  • Docker Community Edition 19.03 или новее (с API v1.40) для встроенной поддержки NVIDIA
  • Графический процессор NVIDIA с поддержкой CUDA

Настройка докера

  1. Установите Докер:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

2. Добавьте пользователя в группу docker:

sudo usermod -aG docker $USER

⚠️ Вам нужно начать новую сессию, чтобы обновить группы.

Установите драйвер NVIDIA и среду выполнения

  1. Проверьте установку командой nvidia-smi. Вы увидите следующий вывод:
+-----------------------------------------------------------------------------+
    | NVIDIA-SMI 390.116                Driver Version: 390.116                   |
    |-------------------------------+----------------------+----------------------+
    | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
    |===============================+======================+======================|
    |   0  GeForce GTX 560 Ti  Off  | 00000000:01:00.0 N/A |                  N/A |
    | 40%   46C    P8    N/A /  N/A |    790MiB /  1217MiB |     N/A      Default |
    +-------------------------------+----------------------+----------------------+
    +-----------------------------------------------------------------------------+
    | Processes:                                                       GPU Memory |
    |  GPU       PID   Type   Process name                             Usage      |
    |=============================================================================|
    |    0                    Not Supported                                       |
    +-----------------------------------------------------------------------------+

Если драйвер NVIDIA не предустановлен в вашем дистрибутиве Ubuntu, вы можете установить его с помощью sudo apt install nvidia-XXX (XXX — это версия, самая новая — 440) или загрузить соответствующий драйвер NVIDIA и запустить двоичный файл как sudo.

⚠️ Безопасная загрузка: если вы хотите установить драйвер NVIDIA с включенной функцией безопасной загрузки UEFI, ознакомьтесь с официальным руководством NVIDIA.

2. Установите среду выполнения контейнера NVIDIA:

curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list |\
    sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list
sudo apt-get update
sudo apt-get install nvidia-container-runtime

3. Перезапустите Докер:

sudo systemctl stop docker
sudo systemctl start docker

Теперь вы готовы запустить свое первое приложение CUDA в Docker!

Запустите CUDA в Docker

  1. Выберите правильный базовый образ (тег будет иметь форму {version}-cudnn*-{devel|runtime}) для вашего приложения. Самый новый — 10.2-cudnn7-devel.
  2. Убедитесь, что NVIDIA работает в Docker с помощью:
docker run --gpus all nvidia/cuda:10.2-cudnn7-devel nvidia-smi

💡 Вы можете указать количество графических процессоров и даже конкретные графические процессоры с помощью флага --gpus. Ознакомьтесь с Справочником Docker.

3. Похлопайте себя по плечу, если вы получите тот же результат, что и при запуске nvidia-smi на хост-компьютере.

Поздравляю! Как вы можете взломать свой собственный Dockerfile и масштабировать свое приложение на основе CUDA!

О нас

Целантур предоставляет решение, соответствующее GDPR, для автоматической анонимизации большого количества изображений и видео за счет размытия лиц, тел, автомобилей и номерных знаков. Если вы ищете решение для анонимизации, смело свяжитесь с нами.

Первоначально опубликовано на www.celantur.com.