Расскажи об опыте работы с драйверами NVIDIA

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

Ответ

Мой опыт связан с построением GPU-инфраструктуры для ML/Data Science команд в Kubernetes. Работа с драйверами была критичной частью этой задачи.

Ключевые задачи и решения:

  1. Автоматизация установки на bare-metal/VM ноды:

    • Использовал ansible для установки драйверов нужной версии, совместимой с требуемым CUDA Toolkit (например, драйвер >=525 для CUDA 12.x).
    • Важно было корректно обрабатывать зависимости ядра (dkms) и перезагрузку.
      
      # Пример Ansible-таска для Ubuntu
    • name: Install NVIDIA drivers and tools apt: name:
      • nvidia-driver-525
      • nvidia-utils-525
      • nvidia-cuda-toolkit state: present notify: reboot host
  2. Подготовка GPU-оптимизированных Docker-образов: Создавал базовые образы с уже установленными CUDA и cuDNN, чтобы Data Scientist'ам не нужно было этим заниматься.

  3. Интеграция с Kubernetes:

    • Устанавливал nvidia-device-plugin DaemonSet на GPU-ноды. Это позволяло Kubernetes видеть GPU как планируемый ресурс (nvidia.com/gpu).
    • Настраивал NodeFeatureDiscovery (NFD) для автоматического присвоения лейблов нодам (например, gpu-vendor=nvidia).
  4. Мониторинг и управление:

    • Использовал dcgm-exporter для сбора метрик с GPU (загрузка, память, температура) и их отправки в Prometheus.
    • Настраивал GPU Operator от NVIDIA, который автоматизировал всю цепочку: установку драйверов, device plugin, мониторинг и управление энергопотреблением (MIG).

Основные сложности были связаны с версионной совместимостью (ядро Linux ↔ драйвер ↔ CUDA) и обеспечением изоляции GPU между разными пользователями в shared-кластере.