Home » Как запустить контейнеры с поддержкой GPU в Proxmox

Как запустить контейнеры с поддержкой GPU в Proxmox

от virtualizationhowto
0 Комментарии 509 просмотров 12 мин на чтение

GPU уже определённо используются не только геймерами или майнерами криптовалюты. Они также стали ключевым оборудованием при работе с ИИ, кодированием медиа и задачами вроде машинного обучения. Даже в домашней лаборатории мы можем использовать GPU для ускорения окружения при выполнении многих новых и интересных рабочих нагрузок, таких как локально размещённый приватный ИИ. Это включает использование GPU-ускорения в таких вещах, как Kubernetes, LXC и Docker-контейнеры.

Контейнеры LXC и Docker с пробросом GPU в Proxmox

Контейнеры LXC и Docker с пробросом GPU в Proxmox

При работе с контейнерами вы можете настроить GPU-совместимые контейнеры в своей домашней лаборатории, чтобы использовать аппаратное GPU-ускорение. Давайте посмотрим, зачем это нужно и как это настроить.

Зачем беспокоиться о GPU-ускорении в домашней лаборатории?

Вы, конечно, можете выполнять многозадачность и запускать серьёзные рабочие нагрузки на современных процессорах. Однако GPU гораздо эффективнее справляются с задачами, выполняемыми параллельно. Модели ИИ опираются на тысячи потоков, которые выполняются одновременно, и только GPU способны обработать такую нагрузку с высокой производительностью. Большинство из нас испытывали это даже на очень быстром современном CPU. Если запускать модели ИИ только на CPU, ответы в чатах идут чрезвычайно медленно в терминах «токенов в секунду» по сравнению с использованием GPU для локального ИИ.

Обратите внимание на следующие рабочие нагрузки, которые выиграют от наличия GPU:

  • ИИ: Это, вероятно, главный сценарий сейчас. Самостоятельно размещённый ИИ — отличный способ гарантировать, что вы владеете и контролируете данные вашего ИИ-чата
  • Медиа-серверы: Решения вроде Jellyfin, Plex и HandBrake могут использовать GPU для кодирования H.264, H.265 и AV1
  • Эксперименты с машинным обучением: Вы можете использовать такие инструменты, как PyTorch и TensorFlow, чтобы перенести тяжёлые вычисления на GPU
  • Параллельная обработка данных: Вы можете использовать инструменты, такие как RAPIDS или базы данных с ускорением на CUDA, чтобы тестировать рабочие процессы данных без необходимости в облачных ресурсах

Запуск GPU-совместимых контейнеров позволяет использовать мощь вашего GPU в лёгком контейнере для рабочих нагрузок. Давайте посмотрим, как это настроить.

Шаг 1: Проверьте оборудование и драйверы

Первый шаг зависит от вашего оборудования. Прежде чем углубляться в настройки Docker или Kubernetes, убедитесь, что у вас есть оборудование, поддерживающее передачу (проброс) GPU (passthrough).

Обычно это включает следующее:

  1. GPU NVIDIA: Большинство карт GTX, RTX и дата-центровых карт (например, A2000 или A6000) поддерживают CUDA. Драйверы NVIDIA доступны для хостов на Linux и Windows.
  2. GPU AMD: Многие современные Radeon GPU поддерживают ROCm — открытую платформу вычислений от AMD. Поддержка контейнеров AMD улучшилась в 2025 году и теперь имеет официальную интеграцию с Docker.
  3. GPU Intel: Intel Arc и встроенная графика Iris Xe поддерживают ускорение GPU с помощью Intel GPU Tools и рантайма OneAPI

Далее проверьте, поддерживает ли ваш BIOS IOMMU и включены ли расширения виртуализации. Это гарантирует, что GPU можно изолировать для проброса или прямого доступа.

Iommu in the bios for GPU accelerated containers
IOMMU в BIOS для GPU-ускоренных контейнеров

Если вы хотите использовать командную строку, вы также можете проверить IOMMU и виртуализацию AMD для ввода-вывода таким образом. Ниже мы проверяем, включены ли IOMMU и AMD-Vi.

Checking iommu from the command line
Проверка IOMMU через командную строку

Шаг 2: Установите драйверы GPU и рантайм

Для большинства домашних лабораторий на базе Linux вам нужно установить правильные драйверы на хост-систему. Посмотрите обзор ниже, если вы запускаете Docker-контейнеры на «голом» железе с установленным Linux или на виртуальной машине с Linux поверх гипервизора.

Gpu acceleration with gpu driver and container toolkit
Ускорение GPU с помощью драйвера и контейнерного тулкита

