This commit is contained in:
2026-02-01 23:59:39 +03:00
parent ed5423bb51
commit 82f2c9082f
14 changed files with 92 additions and 36 deletions

View File

@@ -0,0 +1,63 @@
#!/usr/bin/env python3
"""
Проверка деталей модели в Ollama: квантизация, размер, контекст.
Использование:
python docs/check_ollama_model.py
OLLAMA_URL=http://192.168.88.15:11434 python docs/check_ollama_model.py
OLLAMA_URL=... MODEL=qwen3:14b python docs/check_ollama_model.py
"""
import json
import os
import urllib.request
OLLAMA_URL = os.environ.get("OLLAMA_URL", "http://localhost:11434")
MODEL = os.environ.get("MODEL", "qwen3:14b-q8_0")
def main() -> None:
url = f"{OLLAMA_URL.rstrip('/')}/api/show"
body = json.dumps({"model": MODEL}).encode("utf-8")
req = urllib.request.Request(url, data=body, method="POST")
req.add_header("Content-Type", "application/json")
try:
with urllib.request.urlopen(req, timeout=10) as resp:
data = json.load(resp)
except urllib.error.URLError as e:
print(f"Ошибка подключения к {OLLAMA_URL}: {e}")
raise SystemExit(1)
except urllib.error.HTTPError as e:
print(f"HTTP {e.code}: {e.reason}")
if e.fp:
try:
body = e.fp.read().decode("utf-8", errors="replace")
print(body[:500])
except Exception:
pass
raise SystemExit(1)
details = data.get("details") or {}
info = data.get("model_info") or {}
print(f"Модель: {MODEL}")
print(f"Ollama: {OLLAMA_URL}")
print("-" * 40)
print(f"Формат: {details.get('format', '')}")
print(f"Квантизация: {details.get('quantization_level', '')}")
print(f"Размер (params): {details.get('parameter_size', '')}")
print(f"Семейство: {details.get('family', '')}")
# Контекст из model_info (ключ зависит от семейства: qwen3.context_length и т.д.)
for key, val in info.items():
if "context_length" in key:
print(f"Контекст (токенов): {val}")
break
else:
print("Контекст (токенов): —")
if data.get("modified_at"):
print(f"Изменён: {data['modified_at']}")
if __name__ == "__main__":
main()

View File

@@ -1,4 +1,4 @@
# Оценка времени пайплайна на CPU (Ollama, qwen3:14b)
# Оценка времени пайплайна на CPU (Ollama, qwen3:14b-q8_0)
Оценка основана на архитектуре (этапы 14 — вызовы LLM) и замере: **один блок framework на CPU ≈ 15+ минут** (до ответа или до 500).

View File

@@ -4,7 +4,7 @@
| Назначение | Модель в Ollama | Команда pull | Примечание |
|------------|-----------------|--------------|------------|
| LLM: анализ и валидация (шаги 14) | `qwen3:14b` | `ollama pull qwen3:14b` | ~9.3 GB (Q4_K_M). Ближе к 8bit: `qwen3:14b-q8_0` (~16 GB). |
| LLM: анализ и валидация (шаги 14) | `qwen3:14b-q8_0` | `ollama pull qwen3:14b-q8_0` | ~16 GB (Q8). Легче: `qwen3:14b` (~9.3 GB, Q4_K_M). |
| Эмбеддинги (шаг 6) | `bge-m3` | `ollama pull bge-m3` | ~1.2 GB, размерность 1024, контекст 8192. |
## Загрузка моделей при работе через Docker
@@ -19,7 +19,7 @@
```bash
# LLM для анализа глав и валидации
docker exec -it ollama ollama pull qwen3:14b
docker exec -it ollama ollama pull qwen3:14b-q8_0
# Модель эмбеддингов
docker exec -it ollama ollama pull bge-m3
@@ -39,10 +39,10 @@
## Варианты LLM
- **qwen3:14b** — по умолчанию, меньше по размеру (~9.3 GB).
- **qwen3:14b-q8_0** — выше качество, ближе к «8bit» из архитектуры (~16 GB).
- **qwen3:14b-q8_0** — по умолчанию, выше качество, меньше галлюцинаций (~16 GB).
- **qwen3:14b** — легче по размеру (~9.3 GB, Q4_K_M).
В коде пайплайна имя модели задаётся конфигом (например, `OLLAMA_LLM_MODEL=qwen3:14b`).
В коде пайплайна имя модели задаётся конфигом (например, `OLLAMA_LLM_MODEL=qwen3:14b-q8_0`).
## Параметры генерации (options) для LLM
@@ -51,8 +51,7 @@
| Параметр | Значение | Назначение |
|----------------|----------|------------|
| `temperature` | 0.3 | Ниже = детерминированнее ответ, меньше смены языка и «творчества». Для извлечения frame лучше 0.20.5. |
| `num_ctx` | 8192 | Размер контекста (токены). Должен вмещать главу + промпт. |
| `num_predict` | 4096 | Макс. токенов ответа, чтобы полный JSON не обрезался. |
| `num_ctx` | 9000 | Размер контекста (токены). Совпадает с OLLAMA_NUM_CTX в docker-compose. |
| `repeat_penalty` | 1.1 | Снижает повторения в тексте. |
Изменить можно в коде (`OLLAMA_OPTIONS`) или через переменные окружения, если скрипт будет их читать.
@@ -62,7 +61,7 @@
Если Ollama установлен локально:
```bash
ollama pull qwen3:14b
ollama pull qwen3:14b-q8_0
ollama pull bge-m3
ollama list
```