Был ли у вас опыт проброса GPU NVIDIA в Docker-контейнеры?

«Был ли у вас опыт проброса GPU NVIDIA в Docker-контейнеры?» — вопрос из категории Docker, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, я настраивал доступ к GPU NVIDIA внутри Docker-контейнеров для задач машинного обучения и высокопроизводительных вычислений. Основной подход — использование флага --gpus в Docker CLI (начиная с версии 19.03) или раннее решение nvidia-docker2.

Пример запуска контейнера с доступом ко всем GPU:

docker run --gpus all -it nvidia/cuda:11.8.0-base nvidia-smi

Ключевые моменты из моего опыта:

  1. Требования к хосту: На хосте должны быть установлены драйверы NVIDIA и nvidia-container-toolkit.
  2. Проверка: Внутри контейнера команда nvidia-smi должна показывать те же GPU, что и на хосте.
  3. Оркестрация: В Kubernetes для этого используется DaemonSet nvidia-device-plugin, который делает GPU доступными как расширенный ресурс (nvidia.com/gpu) для пода.
  4. Ограничения: Можно указывать конкретные GPU или лимиты на память, например --gpus '"device=0,1"' или --gpus all --gpus '"capabilities=utility,compute"'.

Это критически важно для изоляции и воспроизводимости ML-пайплайнов.