fix: increase LLM timeout 30s→60s, fix Gateway request format, add Ollama optimization guide
- Fixed Gateway: 'prompt' → 'message' field name - Increased LLM provider timeout from 30s to 60s - Added OLLAMA-OPTIMIZATION.md with performance tips - DAARWIZZ now responds (slowly but works)
This commit is contained in:
91
OLLAMA-OPTIMIZATION.md
Normal file
91
OLLAMA-OPTIMIZATION.md
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
# Ollama Performance Optimization
|
||||||
|
|
||||||
|
## Проблема
|
||||||
|
Qwen3:8b генерує відповідь 25-30 секунд, що занадто повільно для чат-бота.
|
||||||
|
|
||||||
|
## Швидкі рішення
|
||||||
|
|
||||||
|
### 1. Збільшити timeout (✅ зроблено)
|
||||||
|
```python
|
||||||
|
# providers/llm_provider.py
|
||||||
|
timeout_s: int = 60 # було 30
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Keep model loaded (рекомендовано)
|
||||||
|
```bash
|
||||||
|
# Встановити keep_alive щоб модель не вивантажувалась
|
||||||
|
curl http://localhost:11434/api/generate -d '{
|
||||||
|
"model": "qwen3:8b",
|
||||||
|
"prompt": "warmup",
|
||||||
|
"keep_alive": "24h"
|
||||||
|
}'
|
||||||
|
```
|
||||||
|
|
||||||
|
Або в systemd override:
|
||||||
|
```ini
|
||||||
|
[Service]
|
||||||
|
Environment="OLLAMA_KEEP_ALIVE=24h"
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Використати легшу модель
|
||||||
|
```bash
|
||||||
|
# Завантажити qwen2.5:3b (швидша, але менш "розумна")
|
||||||
|
ollama pull qwen2.5:3b
|
||||||
|
```
|
||||||
|
|
||||||
|
Оновити `router-config.yml`:
|
||||||
|
```yaml
|
||||||
|
llm_profiles:
|
||||||
|
- profile_id: "local_qwen_fast"
|
||||||
|
provider_id: "llm_local_qwen"
|
||||||
|
model: "qwen2.5:3b" # замість qwen3:8b
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. GPU acceleration (якщо є GPU)
|
||||||
|
Ollama автоматично використовує GPU якщо є CUDA/ROCm.
|
||||||
|
|
||||||
|
Перевірка:
|
||||||
|
```bash
|
||||||
|
ollama ps # покаже чи використовує GPU
|
||||||
|
nvidia-smi # для NVIDIA GPU
|
||||||
|
```
|
||||||
|
|
||||||
|
## Довгострокові рішення
|
||||||
|
|
||||||
|
### Option A: Віддалений LLM (швидко, але платно)
|
||||||
|
```yaml
|
||||||
|
llm_profiles:
|
||||||
|
- profile_id: "production_fast"
|
||||||
|
provider_id: "openai_remote"
|
||||||
|
model: "gpt-4o-mini"
|
||||||
|
base_url: "https://api.openai.com/v1"
|
||||||
|
api_key_env: "OPENAI_API_KEY"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Option B: Більш потужний сервер
|
||||||
|
- CPU: 8+ cores
|
||||||
|
- RAM: 32GB+ (для 8B моделі)
|
||||||
|
- GPU: RTX 3060+ (12GB VRAM)
|
||||||
|
|
||||||
|
## Моніторинг
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Час генерації
|
||||||
|
docker compose logs router | grep "Request timeout"
|
||||||
|
|
||||||
|
# Завантаженість Ollama
|
||||||
|
curl http://localhost:11434/api/ps
|
||||||
|
|
||||||
|
# Системні ресурси
|
||||||
|
htop
|
||||||
|
```
|
||||||
|
|
||||||
|
## Рекомендації для DAARWIZZ
|
||||||
|
|
||||||
|
1. ✅ **Зараз**: timeout 60s, працює але повільно
|
||||||
|
2. 🔄 **Наступний крок**: `OLLAMA_KEEP_ALIVE=24h` щоб модель не вивантажувалась
|
||||||
|
3. 🚀 **Production**: віддалений LLM (OpenAI/Anthropic) або потужніший сервер з GPU
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Статус**: DAARWIZZ працює, але відповідає за ~30-40 секунд. Для комфорту потрібно <5 секунд.
|
||||||
@@ -124,7 +124,7 @@ async def telegram_webhook(update: TelegramUpdate):
|
|||||||
|
|
||||||
# Build request to Router with DAARWIZZ context
|
# Build request to Router with DAARWIZZ context
|
||||||
router_request = {
|
router_request = {
|
||||||
"prompt": text,
|
"message": text,
|
||||||
"mode": "chat",
|
"mode": "chat",
|
||||||
"agent": "daarwizz", # DAARWIZZ agent identifier
|
"agent": "daarwizz", # DAARWIZZ agent identifier
|
||||||
"metadata": {
|
"metadata": {
|
||||||
@@ -197,7 +197,7 @@ async def discord_webhook(message: DiscordMessage):
|
|||||||
|
|
||||||
# Build request to Router with DAARWIZZ context
|
# Build request to Router with DAARWIZZ context
|
||||||
router_request = {
|
router_request = {
|
||||||
"prompt": text,
|
"message": text,
|
||||||
"mode": "chat",
|
"mode": "chat",
|
||||||
"agent": "daarwizz",
|
"agent": "daarwizz",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ class LLMProvider(Provider):
|
|||||||
base_url: str,
|
base_url: str,
|
||||||
model: str,
|
model: str,
|
||||||
api_key: Optional[str] = None,
|
api_key: Optional[str] = None,
|
||||||
timeout_s: int = 30,
|
timeout_s: int = 60,
|
||||||
max_tokens: int = 1024,
|
max_tokens: int = 1024,
|
||||||
temperature: float = 0.2,
|
temperature: float = 0.2,
|
||||||
provider_type: str = "openai", # "openai" or "ollama"
|
provider_type: str = "openai", # "openai" or "ollama"
|
||||||
|
|||||||
Reference in New Issue
Block a user