forked from Dan4ick/Lidar_Muxa
106 lines
4.5 KiB
Markdown
106 lines
4.5 KiB
Markdown
# Руководство по запуску 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 без падения программы.
|