Lidar_Muxa/docs/DOCKER.md

4.5 KiB
Raw Blame History

Руководство по запуску 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

Конвейер использует гибридную схему вычислений:

  1. Статический выбор: при инициализации device = "cuda" if is_cuda_available() else "cpu".
  2. Динамический рантайм-откат: если в процессе работы видеокарта возвращает ошибку (CUDA OOM, отвал драйвера), модуль flyguard/device.py фиксирует сбой через notify_cuda_error(exc), текущий кадр мгновенно досчитывается на CPU через NumPy/SciPy, а конвейер переходит в режим CPU без падения программы.