Files
microdao-daarion/NODE1-GPU-OPTIMIZATION.md
Apple 3de3c8cb36 feat: Add presence heartbeat for Matrix online status
- matrix-gateway: POST /internal/matrix/presence/online endpoint
- usePresenceHeartbeat hook with activity tracking
- Auto away after 5 min inactivity
- Offline on page close/visibility change
- Integrated in MatrixChatRoom component
2025-11-27 00:19:40 -08:00

9.4 KiB
Raw Blame History

🚀 Оптимізація CPU навантаження через GPU на НОДА1

Дата: 2025-01-27
Проблема: CPU навантаження 85.3% (високе)
Мета: Перенести частину навантаження на GPU (якщо доступний)


🔍 Аналіз поточної ситуації

CPU навантаження

  • Загальне: 85.3%
  • Основні споживачі:
    • PostgreSQL: 1706% CPU (multi-core, нормально для БД)
    • Інші процеси: розподілені

Перевірка GPU

Hetzner сервер (НОДА1)

  • Тип: Cloud сервер (144.76.224.179)
  • GPU: Зазвичай немає GPU на стандартних Hetzner серверах
  • Варіанти: Потрібно перевірити чи є GPU-оптимізований інстанс

РІШЕННЯ: Увімкнути GPU для Ollama!

Поточна ситуація

  • GPU доступний: NVIDIA RTX 4000 SFF Ada (20GB VRAM)
  • Ollama використовує CPU: 1583% CPU (multi-core)
  • ⚠️ GPU не використовується Ollama

Термінове рішення

1. Увімкнути GPU для Ollama контейнера:

# docker-compose.yml (на НОДА1)
services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]
    environment:
      - NVIDIA_VISIBLE_DEVICES=all
      - CUDA_VISIBLE_DEVICES=0

2. Перезапустити Ollama:

docker stop ollama
docker compose up -d ollama

3. Перевірити використання GPU:

nvidia-smi
docker exec ollama ollama ps

Очікувані результати

До оптимізації:

  • CPU: 85.3% (Ollama: 1583% multi-core)
  • GPU: 0% utilization
  • Швидкість інференсу: повільно (CPU)

Після оптимізації:

  • CPU: ~40-50% (Ollama: ~50-100% на GPU)
  • GPU: 30-50% utilization
  • Швидкість інференсу: +200-300% (GPU)

💡 Варіанти оптимізації

1. GPU доступний

A. Ollama з GPU acceleration

# docker-compose.yml
services:
  ollama:
    image: ollama/ollama:latest
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]
    environment:
      - NVIDIA_VISIBLE_DEVICES=all

Переваги:

  • Швидше інференс моделей (qwen3:8b, qwen2.5:14b)
  • Зменшення CPU навантаження на 30-50%
  • Паралельна обробка запитів

Недоліки:

  • Потрібен GPU-оптимізований сервер
  • Додаткові витрати

B. Використання GPU для:

  • LLM інференс (Ollama моделі)
  • Vision моделі (qwen3-vl:8b)
  • Embeddings (Qdrant з GPU)
  • Image generation (dagi-image-gen)

2. Якщо GPU недоступний

A. Оптимізація CPU навантаження

1. PostgreSQL оптимізація:

-- Налаштування для зменшення CPU
shared_buffers = 4GB
effective_cache_size = 12GB
work_mem = 64MB
maintenance_work_mem = 1GB
max_worker_processes = 8
max_parallel_workers_per_gather = 4

2. Обмеження CPU для контейнерів:

# docker-compose.yml
services:
  dagi-postgres:
    deploy:
      resources:
        limits:
          cpus: '4.0'
        reservations:
          cpus: '2.0'

3. Використання Ollama з CPU оптимізацією:

# Використання менших моделей для простих задач
# qwen2.5:3b-instruct замість qwen3:8b для деяких агентів

B. Розподіл навантаження

1. Перенести частину навантаження на НОДА2:

  • НОДА2 має Apple M4 Max GPU
  • Можна використовувати для:
    • Vision моделі
    • Image generation
    • Важкі LLM інференси

2. Використання Swapper Service:

  • Динамічне завантаження/вивантаження моделей
  • Оптимізація використання пам'яті
  • Розподіл навантаження між моделями

C. Кешування та оптимізація

