Files
WhatIDo/docker-compose.gpu.yml
T
dev 1d71e249e4 fix(photo-ai): GPU выдаётся ключом gpus: all вместо CDI-спеки
CDI-спека /etc/cdi/nvidia.yaml запекает нумерацию /dev/dri/card* на момент
генерации, поэтому после переподключения видеокарты или смены порта
контейнер не стартует с "CDI device injection failed". Ключ gpus: all от
этого свободен: Docker сам подставляет драйвер NVIDIA, правка
/etc/docker/daemon.json и перезапуск демона не нужны.
2026-10-04 21:04:53 +03:00

33 lines
2.4 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Переопределение 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