• Русский
  • Введение

    Содержание

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

    Набор аппаратных акселераторов 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-разделением