4.5 KiB
4.5 KiB
Руководство по запуску FlyGuard в Docker (NVIDIA GPU + Graceful CPU Fallback)
FlyGuard поставляется в виде универсального производственного Docker-образа с поддержкой аппаратного ускорения NVIDIA GPU (CUDA 12.x) и автоматического гибридного переключения на CPU (Graceful Fallback) при отсутствии или сбое графического процессора.
1. Быстрый запуск через helper-скрипт docker-run.sh
Скрипт docker-run.sh автоматически проверяет наличие nvidia-smi и подключает флаги --gpus all:
# Сборка универсального образа (flyguard:latest)
./docker-run.sh build
# Общий запуск конвейера (по всем бэгам в data/)
./docker-run.sh run
# Проверка видимости GPU и драйвера внутри контейнера
./docker-run.sh info
# Прогон всех 41 верификационных unit-тестов
./docker-run.sh test
# Обучение клеток Кеньона (50 000 KC) на GPU
./docker-run.sh train-mbon --device cuda --n-kc 50000
# Генерация бенчмарка дальности с аугментациями
./docker-run.sh benchmark
2. Сборка образов напрямую через docker build
Универсальный образ с GPU-ускорением (по умолчанию)
docker build -t flyguard:latest -f Dockerfile.offline .
- База:
nvidia/cuda:12.4.1-runtime-ubuntu22.04 - Python: 3.11, PyTorch CUDA 12.1+, cuDNN, OpenMP
libgomp1 - Поддерживаемые архитектуры: Ada Lovelace (RTX 4070 Ti Super 16GB), Ampere, Hopper, Turing.
- Отказоустойчивость: если запущен без
--gpus all, прозрачно работает на CPU.
Облегченный CPU-образ (опционально, ~200 МБ)
docker build --target cpu -t flyguard:cpu -f Dockerfile.offline .
3. Запуск через Docker Compose
В docker-compose.yml настроены готовые сервисы с автоматической резервацией GPU:
# 1. Главный сервис: сквозная обработка данных лидара
docker compose up
# или
docker compose run --rm pipeline
# 2. Проверка оборудования
docker compose run --rm info
# 3. Полный набор unit-тестов
docker compose run --rm test
# 4. Высокопроизводительное обучение MBON на 50k клеток
docker compose run --rm train-mbon
# 5. Оценка метрик детекции и ложных тревог
docker compose run --rm evaluate
# 6. Интерактивная отладка в bash
docker compose run --rm shell
4. Прямой запуск через docker run
Запуск с аппаратным ускорением NVIDIA GPU:
docker run --rm -it \
--gpus all \
-v /path/to/lidar/data:/data:ro \
-v $(pwd)/artifacts:/app/artifacts \
--shm-size=8g \
flyguard:latest pipeline --all --verbose
Запуск на CPU (стенд жюри без GPU / fallback):
docker run --rm -it \
-v /path/to/lidar/data:/data:ro \
-v $(pwd)/artifacts:/app/artifacts \
--shm-size=4g \
flyguard:latest pipeline --all --verbose
5. Архитектура Graceful Fallback на CPU
Конвейер использует гибридную схему вычислений:
- Статический выбор: при инициализации
device = "cuda" if is_cuda_available() else "cpu". - Динамический рантайм-откат: если в процессе работы видеокарта возвращает ошибку (CUDA OOM, отвал драйвера), модуль
flyguard/device.pyфиксирует сбой черезnotify_cuda_error(exc), текущий кадр мгновенно досчитывается на CPU через NumPy/SciPy, а конвейер переходит в режим CPU без падения программы.