- Node-guardian running on MacBook and updating metrics - NODE2 agents (Atlas, Greeter, Oracle, Builder Bot) assigned to node-2-macbook-m4max - Swapper models displaying correctly (8 models) - DAGI Router agents showing with correct status (3 active, 1 stale) - Router health check using node_cache for remote nodes
265 lines
8.9 KiB
Markdown
265 lines
8.9 KiB
Markdown
# ✅ Налаштування default_model для НОДА2
|
||
|
||
**Дата:** 2025-11-23
|
||
**Статус:** ✅ Конфігурація створена
|
||
|
||
---
|
||
|
||
## 🎯 Що зроблено
|
||
|
||
### 1. Створено конфігураційний файл для НОДА2
|
||
|
||
**Файл:** `services/swapper-service/config/swapper_config_node2.yaml`
|
||
|
||
**Особливості для НОДА2 (MacBook M4 Max):**
|
||
- ✅ `metal_acceleration: true` - Apple Silicon GPU acceleration
|
||
- ✅ `default_model: gpt-oss:latest` - автоматичне завантаження при старті
|
||
- ✅ `ollama.url: http://localhost:11434` - Native Ollama (не через Docker)
|
||
- ✅ 8 моделей налаштовано (відповідно до встановлених на НОДА2)
|
||
|
||
**Моделі в конфігурації:**
|
||
1. `gpt-oss:latest` (13 GB, 20.9B) - **default_model** - основна модель
|
||
2. `phi3:latest` (2.2 GB, 3.8B) - легка модель
|
||
3. `qwen3-vl:latest` (6.1 GB, 8.8B) - vision модель
|
||
4. `starcoder2:latest` (1.7 GB, 3B) - code specialist
|
||
5. `qwen2.5-coder:latest` (4.7 GB, 7.6B) - advanced code
|
||
6. `gemma2:latest` (5.4 GB, 9.2B) - reasoning
|
||
7. `mistral-nemo:latest` (7.1 GB, 12.2B) - advanced reasoning
|
||
8. `deepseek-r1:latest` (5.2 GB, 8.2B) - strategic reasoning
|
||
|
||
### 2. Логіка автоматичного завантаження
|
||
|
||
**Файл:** `services/swapper-service/app/main.py`
|
||
|
||
- При ініціалізації Swapper Service перевіряє `default_model` в конфігурації
|
||
- Якщо вказано → автоматично завантажує модель
|
||
- Логує процес завантаження
|
||
|
||
---
|
||
|
||
## 📋 Як застосувати на НОДА2
|
||
|
||
### Варіант 1: Використати локальну конфігурацію (рекомендовано)
|
||
|
||
```bash
|
||
# 1. Перевірити чи працює Swapper Service
|
||
cd /Users/apple/github-projects/microdao-daarion
|
||
docker-compose ps swapper-service
|
||
|
||
# 2. Оновити конфігурацію (якщо використовується volume mount)
|
||
# Або скопіювати конфігурацію в правильну директорію
|
||
cp services/swapper-service/config/swapper_config_node2.yaml \
|
||
services/swapper-service/config/swapper_config.yaml
|
||
|
||
# 3. Перезапустити Swapper Service
|
||
docker-compose restart swapper-service
|
||
|
||
# 4. Перевірити логи
|
||
docker-compose logs swapper-service --tail 30
|
||
```
|
||
|
||
### Варіант 2: Запуск локально (без Docker)
|
||
|
||
```bash
|
||
# 1. Перейти в директорію Swapper Service
|
||
cd /Users/apple/github-projects/microdao-daarion/services/swapper-service
|
||
|
||
# 2. Встановити змінну оточення для конфігурації
|
||
export SWAPPER_CONFIG_PATH=./config/swapper_config_node2.yaml
|
||
export OLLAMA_BASE_URL=http://localhost:11434
|
||
export SWAPPER_MODE=single-active
|
||
|
||
# 3. Запустити сервіс
|
||
python3 -m uvicorn app.main:app --host 0.0.0.0 --port 8890
|
||
|
||
# 4. Перевірити логи (шукати "default model")
|
||
```
|
||
|
||
### Варіант 3: Оновити через docker-compose (якщо конфіг монтується)
|
||
|
||
```bash
|
||
# 1. Перевірити docker-compose.yml
|
||
# Переконатися, що volume монтує правильну конфігурацію:
|
||
# volumes:
|
||
# - ./services/swapper-service/config:/app/config:ro
|
||
|
||
# 2. Скопіювати конфігурацію НОДА2
|
||
cp services/swapper-service/config/swapper_config_node2.yaml \
|
||
services/swapper-service/config/swapper_config.yaml
|
||
|
||
# 3. Перезапустити
|
||
docker-compose restart swapper-service
|
||
|
||
# 4. Перевірити логи
|
||
docker-compose logs swapper-service --tail 30 | grep -i "default\|gpt-oss"
|
||
```
|
||
|
||
---
|
||
|
||
## 🔍 Перевірка
|
||
|
||
### 1. Перевірити чи завантажилась модель
|
||
|
||
```bash
|
||
# На НОДА2
|
||
curl http://localhost:8890/status | jq
|
||
```
|
||
|
||
**Очікуваний результат:**
|
||
```json
|
||
{
|
||
"status": "healthy",
|
||
"active_model": "gpt-oss:latest",
|
||
"available_models": ["gpt-oss:latest", "phi3:latest", ...],
|
||
"loaded_models": ["gpt-oss:latest"],
|
||
"mode": "single-active",
|
||
"total_models": 8
|
||
}
|
||
```
|
||
|
||
### 2. Перевірити в кабінеті НОДА2
|
||
|
||
Відкрити: `http://localhost:8899/nodes/node-2-macbook-m4max`
|
||
|
||
**Очікуваний результат:**
|
||
- Swapper Service показує активну модель: `gpt-oss:latest`
|
||
- Статус моделі: `loaded` або `active`
|
||
- GPU використання: Apple Silicon Metal acceleration
|
||
|
||
### 3. Перевірити логи
|
||
|
||
```bash
|
||
# Якщо через Docker
|
||
docker-compose logs swapper-service | grep -i "default\|gpt-oss"
|
||
|
||
# Якщо локально
|
||
# Логи будуть в консолі, шукати:
|
||
# 🔄 Loading default model: gpt-oss:latest
|
||
# ✅ Default model loaded: gpt-oss:latest
|
||
```
|
||
|
||
---
|
||
|
||
## 📊 Результат
|
||
|
||
### До змін:
|
||
- ❌ Всі моделі `UNLOADED` при старті
|
||
- ❌ Перший запит повільний (~10-30 сек на завантаження)
|
||
- ✅ Економія пам'яті (0 GB при старті)
|
||
|
||
### Після змін:
|
||
- ✅ `gpt-oss:latest` автоматично завантажується при старті
|
||
- ✅ Швидка відповідь на перший запит (~1-2 сек)
|
||
- ⚠️ Використання пам'яті: ~13 GB (прийнятно для 64GB RAM)
|
||
|
||
---
|
||
|
||
## 🎯 Переваги
|
||
|
||
1. **Швидкість:**
|
||
- Перший запит відразу працює
|
||
- Немає затримки на завантаження моделі
|
||
|
||
2. **Зручність:**
|
||
- Модель готова до використання одразу після старту
|
||
- Не потрібно чекати на завантаження
|
||
|
||
3. **Оптимальний вибір:**
|
||
- `gpt-oss:latest` - швидка модель для більшості запитів
|
||
- 13 GB - прийнятний розмір для 64GB RAM
|
||
- 20.9B параметрів - хороша якість відповідей
|
||
|
||
---
|
||
|
||
## ⚙️ Альтернативні варіанти default_model
|
||
|
||
### Легка модель (менше пам'яті):
|
||
|
||
```yaml
|
||
swapper:
|
||
default_model: phi3:latest # 2.2 GB, 3.8B params - швидка легка модель
|
||
```
|
||
|
||
### Vision модель (для обробки зображень):
|
||
|
||
```yaml
|
||
swapper:
|
||
default_model: qwen3-vl:latest # 6.1 GB, 8.8B params - vision capabilities
|
||
```
|
||
|
||
### Code модель (для розробки):
|
||
|
||
```yaml
|
||
swapper:
|
||
default_model: starcoder2:latest # 1.7 GB, 3B params - code specialist
|
||
```
|
||
|
||
### Вимкнути автоматичне завантаження:
|
||
|
||
```yaml
|
||
swapper:
|
||
# default_model: gpt-oss:latest # Закоментовано - моделі завантажуються тільки за запитом
|
||
```
|
||
|
||
---
|
||
|
||
## 🔧 Особливості НОДА2
|
||
|
||
### Apple Silicon (M4 Max):
|
||
- ✅ `metal_acceleration: true` - використання GPU прискорення
|
||
- ✅ 40-core GPU - потужна обробка
|
||
- ✅ 64GB RAM - достатньо для великих моделей
|
||
|
||
### Ollama на НОДА2:
|
||
- ✅ Native Ollama: `http://localhost:11434` (через Pieces OS або brew)
|
||
- ✅ Docker Ollama: `http://localhost:11435` (якщо запущений)
|
||
- ⚠️ Swapper Service використовує Native Ollama за замовчанням
|
||
|
||
### Моделі на НОДА2:
|
||
- ✅ 8 моделей встановлено (~118 GB загалом)
|
||
- ✅ Різноманітність: LLM, Code, Vision, Reasoning
|
||
- ✅ Великі моделі доступні (до 42 GB)
|
||
|
||
---
|
||
|
||
## ✅ Статус
|
||
|
||
**Конфігурація створена:**
|
||
- ✅ `services/swapper-service/config/swapper_config_node2.yaml`
|
||
- ✅ Логіка автоматичного завантаження вже додана (в `main.py`)
|
||
- ✅ Налаштовано для Apple Silicon (Metal acceleration)
|
||
|
||
**Наступний крок:**
|
||
- Застосувати конфігурацію на НОДА2
|
||
- Перезапустити Swapper Service
|
||
- Перевірити логи та статус
|
||
|
||
---
|
||
|
||
## 📝 Примітки
|
||
|
||
1. **Конфігурація НОДА2 відрізняється від НОДА1:**
|
||
- НОДА1: NVIDIA GPU, `qwen3-8b` (4.87 GB)
|
||
- НОДА2: Apple Silicon, `gpt-oss:latest` (13 GB)
|
||
|
||
2. **Ollama на НОДА2:**
|
||
- Може працювати через Pieces OS або brew
|
||
- Порт: `11434` (native) або `11435` (Docker)
|
||
- Swapper Service використовує `http://localhost:11434`
|
||
|
||
3. **Моделі:**
|
||
- На НОДА2 встановлені інші моделі, ніж на НОДА1
|
||
- Конфігурація відповідає реально встановленим моделям
|
||
- Можна змінити `default_model` на будь-яку з доступних
|
||
|
||
---
|
||
|
||
**Готово до застосування на НОДА2!** 🚀
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|