# 🚀 Оптимізація 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:** 📋 План оптимізації готовий