CDI-спека /etc/cdi/nvidia.yaml запекает нумерацию /dev/dri/card* на момент генерации, поэтому после переподключения видеокарты или смены порта контейнер не стартует с "CDI device injection failed". Ключ gpus: all от этого свободен: Docker сам подставляет драйвер NVIDIA, правка /etc/docker/daemon.json и перезапуск демона не нужны.
33 lines
2.4 KiB
YAML
33 lines
2.4 KiB
YAML
# Переопределение photo-ai для работы на NVIDIA GPU.
|
||
# Использование:
|
||
# docker compose -f docker-compose.yml -f docker-compose.gpu.yml up -d --build photo-ai
|
||
#
|
||
# Требуется драйвер NVIDIA и NVIDIA Container Toolkit. GPU выдаётся контейнеру ключом
|
||
# `gpus: all`: Docker сам подставляет драйвер NVIDIA, правка /etc/docker/daemon.json и
|
||
# перезапуск демона не нужны.
|
||
# Схема через CDI (deploy.resources.reservations.devices -> nvidia.com/gpu=all) здесь
|
||
# НЕ используется намеренно: спека /etc/cdi/nvidia.yaml запекает нумерацию /dev/dri/card*
|
||
# на момент генерации, поэтому после переподключения видеокарты или смены порта
|
||
# она начинает ссылаться на несуществующий узел и контейнер не стартует
|
||
# ("CDI device injection failed: failed to stat CDI host device /dev/dri/cardN").
|
||
# Перегенерация спеки требует sudo и теряется при каждой перегенерации;
|
||
# `gpus: all` от этого свободен. Если nvidia-runtime зарегистрирован в демоне
|
||
# (nvidia-ctk runtime configure --runtime=docker), можно вместо этого указать
|
||
# deploy.resources.reservations.devices с driver: nvidia, count: 1 — результат тот же.
|
||
# TORCH_VARIANT=cu126, а не cu124: в индексе cu124 последний torch — 2.6.0, а cu126 даёт ровно
|
||
# те же torch 2.14.0 / torchvision 0.29.0, что и CPU-образ, поэтому варианты сборки отличаются
|
||
# только CUDA-библиотеками.
|
||
# Образ тегируется отдельно (whatido-photo-ai:cu126), чтобы сборка GPU-варианта не перетирала
|
||
# CPU-образ whatido-photo-ai:latest.
|
||
# PHOTO_AI_DEVICE=cuda при недоступной CUDA не роняет сервис: app.py пишет WARN и работает
|
||
# на CPU, /health при этом отвечает 200.
|
||
services:
|
||
photo-ai:
|
||
image: whatido-photo-ai:cu126
|
||
build:
|
||
args:
|
||
TORCH_VARIANT: cu126
|
||
environment:
|
||
PHOTO_AI_DEVICE: ${PHOTO_AI_DEVICE:-cuda}
|
||
gpus: all
|