# ⚙️ Конфігурація моделі за замовчанням для Swapper Service **Дата:** 2025-11-23 **Статус:** ✅ Реалізовано --- ## 📋 Поточна поведінка ### За замовчуванням (без `default_model`): - ✅ Всі моделі мають статус `UNLOADED` при старті - ✅ Моделі завантажуються тільки за запитом - ✅ Економія ресурсів (VRAM, RAM) - ⚠️ Перший запит може бути повільнішим (час на завантаження) ### З `default_model` в конфігурації: - ✅ Вказана модель автоматично завантажується при старті - ✅ Швидша відповідь на перший запит - ⚠️ Використання VRAM навіть коли модель не використовується --- ## 🔧 Конфігурація ### Файл: `services/swapper-service/config/swapper_config.yaml` ```yaml swapper: mode: single-active max_concurrent_models: 1 model_swap_timeout: 300 gpu_enabled: true metal_acceleration: false # Модель для автоматичного завантаження при старті (опціонально) default_model: qwen3-8b # Модель активується автоматично при старті ``` ### Варіанти налаштування: #### 1. Без моделі за замовчанням (економія ресурсів) ```yaml swapper: # default_model не вказано - моделі завантажуються тільки за запитом mode: single-active ``` #### 2. Основна модель за замовчанням (швидкість) ```yaml swapper: default_model: qwen3-8b # Основна модель (4.87 GB) ``` #### 3. Легка модель за замовчанням (баланс) ```yaml swapper: default_model: qwen2.5-3b-instruct # Легка модель (1.80 GB) ``` --- ## 🎯 Рекомендації ### Для НОДА1 (Production): **Рекомендовано:** `default_model: qwen3-8b` **Причини:** - Основна модель для більшості запитів - Швидша відповідь на перший запит - 4.87 GB VRAM - прийнятно для RTX 4000 SFF Ada (20GB) ### Для НОДА2 (Development): **Рекомендовано:** Без `default_model` або `qwen2.5-3b-instruct` **Причини:** - Економія ресурсів на розробницькій машині - Легка модель для швидкого тестування --- ## 📊 Порівняння | Параметр | Без default_model | З default_model | |----------|-------------------|-----------------| | **VRAM при старті** | 0 GB | 4.87 GB (qwen3-8b) | | **Час першого запиту** | ~10-30 сек (завантаження) | ~1-2 сек (вже завантажена) | | **Економія ресурсів** | ✅ Максимальна | ⚠️ Використання навіть без запитів | | **Швидкість відповіді** | ⚠️ Повільніше на першому запиті | ✅ Швидше | --- ## 🔄 Як працює ### При старті Swapper Service: 1. **Завантаження конфігурації:** ```python config = yaml.safe_load(f) swapper_config = config.get('swapper', {}) default_model = swapper_config.get('default_model') ``` 2. **Якщо `default_model` вказано:** ```python if default_model and default_model in self.models: logger.info(f"🔄 Loading default model: {default_model}") success = await self.load_model(default_model) ``` 3. **Результат:** - Модель завантажується в VRAM - `active_model` = `default_model` - Статус моделі = `LOADED` - Готова до використання --- ## 🛠️ Зміна конфігурації ### Вимкнути модель за замовчанням: ```yaml swapper: mode: single-active # default_model: qwen3-8b # Закоментовано - моделі завантажуються тільки за запитом ``` ### Змінити модель за замовчанням: ```yaml swapper: default_model: qwen2.5-3b-instruct # Легка модель замість основної ``` ### Після зміни конфігурації: ```bash # На сервері ssh root@144.76.224.179 cd /opt/microdao-daarion docker-compose restart swapper-service ``` --- ## 📝 Логи ### При старті з default_model: ``` 🔧 Initializing Swapper Service... ✅ Loaded 5 models into Swapper ✅ Swapper Service initialized with 5 models 🔄 Loading default model: qwen3-8b ✅ Default model loaded: qwen3-8b ``` ### При старті без default_model: ``` 🔧 Initializing Swapper Service... ✅ Loaded 5 models into Swapper ✅ Swapper Service initialized with 5 models # Модель не завантажується автоматично ``` --- ## ✅ Висновок **Поточна реалізація:** - ✅ Моделі завантажуються тільки за запитом (за замовчуванням) - ✅ Можна вказати `default_model` для автоматичного завантаження - ✅ Гнучка конфігурація під різні сценарії **Рекомендація для НОДА1:** - Додати `default_model: qwen3-8b` для швидшої відповіді - Або залишити без `default_model` для економії ресурсів --- **Оновлено:** 2025-11-23 **Статус:** ✅ Готово до використання