Добавление поддержки 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.
Это отличное изображение было сгенерировано AI-моделью Flux 1 dev.
Предварительные требования
Перед настройкой поддержки GPU убедитесь, что у вас есть:
- NVIDIA GPU с установленными совместимыми драйверами. Для помощи в выборе подходящего GPU для AI-задач, см. наше руководство Сравнение характеристик GPU NVidia для AI.
- NVIDIA Container Toolkit установлен (см. Раздел поддержки NVIDIA RTX для Docker)
- Docker Model Runner установлен (может быть переустановлен с поддержкой 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 MUSAcann- Huawei CANNauto- Автоматическое обнаружение (по умолчанию, может работать некорректно)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)- обнаружено устройство GPUoffloaded 41/41 layers to GPU- слои модели загружены на GPUCUDA0 model buffer size = 10946.13 MiB- выделение памяти GPUCUDA0 KV buffer size = 640.00 MiB- кэш ключ-значение на GPUCUDA0 compute buffer size = 306.75 MiB- буфер вычислений на GPU
Мониторинг использования GPU
В другом терминале мониторьте использование GPU в реальном времени:
nvidia-smi -l 1
Вы должны увидеть увеличение использования памяти GPU и загрузки при запуске модели.
Для более продвинутых вариантов мониторинга GPU см. наше руководство Приложения для мониторинга GPU в Linux / Ubuntu.
Устранение неполадок
Модель все еще использует CPU
Если модель все еще работает на CPU:
-
Проверьте конфигурацию Docker daemon:
docker info | grep -i runtimeДолжно отображаться
Default Runtime: nvidia -
Проверьте runtime контейнера раннера:
docker inspect docker-model-runner | grep -A 2 '"Runtime"'Должно отображаться
"Runtime": "nvidia" -
Переустановите раннер с поддержкой GPU:
docker model reinstall-runner --gpu cuda -
Проверьте логи на наличие ошибок:
docker model logs | tail -50
GPU не обнаружен
Если GPU не обнаружен:
-
Проверьте, установлен ли NVIDIA Container Toolkit:
dpkg -l | grep nvidia-container-toolkit -
Тестирование доступа к GPU с помощью стандартного Docker:
docker run --rm --gpus all nvidia/cuda:12.2.2-base-ubi8 nvidia-smiДля устранения неполадок с Docker обратитесь к нашему Docker Cheatsheet.
-
Проверьте драйверы NVIDIA:
nvidia-smi
Проблемы с производительностью
Если производительность GPU низкая:
-
Проверьте использование GPU:
nvidia-smiОбратите внимание на процент использования GPU
-
Убедитесь, что слои модели находятся на GPU:
docker model logs | grep "offloaded.*layers to GPU"Все слои должны быть загружены на GPU
-
Проверьте проблемы с памятью:
nvidia-smiУбедитесь, что память GPU не исчерпана
Лучшие практики
-
Всегда указывайте бэкенд GPU явно: Используйте
--gpu cudaвместо--gpu autoдля GPU NVIDIA, чтобы обеспечить правильную настройку. -
Проверяйте конфигурацию после изменений: Всегда проверяйте
docker info | grep -i runtimeпосле изменения настроек Docker daemon. -
Мониторьте использование GPU: Используйте
nvidia-smiдля мониторинга памяти GPU и загрузки во время инференса модели. Для более продвинутых инструментов мониторинга см. наше руководство Приложения для мониторинга GPU в Linux / Ubuntu. -
Регулярно проверяйте логи: Просматривайте
docker model logs, чтобы убедиться, что модели используют ускорение GPU. -
Используйте подходящие размеры моделей: Убедитесь, что ваш GPU имеет достаточно памяти для модели. Используйте квантованные модели (Q4, Q5, Q6, Q8) для лучшей эффективности использования памяти GPU. Для помощи в выборе подходящего GPU для ваших AI-задач см. наше руководство Сравнение характеристик GPU NVidia для AI.
Полезные ссылки
- Docker Model Runner Cheatsheet
- Официальная документация Docker Model Runner
- Руководство по установке NVIDIA Container Toolkit
- Сравнение Docker Model Runner и Ollama
- Ollama Cheatsheet - Альтернативное решение для хостинга LLM с встроенной поддержкой GPU
- Docker Cheatsheet - Полное руководство по командам и настройкам Docker
- Приложения для мониторинга GPU в Linux / Ubuntu - Список и сравнение инструментов мониторинга GPU NVIDIA
- Сравнение характеристик GPU NVidia для AI - Руководство по выбору подходящего GPU для AI-задач