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

306 lines
9.4 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.
# 🚀 Оптимізація 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 контейнера:**
```yaml
# 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:**
```bash
docker stop ollama
docker compose up -d ollama
```
**3. Перевірити використання GPU:**
```bash
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
```yaml
# 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 оптимізація:**
```sql
-- Налаштування для зменшення 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 для контейнерів:**
```yaml
# docker-compose.yml
services:
dagi-postgres:
deploy:
resources:
limits:
cpus: '4.0'
reservations:
cpus: '2.0'
```
**3. Використання Ollama з CPU оптимізацією:**
```bash
# Використання менших моделей для простих задач
# 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 (НАЙВАЖЛИВІШЕ):**
```bash
# На НОДА1
cd /opt/microdao-daarion
# Оновити docker-compose.yml для Ollama з GPU
docker compose stop ollama
docker compose up -d ollama
```
2. **Перевірити використання GPU:**
```bash
nvidia-smi
docker exec ollama ollama ps
```
3. **Протестувати швидкість:**
```bash
time docker exec ollama ollama run qwen3:8b "Привіт, як справи?"
```
**Очікуваний результат:** CPU навантаження знизиться з 85.3% до 40-50%
### Додаткові оптимізації
1. **Оптимізувати PostgreSQL:**
```bash
# Налаштувати 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:**
```bash
# Якщо 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
**Команди:**
```bash
# На НОДА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:** 📋 План оптимізації готовий