Добавление поддержки GPU NVIDIA в Docker Model Runner

Включите ускорение с помощью GPU для Docker Model Runner с поддержкой NVIDIA CUDA

Docker Model Runner — это официальный инструмент Docker для запуска AI-моделей локально, но включение ускорения на GPU NVIDIA в Docker Model Runner требует специальной настройки.

В отличие от стандартных команд docker run, команда docker model run не поддерживает флаги --gpus или -e, поэтому поддержку GPU необходимо настраивать на уровне Docker daemon и во время установки раннера.

Если вы ищете альтернативное решение для хостинга LLM с более простой настройкой GPU, рассмотрите Ollama, который имеет встроенную поддержку GPU и более простую установку. Однако Docker Model Runner предлагает лучшую интеграцию с экосистемой Docker и распределением артефактов OCI.

Docker Model Runner с поддержкой NVIDIA GPU Это отличное изображение было сгенерировано AI-моделью Flux 1 dev.

Предварительные требования

Перед настройкой поддержки GPU убедитесь, что у вас есть:

Проверьте доступность вашего GPU:

nvidia-smi

Тестирование доступа к GPU в Docker:

docker run --rm --gpus all nvidia/cuda:12.2.2-base-ubi8 nvidia-smi

Для большего количества команд Docker и вариантов конфигурации см. наш Docker Cheatsheet.

Шаг 1: Настройка Docker Daemon для NVIDIA Runtime

Docker Model Runner требует, чтобы NVIDIA runtime был установлен как стандартный runtime в конфигурации Docker daemon.

Поиск пути к NVIDIA Container Runtime

Сначала найдите, где установлен nvidia-container-runtime:

which nvidia-container-runtime

Обычно это выводит /usr/bin/nvidia-container-runtime. Запомните этот путь для следующего шага.

Настройка Docker Daemon

Создайте или обновите /etc/docker/daemon.json, чтобы установить NVIDIA как стандартный runtime:

sudo tee /etc/docker/daemon.json > /dev/null << 'EOF'
{
  "default-runtime": "nvidia",
  "runtimes": {
    "nvidia": {
      "path": "/usr/bin/nvidia-container-runtime",
      "runtimeArgs": []
    }
  }
}
EOF

Важно: Если which nvidia-container-runtime вернул другой путь, обновите значение "path" в JSON-конфигурации соответственно.

Перезапуск сервиса Docker

Примените конфигурацию, перезапустив Docker:

sudo systemctl restart docker

Проверка конфигурации

Подтвердите, что NVIDIA runtime настроен:

docker info | grep -i runtime

Вы должны увидеть Default Runtime: nvidia в выводе.

Шаг 2: Установка Docker Model Runner с поддержкой GPU

Docker Model Runner должен быть установлен или переустановлен с явной поддержкой GPU. Контейнер раннера сам по себе должен быть версией с поддержкой CUDA.

Остановка текущего раннера (если запущен)

Если Docker Model Runner уже установлен, остановите его сначала:

docker model stop-runner

Установка/переустановка с поддержкой CUDA

Установите или переустановите Docker Model Runner с поддержкой CUDA GPU:

docker model reinstall-runner --gpu cuda

Эта команда:

  • Загружает версию с поддержкой CUDA (docker/model-runner:latest-cuda) вместо версии только для CPU
  • Настраивает контейнер раннера для использования NVIDIA runtime
  • Включает ускорение GPU для всех моделей

Примечание: Если вы уже установили Docker Model Runner без поддержки GPU, вам необходимо переустановить его с флагом --gpu cuda. Просто настройка Docker daemon недостаточна — сам контейнер раннера должен быть версией с поддержкой CUDA.

Доступные бэкенды GPU

Docker Model Runner поддерживает несколько бэкендов GPU:

  • cuda - NVIDIA CUDA (наиболее распространенный для GPU NVIDIA)
  • rocm - AMD ROCm (для GPU AMD)
  • musa - Moore Threads MUSA
  • cann - Huawei CANN
  • auto - Автоматическое обнаружение (по умолчанию, может работать некорректно)
  • none - Только CPU

Для GPU NVIDIA всегда используйте --gpu cuda явно.

Шаг 3: Проверка доступа к GPU

После установки проверьте, что Docker Model Runner может получить доступ к вашему GPU.

