Перейти к содержанию

Устранение неполадок

GPU не обнаружен

Симптом: CUDA available: False или Model loaded on CPU.

Решение 1: Проверьте nvidia-smi на хосте.

nvidia-smi
# Если ошибка — переустановите драйвер

Решение 2: Проверьте NVIDIA Container Toolkit.

docker run --rm --gpus all nvidia/cuda:12.1.1-base-ubuntu22.04 nvidia-smi

Решение 3: Проверьте устройства.

ls -la /dev/nvidia*
# Должны быть: nvidia0, nvidiactl, nvidia-uvm, nvidia-uvm-tools

CUDA out of memory

Симптом: CUDA out of memory.

Все 3 ML-сервиса требуют суммарно ~20 GB VRAM. Система поставляется только в полной конфигурации.

Решение:

# Проверьте использование памяти
nvidia-smi

# Убедитесь, что GPU имеет минимум 24 GB VRAM
# Если текущая GPU недостаточна — замените на GPU с 24+ GB VRAM
# (см. секцию 2.1 — Требования к GPU)

# Проверьте, нет ли посторонних процессов, занимающих VRAM
nvidia-smi --query-compute-apps=pid,name,used_memory --format=csv

# Остановите посторонние GPU-процессы, если найдены
# После чего перезапустите систему:
docker compose down
docker compose up -d

Низкая производительность

Симптом: GPU utilization низкий, latency высокая.

# Мониторинг во время запросов
watch -n 0.5 nvidia-smi

# Если GPU utilization близок к 0% — модель работает на CPU
# Проверьте переменные окружения:
# THREAT_DETECTOR_ML_DEVICE=cuda (не "gpu"!)
# TRANSLATION_SERVICE_MODEL_DEVICE=cuda
# CONTENT_SAFETY_ML_DEVICE=cuda

# Проверьте логи на fallback
docker compose logs threat-detector | grep -i "cpu\|fallback\|device"

NVIDIA driver not detected

Симптом: WARNING: The NVIDIA Driver was not detected.

# Проверьте драйвер
cat /proc/driver/nvidia/version

# Если ошибка — переустановите драйвер
sudo apt install -y nvidia-driver-535
sudo reboot

ML модели не загружаются

Симптом: Health check не проходит, сервис в restart loop.

# Проверьте логи
docker compose logs --tail=200 threat-detector

# Типичные причины:
# 1. Недостаточно RAM для загрузки модели
# 2. Модель не найдена по указанному пути
# 3. Несовместимая версия CUDA

# Проверка доступного RAM
free -h

# Проверка модели внутри контейнера
docker exec llm-firewall-threat-detector ls -la /models/
docker exec llm-firewall-content-safety ls -la /app/models/ 2>/dev/null || echo "No /app/models"

OPA/Policy sync ошибки

Симптом: PDP возвращает ошибки, политики не применяются.

# Проверьте OPA
curl -s http://localhost:8181/health | python3 -m json.tool

# Проверьте MinIO bucket
docker exec llm-firewall-minio-init mc ls myminio/policies/

# Проверьте наличие bundle
curl -s http://localhost:9000/policies/policies/default/bundle.tar.gz -o /dev/null -w "%{http_code}"
# Должен вернуть 200

# Принудительная пересборка bundle
curl -X POST http://localhost:8000/api/v1/sync/force

Ошибки БД

Симптом: Сервисы не запускаются, ошибки миграции.

# Проверьте PostgreSQL
docker compose logs postgres

# Проверьте миграции
docker compose logs profiles-registry-migrate
docker compose logs admin-api-migrate

# Ручной запуск миграции
docker compose run --rm profiles-registry-migrate alembic upgrade head
docker compose run --rm admin-api-migrate alembic upgrade head

Перезапуск после сбоя

# Перезапуск GPU-контейнеров
docker compose restart translation-service threat-detector content-safety

# Если не помогает — сброс GPU
sudo nvidia-smi --gpu-reset

# Полный перезапуск системы
docker compose down
docker compose up -d

Полезные команды диагностики

# === Информация о GPU ===
nvidia-smi -q

# === Проверка драйвера ===
cat /proc/driver/nvidia/version

# === Статус всех контейнеров ===
docker compose ps

# === Использование ресурсов контейнерами ===
docker stats --no-stream

# === Логи конкретного сервиса ===
docker compose logs --tail=100 <service-name>

# === Проверка сети между контейнерами ===
docker exec llm-firewall-gateway curl -s http://threat-detector:8090/health/live

# === Процессы на GPU ===
nvidia-smi --query-compute-apps=pid,name,used_memory --format=csv

# === Проверка Redis ===
docker exec llm-firewall-redis redis-cli ping
docker exec llm-firewall-redis redis-cli info memory

# === Проверка PostgreSQL ===
docker exec llm-firewall-postgres psql -U postgres -c "SELECT datname, pg_size_pretty(pg_database_size(datname)) FROM pg_database;"