NVIDIA:

Использование graphics-drivers/ppa с последующим указанием nvidia-driver-latest обычно обеспечивает установку последнего драйвера.

После установки драйверов вы можете проверить, что они установлены и оборудование работает, командой nvidia-smi:

Running the nvidia smi command
Выполнение команды nvidia-smi

Важно: NVIDIA Container Toolkit устанавливается только на хост-систему (то есть на Docker-хост), а не внутри ваших контейнеров. Этот пакет действует как мост между Docker и драйверами NVIDIA. Он позволяет контейнерам получить доступ к GPU-оборудованию. Контейнеры будут автоматически использовать драйверы хоста, поэтому вам не нужно устанавливать драйверы внутри контейнера. Если вашему приложению нужны библиотеки CUDA, вы можете использовать предсобранные базовые образы NVIDIA (например, nvidia/cuda), которые уже включают их.

Далее установите NVIDIA Container Toolkit, который позволяет Docker взаимодействовать с GPU:

Вы можете убедиться в доступе к GPU внутри контейнеров с помощью:

AMD

Установите ROCm и пакеты поддержки контейнеров:

Для интеграции с Docker AMD предоставляет образ рантайма ROCm, который вы можете протестировать:

Intel

Для Intel Arc и встраиваемой графики необходимо установить рантайм Intel GPU:

Вы можете проверить доступ к GPU с помощью:

А что насчёт LXC-контейнеров?

Для LXC-контейнеров всё зависит от того, что вы запускаете внутри LXC. Если вы запускаете приложения непосредственно внутри LXC (без Docker), вам нужно установить драйверы NVIDIA внутри самого LXC-контейнера, но вам НЕ нужно устанавливать container toolkit.

Lxc containers without docker for gpu enabled containers
LXC-контейнеры без Docker для GPU-ускорения

Если вы запускаете Docker внутри LXC-контейнера, тогда вам нужно установить и драйвер NVIDIA, и Container Toolkit.

Lxc container running docker for gpu acceleration
LXC-контейнер с Docker для GPU-ускорения

Команды для выполнения в этом случае:

Шаг 3: Запуск GPU-рабочих нагрузок

После того как вы пройдёте этапы с оборудованием и драйверами, мы можем настроить Docker для использования вашего GPU в качестве устройства рантайма. Эта часть довольно проста — нужно передать флаги в команду Docker для обнаружения всех доступных GPU или добавить это в Docker Compose.

1. Ollama или OpenWebUI для локального ИИ

Если вы экспериментируете с локальными LLM, такими как Llama 3 или Mistral, вы можете запускать их прямо в Docker с GPU-ускорением:

Running docker container with gpus all command
Запуск Docker-контейнера с флагом —gpus all

Вы также можете указать доступ к GPU в вашем файле Docker Compose:

2. Plex или Jellyfin для GPU-транскодирования

Если вы используете домашнюю лабораторию как медиа-сервер, GPU-ускорение существенно улучшает производительность стриминга и энергоэффективность. Примечание: Plex требует подписки Plex Pass для аппаратного транскодирования.

Вот пример Plex с Intel QuickSync:

Вот пример Jellyfin, который является open-source и использует NVIDIA-устройства:

Вы можете включить аппаратное ускорение в настройках Plex в разделе Transcoder. Включите «Использовать аппаратное ускорение, когда доступно». В Jellyfin перейдите в Dashboard > Playback > Transcoding. Там установите аппаратное ускорение на NVIDIA, Intel QuickSync или VAAPI и т.д.

3. Машинное обучение с TensorFlow или PyTorch

Если вы экспериментируете с ML-моделями локально, использование GPU-совместимых контейнеров даёт огромный прирост производительности.

Быстрый тест TensorFlow на GPU:

PyTorch с NVIDIA:

PyTorch с AMD ROCm:

Шаг 4: GPU в Kubernetes или MicroK8s

Если вы перешли на Kubernetes в вашей домашней лаборатории, вы можете использовать планирование GPU для ваших рабочих нагрузок. Предварительные требования: Убедитесь, что драйверы NVIDIA и Container Toolkit установлены на всех узлах, которые будут запускать GPU-рабочие нагрузки (см. Шаг 2 выше).

NVIDIA

Или вы можете сделать это с помощью Helm:

Затем вы можете проверить обнаружение GPU с помощью:

Затем вы можете добавить запросы на GPU в спецификацию Pod:

Для постоянных рабочих нагрузок вы можете использовать деплоймент с долгоживущим контейнером, например:

