mirror of
https://gitverse.ru/kpa39l/hermes-auxiliary-local-models.git
synced 2026-09-29 10:05:02 +00:00
79 lines
4.7 KiB
Markdown
79 lines
4.7 KiB
Markdown
# Qwen3-VL 8B + Ollama: разбор сессии настройки auxiliary.vision
|
||
|
||
Дата: 2026-08-30. Хост: RTX 5060 Ti 16 GB VRAM, Ollama в Docker (контейнер `ollama`),
|
||
main-модель Hermes — облачная polza.ai (deepseek/deepseek-v4-flash-0731).
|
||
|
||
## Итог
|
||
|
||
`auxiliary.vision` переведён на локальную `qwen3-vl:8b`:
|
||
- model: qwen3-vl:8b (~6.14 GB на диске, ~7.2 GB VRAM при ctx 4096/8192)
|
||
- provider: custom, base_url: http://localhost:11434/v1, api_key: ollama
|
||
- остальные auxiliary остались на `auto` → облачный main-провайдер
|
||
|
||
Проверено E2E: vision-запрос через Hermes-клиент (`resolve_provider_client`) отвечает
|
||
"red"/"blue" на тестовых PNG.
|
||
|
||
## Ключевые факты о Hermes auxiliary (agent/auxiliary_client.py)
|
||
|
||
- Раздел конфига: `auxiliary.<task>.provider/model/base_url/api_key` в config.yaml.
|
||
- `provider: auto` цепочка (текст): main-провайдер → OpenRouter → Nous Portal →
|
||
custom endpoint → Anthropic → прямые провайдеры. Для vision своя цепочка:
|
||
main-провайдер (если поддерживает vision) → OpenRouter → Nous → Anthropic →
|
||
custom endpoint (локальные Qwen-VL/LLaVA/Pixtral).
|
||
- `MINIMUM_CONTEXT_LENGTH = 64_000` (agent/model_metadata.py:405) — флор только для
|
||
`compression`. Остальные задачи без флора.
|
||
- `resolve_provider_client()` сигнатура: `explicit_base_url` / `explicit_api_key`
|
||
(не `base_url`/`api_key` — TypeError).
|
||
- Vision-capable локальных моделей определяется через `query_ollama_supports_vision`
|
||
(capabilities в `/api/show`, или model_info.*.vision.block_count на старых серверах).
|
||
|
||
## Ошибки в процессе (транскрипт)
|
||
|
||
1. `HTTP 500` на `/api/chat` с картинкой 1×1 px:
|
||
```
|
||
panic: height:1 or width:1 must be larger than factor:32
|
||
github.com/ollama/ollama/model/models/qwen3vl.(*ImageProcessor).SmartResize
|
||
```
|
||
→ Ошибка картинки, не конфигурации. Входной образ должен быть ≥ 32 px.
|
||
2. Пустой `content` при `finish_reason: stop` на картинке 64×64 — reasoning ушёл в
|
||
`reasoning` поле. На 256×256 ответ нормальный ("red").
|
||
3. `hermes chat -m ... --provider custom` в CLI: "No API key found for provider 'custom'"
|
||
— CLI-запуск не отражает auxiliary-резолв; auxiliary берётся из config.yaml напрямую.
|
||
4. `curl ... | python3` в terminal — блокируется security scan (pipe to interpreter);
|
||
использовать execute_code с urllib вместо пайпов.
|
||
|
||
## VRAM-планирование (qwen3-vl:8b, GGUF)
|
||
|
||
- GGUF-контекст: `qwen3vl.context_length = 262144`, layers=36, embedding=4096.
|
||
- KV cache (f16) ≈ 2 · layers · dim · 2 · ctx · 2 bytes:
|
||
- 32K → ~38.7 GB, 64K → ~77 GB, 128K → ~155 GB, 262K → ~309 GB.
|
||
→ Физически полный контекст не влезает в 16 GB. Ollama грузит с num_ctx 4096 по умолчанию,
|
||
для запросов задавать `options: {num_ctx: 8192}`.
|
||
- Итоговое распределение: qwen3-vl 7.19 GB + bge-m3 1.21 GB = 8.4 GB занято, ~7.3 GB свободно.
|
||
- qwen3:8b и qwen2.5-coder:14b имеют GGUF-контекст 40960/32768 (имена "-64k"/"-65k" лгут) —
|
||
ниже 64K флора compression, поэтому compression оставлен на облаке.
|
||
|
||
## Полезные команды
|
||
|
||
```bash
|
||
# Pull в Docker
|
||
docker exec ollama ollama pull qwen3-vl:8b
|
||
|
||
# Проверка caps/контекста
|
||
curl -s http://localhost:11434/api/show -d '{"model":"qwen3-vl:8b"}' | jq '.capabilities, .model_info["qwen3vl.context_length"]'
|
||
|
||
# Тест vision напрямую
|
||
curl -s http://localhost:11434/api/chat -d '{"model":"qwen3-vl:8b","messages":[{"role":"user","content":"What color?","images":["<b64>"]}],"options":{"num_ctx":8192},"stream":false}'
|
||
|
||
# OpenAI-совместимый путь (что использует Hermes)
|
||
curl -s http://localhost:11434/v1/chat/completions -d '{"model":"qwen3-vl:8b","messages":[{"role":"user","content":[{"type":"text","text":"What color?"},{"type":"image_url","image_url":{"url":"data:image/png;base64,<b64>"}}]}],"max_tokens":50}'
|
||
|
||
# Выгрузка из VRAM
|
||
docker exec ollama ollama stop qwen3-vl:8b
|
||
```
|
||
|
||
## Откат конфигурации
|
||
|
||
```bash
|
||
hermes config set auxiliary.vision.provider auto
|
||
hermes config set auxiliary.vision.model "" |