fix
This commit is contained in:
63
docs/check_ollama_model.py
Normal file
63
docs/check_ollama_model.py
Normal 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()
|
||||
@@ -1,4 +1,4 @@
|
||||
# Оценка времени пайплайна на CPU (Ollama, qwen3:14b)
|
||||
# Оценка времени пайплайна на CPU (Ollama, qwen3:14b-q8_0)
|
||||
|
||||
Оценка основана на архитектуре (этапы 1–4 — вызовы LLM) и замере: **один блок framework на CPU ≈ 15+ минут** (до ответа или до 500).
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
| Назначение | Модель в Ollama | Команда pull | Примечание |
|
||||
|------------|-----------------|--------------|------------|
|
||||
| LLM: анализ и валидация (шаги 1–4) | `qwen3:14b` | `ollama pull qwen3:14b` | ~9.3 GB (Q4_K_M). Ближе к 8bit: `qwen3:14b-q8_0` (~16 GB). |
|
||||
| LLM: анализ и валидация (шаги 1–4) | `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.2–0.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
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user