MicroK8s также включает встроенный аддон GPU, который автоматически настраивает драйверы для поддерживаемого оборудования, что делает процесс очень простым. Примечание: Это предполагает, что вы уже установили драйверы NVIDIA и Container Toolkit на хост MicroK8s. Аддон развёртывает только device plugin, а не сами драйверы.

AMD

AMD имеет плагин устройства для Kubernetes через ROCm:

Затем вы можете планировать GPU-рабочие нагрузки аналогичным образом:

Шаг 5: Устранение неполадок

Если контейнеры «не видят» GPU, вы можете пройти базовую диагностику с помощью нескольких команд на уровне хоста.

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

Вы также можете использовать инструменты вроде watch nvidia-smi, чтобы отслеживать активные процессы на GPU, когда контейнеры запускаются, чтобы увидеть, используют ли они GPU.

Шаг 6: Мониторинг

Когда ваши GPU-рабочие нагрузки работают, мониторинг помогает оптимизировать распределение ресурсов и раннее обнаружение проблем. Вы можете использовать открытое решение с Prometheus и NVIDIA DCGM Exporter, которое рекомендуется для сбора статистики и метрик:

NVIDIA

Вы можете развернуть DCGM Exporter на каждом GPU-узле для экспорта метрик.

Затем вы можете настроить Prometheus для скрапинга метрик:

AMD

Используйте экспортер ROCm SMI:

Рекомендуемые модели GPU

Обратите внимание на несколько рекомендаций по GPU для различных рабочих нагрузок и задач на 2025–2026 годы с моделями, которые нам известны на текущий момент.

Для задач AI/ML

GPU VRAM TDP Прибл. цена Лучше всего для Доступность
NVIDIA RTX 5070 12GB GDDR7 250W 60 000 руб Начальный уровень для ИИ, заявляет производительность RTX 4090 с DLSS 4 Доступна сейчас
NVIDIA RTX 5080 16GB GDDR7 360W 120 000 руб Серьёзные ИИ-задачи, 4K-гейминг Доступна сейчас
NVIDIA RTX Pro 4000 SFF 20GB GDDR6 70W 170 000 руб Компактные серверы, низкое энергопотребление Доступна сейчас
AMD Radeon RX 9070 XT 16GB 300W 75 000 руб ROCm-совместимые ИИ-задачи, дружелюбна к open-source Доступна сейчас
AMD Radeon RX 9070 (желательно модель 48GB) 48GB 350W 150 000 руб Большие языковые модели, огромные датасеты В России практически недоступна сейчас
Intel Arc B770 16GB GDDR6 225W 36 000 руб Бюджетный ИИ, медиа-транскодирование Доступна сейчас

Для медиатранскодирования (Plex/Jellyfin и т.д.)

GPU VRAM TDP Прибл. цена Лучше всего для Доступность
Intel Arc B580 12GB 190W 32 000 руб Самая выгодная, справляется с 10+ потоками, AV1-кодирование Доступна сейчас
Intel Arc Pro B50 16GB 70W 32 000 руб Низкопрофильные, компактные сборки Доступна сейчас
Intel Arc A770 16GB 225W 45 000 руб Зрелые драйверы, проверенная производительность Доступна сейчас
NVIDIA RTX 5050 8GB 130W 27 000 руб NVENC-кодирование, компактна Доступна сейчас

Для бюджетных домашних лабораторий

GPU VRAM TDP Прибл. цена Лучше всего для Доступность
Intel Arc B580 12GB 190W 32 000 руб Лучшая общая ценность для ИИ + транскодирования Доступна сейчас
AMD Radeon RX 7700 XT 12GB 245W 50 000 руб Надёжная поддержка ROCm, игровая карта Доступна сейчас
Intel Arc A380 6GB 75W 14 000 руб Ультра-бюджетное транскодирование Доступна сейчас

В заключение

Нет сомнений, что GPU-совместимые контейнеры — одна из крупнейших эволюций в современной домашней лаборатории. С учётом растущих требований к рабочим нагрузкам, таких как ИИ, машинное обучение и обработка медиа, нам всё чаще потребуется такая конфигурация. Процесс настройки стал значительно проще благодаря NVIDIA Container Toolkit и интеграции ROCm от AMD, а также растущей поддержке со стороны Intel.

С одним GPU и небольшими настройками вы можете открыть новый уровень производительности для задач ИИ и медиа. Напишите в комментариях — используете ли вы GPU-совместимые контейнеры?

Источник на английском языке

Читайте про умный дом:
Даже просто подбор, перевод и оформление статей требуют времени. А самостоятельный обзор устройств требует еще и финансовых вложений. Если Вы хотите больше обзоров, Вы можете помочь автору.

Вам может понравиться

Оставить комментарий