Проверка доступа к GPU в контейнере раннера

Тестирование доступа к GPU из контейнера Docker Model Runner:

docker exec docker-model-runner nvidia-smi

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

Проверка статуса раннера

Убедитесь, что Docker Model Runner работает:

docker model status

Вы должны увидеть, что раннер активен с поддержкой llama.cpp.

Шаг 4: Тестирование модели с GPU

Запустите модель и проверьте, что она использует GPU.

Запуск модели

Начните инференс модели:

docker model run ai/qwen3:14B-Q6_K "who are you?"

Проверка использования GPU в логах

Проверьте логи Docker Model Runner для подтверждения использования GPU:

docker model logs | grep -i cuda

Вы должны увидеть сообщения, указывающие на использование GPU:

  • using device CUDA0 (NVIDIA GeForce RTX 4080) - обнаружено устройство GPU
  • offloaded 41/41 layers to GPU - слои модели загружены на GPU
  • CUDA0 model buffer size = 10946.13 MiB - выделение памяти GPU
  • CUDA0 KV buffer size = 640.00 MiB - кэш ключ-значение на GPU
  • CUDA0 compute buffer size = 306.75 MiB - буфер вычислений на GPU

Мониторинг использования GPU

В другом терминале мониторьте использование GPU в реальном времени:

nvidia-smi -l 1

Вы должны увидеть увеличение использования памяти GPU и загрузки при запуске модели.

Для более продвинутых вариантов мониторинга GPU см. наше руководство Приложения для мониторинга GPU в Linux / Ubuntu.

Устранение неполадок

Модель все еще использует CPU

Если модель все еще работает на CPU:

  1. Проверьте конфигурацию Docker daemon:

    docker info | grep -i runtime
    

    Должно отображаться Default Runtime: nvidia

  2. Проверьте runtime контейнера раннера:

    docker inspect docker-model-runner | grep -A 2 '"Runtime"'
    

    Должно отображаться "Runtime": "nvidia"

  3. Переустановите раннер с поддержкой GPU:

    docker model reinstall-runner --gpu cuda
    
  4. Проверьте логи на наличие ошибок:

    docker model logs | tail -50
    

GPU не обнаружен

Если GPU не обнаружен:

  1. Проверьте, установлен ли NVIDIA Container Toolkit:

    dpkg -l | grep nvidia-container-toolkit
    
  2. Тестирование доступа к GPU с помощью стандартного Docker:

    docker run --rm --gpus all nvidia/cuda:12.2.2-base-ubi8 nvidia-smi
    

    Для устранения неполадок с Docker обратитесь к нашему Docker Cheatsheet.

  3. Проверьте драйверы NVIDIA:

    nvidia-smi
    

Проблемы с производительностью

Если производительность GPU низкая:

  1. Проверьте использование GPU:

    nvidia-smi
    

    Обратите внимание на процент использования GPU

  2. Убедитесь, что слои модели находятся на GPU:

    docker model logs | grep "offloaded.*layers to GPU"
    

    Все слои должны быть загружены на GPU

  3. Проверьте проблемы с памятью:

    nvidia-smi
    

    Убедитесь, что память GPU не исчерпана

Лучшие практики

  1. Всегда указывайте бэкенд GPU явно: Используйте --gpu cuda вместо --gpu auto для GPU NVIDIA, чтобы обеспечить правильную настройку.

  2. Проверяйте конфигурацию после изменений: Всегда проверяйте docker info | grep -i runtime после изменения настроек Docker daemon.

  3. Мониторьте использование GPU: Используйте nvidia-smi для мониторинга памяти GPU и загрузки во время инференса модели. Для более продвинутых инструментов мониторинга см. наше руководство Приложения для мониторинга GPU в Linux / Ubuntu.

  4. Регулярно проверяйте логи: Просматривайте docker model logs, чтобы убедиться, что модели используют ускорение GPU.

  5. Используйте подходящие размеры моделей: Убедитесь, что ваш GPU имеет достаточно памяти для модели. Используйте квантованные модели (Q4, Q5, Q6, Q8) для лучшей эффективности использования памяти GPU. Для помощи в выборе подходящего GPU для ваших AI-задач см. наше руководство Сравнение характеристик GPU NVidia для AI.

Полезные ссылки