Lidar_Muxa/docs/DOCKER.md

106 lines
4.5 KiB
Markdown
Raw Permalink 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.

# Руководство по запуску 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`](file:///home/wpng1337/Brainrot_Muxa/docker-run.sh) автоматически проверяет наличие `nvidia-smi` и подключает флаги `--gpus all`:
```bash
# Сборка универсального образа (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-ускорением (по умолчанию)
```bash
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 МБ)
```bash
docker build --target cpu -t flyguard:cpu -f Dockerfile.offline .
```
---
## 3. Запуск через Docker Compose
В [`docker-compose.yml`](file:///home/wpng1337/Brainrot_Muxa/docker-compose.yml) настроены готовые сервисы с автоматической резервацией GPU:
```bash
# 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:
```bash
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):
```bash
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`](file:///home/wpng1337/Brainrot_Muxa/flyguard/device.py) фиксирует сбой через `notify_cuda_error(exc)`, текущий кадр мгновенно досчитывается на CPU через NumPy/SciPy, а конвейер переходит в режим CPU без падения программы.