1. Redis кешування:

  • Кешування результатів LLM запитів
  • Зменшення повторних обчислень

2. Batch обробка:

  • Групування запитів для ефективнішої обробки
  • Зменшення overhead

🎯 Рекомендації

ТЕРМІНОВІ ДІЇ (GPU доступний!)

  1. Увімкнути GPU для Ollama (НАЙВАЖЛИВІШЕ):

    # На НОДА1
    cd /opt/microdao-daarion
    # Оновити docker-compose.yml для Ollama з GPU
    docker compose stop ollama
    docker compose up -d ollama
    
  2. Перевірити використання GPU:

    nvidia-smi
    docker exec ollama ollama ps
    
  3. Протестувати швидкість:

    time docker exec ollama ollama run qwen3:8b "Привіт, як справи?"
    

Очікуваний результат: CPU навантаження знизиться з 85.3% до 40-50%

Додаткові оптимізації

  1. Оптимізувати PostgreSQL:

    # Налаштувати postgresql.conf
    shared_buffers = 4GB
    effective_cache_size = 12GB
    max_worker_processes = 8
    
  2. Обмежити CPU для контейнерів:

    • PostgreSQL: max 4 cores
    • Ollama: max 2 cores для простих моделей
    • Інші сервіси: за потреби
  3. Використовувати менші моделі:

    • qwen2.5:3b-instruct для простих задач
    • qwen3:8b тільки для складних задач
  4. Перенести на НОДА2:

    • Vision моделі (qwen3-vl:8b)
    • Image generation
    • Важкі LLM інференси

Довгострокові рішення

  1. Оновити до GPU-оптимізованого сервера:

    • Hetzner GPU сервер (NVIDIA GPU)
    • Або використовувати НОДА2 для GPU задач
  2. Налаштувати Ollama з GPU:

    # Якщо GPU доступний
    OLLAMA_NUM_GPU=1
    OLLAMA_GPU_LAYERS=35
    
  3. Використовувати Qdrant з GPU:

    • GPU acceleration для embeddings
    • Швидший векторний пошук

📊 Очікувані результати

З GPU (рекомендовано - GPU доступний!)

  • CPU навантаження: 85.3% → 40-50% (-35-45%)
  • GPU utilization: 0% → 30-50%
  • Швидкість інференсу: +200-300% (з CPU на GPU)
  • Ollama CPU: 1583% → 50-100% (на GPU)
  • Паралельність: +100%

Без GPU (якщо не вдасться увімкнути)

  • CPU навантаження: 85.3% → 60-70%
  • Швидкість інференсу: +20-30% (через оптимізацію)
  • Стабільність: +50%

🔧 План дій

Фаза 1: Увімкнути GPU для Ollama (ТЕРМІНОВО!)

  1. Перевірено: GPU доступний (NVIDIA RTX 4000 SFF Ada)
  2. 🔄 В процесі: Налаштувати Ollama з GPU
  3. 📋 Планується: Перезапустити Ollama з GPU
  4. 📋 Планується: Перевірити використання GPU

Команди:

# На НОДА1
cd /opt/microdao-daarion
# Оновити docker-compose.yml для Ollama
docker compose stop ollama
docker compose up -d ollama
nvidia-smi  # Перевірити використання GPU

Фаза 2: Додаткові оптимізації

  1. Оптимізувати PostgreSQL конфігурацію
  2. Обмежити CPU для інших контейнерів
  3. Налаштувати Qdrant з GPU (якщо підтримує)
  4. Мігрувати vision моделі на GPU

Фаза 3: Моніторинг

  1. Відстежувати CPU навантаження
  2. Відстежувати GPU використання (якщо є)
  3. Оптимізувати на основі метрик

⚠️ Важливо

  1. НОДА1 має GPU: NVIDIA RTX 4000 SFF Ada (20GB VRAM)
  2. Ollama не використовує GPU: працює на CPU (1583% CPU!)
  3. 🔥 Терміново: Увімкнути GPU для Ollama - це знизить CPU навантаження на 35-45%
  4. НОДА2 (MacBook M4 Max) також має GPU і може використовуватися для GPU задач
  5. Оптимізація CPU може дати додаткове покращення після увімкнення GPU

Last Updated: 2025-01-27
Status: 📋 План оптимізації готовий