Введение

Содержание

Введение в аппаратный акселератор

Набор аппаратных акселераторов Kubernetes — это корпоративное решение для оптимизации распределения, изоляции и совместного использования ресурсов GPU в облачных нативных средах. Основанный на device plugins Kubernetes и технологиях NVIDIA, он включает три основных модуля:

  1. vGPU Module
    Основанный на Opensource GPU-Manager, этот модуль обеспечивает тонкую виртуализацию GPU, разделяя физические GPU на виртуальные единицы с квотами по памяти и вычислительным ресурсам. Идеально подходит для мультиарендных сред с динамическим распределением ресурсов.

  2. pGPU Module
    Используя официальный Device Plugin NVIDIA, обеспечивает полную изоляцию физического GPU с планированием, учитывающим NUMA. Предназначен для высокопроизводительных вычислительных задач (HPC), требующих выделенного доступа к GPU.

  3. MPS Module
    Реализует Multi-Process Service NVIDIA для одновременного выполнения нескольких контекстов GPU с ограничениями ресурсов. Оптимизирует приложения с чувствительностью к задержкам за счёт слияния CUDA-ядр.

Преимущества продукта

vGPU Module

  • Динамическое разделение: Разделение GPU для поддержки нескольких процессов на одном физическом GPU
  • Обеспечение QoS: Гарантированные вычислительные единицы (vcuda-core) и квоты памяти (vcuda-memory)

pGPU Module

  • Изоляция на уровне аппаратуры: Прямой PCIe passthrough с защитой IOMMU
  • Оптимизация NUMA: Минимизация передачи данных между сокетами за счёт автоматического привязывания к NUMA-узлам

MPS Module

  • Низкая задержка выполнения: Снижение задержек на 30-50% благодаря слиянию CUDA-контекстов
  • Ограничения ресурсов: Лимитирование вычислительных ресурсов GPU (0-100%) и использования памяти на процесс
  • Отсутствие изменений в коде: Работает с немодифицированными CUDA-приложениями

Сценарии применения

Случаи использования vGPU

  • Мультиарендные AI-платформы: Совместное использование GPU A100/H100 между командами с гарантированными SLA
  • VDI-среды: Предоставление виртуальных рабочих столов с ускорением GPU для CAD/3D рендеринга
  • Пакетный вывод: Параллельное обслуживание моделей с дробным распределением GPU

Случаи использования pGPU

  • HPC-кластеры: Запуск MPI-задач с эксклюзивным доступом к GPU для моделирования погоды
  • Обучение ML: Полное использование GPU для обучения больших языковых моделей
  • Медицинская визуализация: Обработка высокоразрешённых данных МРТ без конкуренции за ресурсы

Случаи использования MPS

  • Инференс в реальном времени: Аналитика видео с низкой задержкой с использованием параллельных CUDA-потоков
  • Оркестрация микросервисов: Совмещение нескольких GPU-микросервисов на общем оборудовании
  • Обслуживание с высокой конкуренцией: Увеличение QPS в 3 раза для рекомендательных систем

Технические ограничения

Требуется привилегированный доступ

Требования к доступу к аппаратным устройствам

Права доступа к устройствам
Устройства NVIDIA GPU требуют прямого доступа к защищённым системным ресурсам:

# Права и владельцы файлов устройств
ls -l /dev/nvidia*
crw-rw-rw- 1 root root 195,   0 Aug 1 10:00 /dev/nvidia0
crw-rw-rw- 1 root root 195, 255 Aug 1 10:00 /dev/nvidiactl
crw-rw-rw- 1 root root 195, 254 Aug 1 10:00 /dev/nvidia-uvm
  • Требование: Доступ root для чтения/записи файлов устройств
  • Последствие: Контейнеры без root получают ошибки отказа в доступе

Операции на уровне ядра

Необходимые взаимодействия с драйвером NVIDIA

ОперацияТребуемые привилегииНазначение
Загрузка модуляCAP_SYS_MODULEЗагрузка модулей ядра NVIDIA
Управление памятьюCAP_IPC_LOCKВыделение памяти GPU
Обработка прерыванийCAP_SYS_RAWIOОбработка прерываний GPU

Требования архитектуры device plugin Kubernetes

  1. Создание сокета: Запись в /var/lib/kubelet/device-plugins
  2. Мониторинг состояния: Доступ к nvidia-smi и логам ядра
  3. Распределение ресурсов: Изменение cgroups устройств

Ограничения vGPU

  • Поддержка только CUDA ниже версии 12.4
  • Отсутствие поддержки MIG при включённом vGPU

Ограничения pGPU

  • Отсутствие возможности совместного использования GPU (1:1 сопоставление пода и GPU)
  • Требуется Kubernetes 1.25+ с включённым SR-IOV
  • Ограничено GPU, подключёнными через PCIe/NVSwitch

Ограничения MPS

  • Возможное распространение ошибок между объединёнными контекстами
  • Требуется CUDA 11.4+ для ограничения памяти
  • Нет поддержки GPU с MIG-разделением