LLM-Landschaft: Vision raus aus dem Warm-Set (on-demand, ttl 900) + Template=Live-Abgleich
User-Entscheid 07.07.: 'Gehirn + Embedding reichen komplett aus' — die Augen (VL-30B, ~19 GB) werden nur gebraucht, wenn Lucy auf dem Desktop an ist oder die IDE-Lane sie ruft. Warm-Set = nur noch Qwen3.6 + embed; damit passt der 60-GB-Chef-Gutachter (gpt-oss) wieder neben das Hirn. - llama-swap.config.yaml: VL-30B aus brains raus, ttl 0 -> 900 (15 min Nachlauf); Kommentare entstaubt. AUSSERDEM Template<->Live-Drift beendet: Template hatte coder-lite wiederbelebt (live seit 05.07. entfernt) und KV q4_k (lief NIE live) — beides auf Live-Wahrheit (q8_0, kein coder-lite) zurueckgesetzt; Qualitaet vor ein paar GB, RAM-Engpass ist mit der Diaet weg. - warmup.sh: Default 'fast vision' -> 'fast' (Root-Kopie unter /usr/local/bin braucht spaeter einmal sudo cp — bis dahin waermt ein llama-swap-Restart vision einmalig, ttl 900 raeumt es wieder ab) - warmer.py: Docstring auf neues Warm-Set angepasst - Lucy-Seite (eigenes Repo): App waermt die Augen beim Start + alle 10 min, solange sie laeuft — Augen-Lebenszyklus == Lucy-Lebenszyklus Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,20 +1,21 @@
|
|||||||
"""
|
"""
|
||||||
Hält das ganze WARM-SET (Hirn + Augen/vision + Gedächtnis/embed) dauerhaft warm.
|
Hält das ganze WARM-SET (Hirn + Gedächtnis/embed) dauerhaft warm. Die Augen (vision/VL-30B)
|
||||||
|
sind seit 07.07. ON-DEMAND (ttl 900, User-Entscheid) und gehören NICHT mehr zum Warm-Set.
|
||||||
|
|
||||||
Hintergrund: llama-swap ist EIN-Gruppen-resident — lädt ein on-demand-Modell außerhalb
|
Hintergrund: llama-swap ist EIN-Gruppen-resident — lädt ein on-demand-Modell außerhalb
|
||||||
der `brains`-Gruppe, wird die ganze Gruppe verdrängt. `persist: true` verhindert nur
|
der `brains`-Gruppe, wird die ganze Gruppe verdrängt. `persist: true` verhindert nur
|
||||||
Idle-Unload, NICHT die Gruppen-Verdrängung; auch ein `-watch-config`-Reload (jede Config-
|
Idle-Unload, NICHT die Gruppen-Verdrängung; auch ein `-watch-config`-Reload (jede Config-
|
||||||
Änderung/Deploy) verwirft das Set, ohne llama-swaps ExecStartPost-Warmup neu auszulösen.
|
Änderung/Deploy) verwirft das Set, ohne llama-swaps ExecStartPost-Warmup neu auszulösen.
|
||||||
Dieser Wächter schließt die Lücke: ist die Box idle (nichts geladen), lädt er das ganze
|
Dieser Wächter schließt die Lücke: ist die Box idle (nichts geladen), lädt er das ganze
|
||||||
Set über deploy/warmup.sh nach — NICHT nur das Hirn (sonst blieben Augen+embed kalt, live
|
Set über deploy/warmup.sh nach — Hirn UND embed (sonst bliebe embed kalt, live vom
|
||||||
vom Review-Wächter beobachtet). Während aktiver Last (irgendetwas geladen) hält er sich
|
Review-Wächter beobachtet). Während aktiver Last (irgendetwas geladen) hält er sich
|
||||||
raus, verdrängt also nie ein gerade genutztes Modell.
|
raus, verdrängt also nie ein gerade genutztes Modell.
|
||||||
|
|
||||||
warmup.sh deckt korrekt ab: fast+vision über /v1/chat/completions, embed über /v1/embeddings
|
warmup.sh deckt korrekt ab: fast über /v1/chat/completions, embed über /v1/embeddings
|
||||||
(anderer Endpunkt!) und das Vorkauen des ~70-KB-Agent-Prompts. Es ist selbst-detachend.
|
(anderer Endpunkt!) und das Vorkauen des ~70-KB-Agent-Prompts. Es ist selbst-detachend.
|
||||||
|
|
||||||
Abschaltbar/justierbar via Env: MC_REWARM_ENABLED=0, MC_REWARM_INTERVAL. Welche Modelle
|
Abschaltbar/justierbar via Env: MC_REWARM_ENABLED=0, MC_REWARM_INTERVAL. Welche Modelle
|
||||||
warmup.sh lädt: MC_WARMUP_MODELS (Default 'fast vision') + MC_WARMUP_EMBED (Default 'embed').
|
warmup.sh lädt: MC_WARMUP_MODELS (Default 'fast') + MC_WARMUP_EMBED (Default 'embed').
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import asyncio
|
import asyncio
|
||||||
|
|||||||
@@ -1,96 +1,89 @@
|
|||||||
# Auto-generiert von provision.sh - per Mission Control erweiterbar
|
# Auto-generiert von provision.sh - per Mission Control erweiterbar
|
||||||
healthCheckTimeout: 300
|
healthCheckTimeout: 300
|
||||||
globalTTL: 0
|
globalTTL: 0
|
||||||
|
|
||||||
models:
|
models:
|
||||||
Qwen3.6-35B-A3B:
|
Qwen3.6-35B-A3B:
|
||||||
# parallel 2 + c 131072: 2 Slots à 65k (Slot 2 = Mem0-Lern-Extraktion, blockiert Voice-Turns
|
# parallel 2 + c 131072: 2 Slots à 65k (Slot 2 = Mem0-Lern-Extraktion, blockiert Voice-Turns
|
||||||
# nicht mehr); KV Q8_0 macht das speicherneutral zu vorher (65k f16). Bench 2026-07-02:
|
# nicht mehr); KV Q8_0 macht das speicherneutral zu vorher (65k f16). Bench 2026-07-02:
|
||||||
# Q8_0 kostet 0 t/s, MTP n-max 3 = +26% vs. ohne Spec.
|
# Q8_0 kostet 0 t/s, MTP n-max 3 = +26% vs. ohne Spec. (Q4_K-KV stand mal im Template,
|
||||||
cmd: |
|
# lief aber NIE live — bewusst bei Q8_0 geblieben: Qualität vor ein paar GB, seit der
|
||||||
llama-server -m /srv/models/Qwen3.6-35B-A3B-MTP-GGUF/Qwen3.6-35B-A3B-UD-Q4_K_M.gguf --host 127.0.0.1 --port ${PORT} -c 131072 -ngl 999 -fa on --no-mmap --jinja --parallel 2 -cram 16384 -ctk q4_k -ctv q4_k --spec-type draft-mtp --spec-draft-n-max 3
|
# Warm-Set-Diät 07.07. ist RAM nicht mehr der Engpass.)
|
||||||
ttl: 0
|
cmd: |
|
||||||
aliases:
|
llama-server -m /srv/models/Qwen3.6-35B-A3B-MTP-GGUF/Qwen3.6-35B-A3B-UD-Q4_K_M.gguf --host 127.0.0.1 --port ${PORT} -c 131072 -ngl 999 -fa on --no-mmap --jinja --parallel 2 -cram 16384 -ctk q8_0 -ctv q8_0 --spec-type draft-mtp --spec-draft-n-max 3
|
||||||
- hermes
|
ttl: 0
|
||||||
- fast
|
aliases:
|
||||||
# context = nutzbarer Kontext PRO REQUEST (c geteilt durch parallel-Slots).
|
- hermes
|
||||||
capabilities:
|
- fast
|
||||||
in: [text]
|
# context = nutzbarer Kontext PRO REQUEST (c geteilt durch parallel-Slots).
|
||||||
out: [text]
|
capabilities:
|
||||||
tools: true
|
in: [text]
|
||||||
context: 65536
|
out: [text]
|
||||||
Qwen3-Coder-Next:
|
tools: true
|
||||||
cmd: |
|
context: 65536
|
||||||
llama-server -m /srv/models/Qwen3-Coder-Next-GGUF/Qwen3-Coder-Next-Q4_K_M.gguf --host 127.0.0.1 --port ${PORT} -c 131072 -ngl 999 -fa on --no-mmap --jinja --cache-reuse 256 -cram 16384
|
Qwen3-Coder-Next:
|
||||||
ttl: 600
|
cmd: |
|
||||||
aliases:
|
llama-server -m /srv/models/Qwen3-Coder-Next-GGUF/Qwen3-Coder-Next-Q4_K_M.gguf --host 127.0.0.1 --port ${PORT} -c 131072 -ngl 999 -fa on --no-mmap --jinja --cache-reuse 256 -cram 16384
|
||||||
- coder
|
ttl: 600
|
||||||
capabilities:
|
aliases:
|
||||||
in: [text]
|
- coder
|
||||||
out: [text]
|
capabilities:
|
||||||
tools: true
|
in: [text]
|
||||||
context: 131072
|
out: [text]
|
||||||
Qwen3-Embedding-0.6B:
|
tools: true
|
||||||
cmd: |
|
context: 131072
|
||||||
llama-server -m /srv/models/Qwen3-Embedding-0.6B-GGUF/Qwen3-Embedding-0.6B-Q8_0.gguf --host 127.0.0.1 --port ${PORT} --embedding --pooling last -ngl 999 -fa on --no-mmap -c 8192
|
Qwen3-Embedding-0.6B:
|
||||||
ttl: 0
|
cmd: |
|
||||||
aliases:
|
llama-server -m /srv/models/Qwen3-Embedding-0.6B-GGUF/Qwen3-Embedding-0.6B-Q8_0.gguf --host 127.0.0.1 --port ${PORT} --embedding --pooling last -ngl 999 -fa on --no-mmap -c 8192
|
||||||
- embed
|
ttl: 0
|
||||||
Qwen3-Coder-30B-A3B-Instruct:
|
aliases:
|
||||||
cmd: |
|
- embed
|
||||||
llama-server -m /srv/models/Qwen3-Coder-30B-A3B-Instruct-GGUF/Qwen3-Coder-30B-A3B-Instruct-Q4_K_M.gguf --host 127.0.0.1 --port ${PORT} -c 131072 -ngl 999 -fa on --no-mmap --jinja --cache-reuse 256 -cram 16384
|
gpt-oss-120b:
|
||||||
ttl: 300
|
# heavy (B5-Entscheid 03.07.) + nächtlicher CHEF-GUTACHTER (04:30-Cron). 60 GB —
|
||||||
aliases:
|
# passt seit der Warm-Set-Diät (07.07., vision on-demand) wieder NEBEN Hirn+embed.
|
||||||
- coder-lite
|
cmd: |
|
||||||
capabilities:
|
llama-server -m /srv/models/gpt-oss-120b-GGUF/gpt-oss-120b-mxfp4-00001-of-00003.gguf --host 127.0.0.1 --port ${PORT} -c 32768 -ngl 999 -fa on --no-mmap --jinja --cache-reuse 256 -cram 16384
|
||||||
in: [text]
|
ttl: 600
|
||||||
out: [text]
|
aliases:
|
||||||
tools: true
|
- heavy
|
||||||
context: 131072
|
capabilities:
|
||||||
gpt-oss-120b:
|
in: [text]
|
||||||
# Wurde am 07.07. offiziell zum heavy Modell befördert.
|
out: [text]
|
||||||
cmd: |
|
tools: true
|
||||||
llama-server -m /srv/models/gpt-oss-120b-GGUF/gpt-oss-120b-mxfp4-00001-of-00003.gguf --host 127.0.0.1 --port ${PORT} -c 32768 -ngl 999 -fa on --no-mmap --jinja --cache-reuse 256 -cram 16384
|
context: 32768
|
||||||
ttl: 600
|
Qwen3-VL-30B-A3B-Instruct:
|
||||||
aliases:
|
# Lucys AUGEN — seit 07.07. ON-DEMAND (User-Entscheid: „Gehirn + Embedding reichen
|
||||||
- heavy
|
# komplett; Vision nur wenn Lucy auf dem Desktop an ist oder die IDE-Lane sie braucht").
|
||||||
capabilities:
|
# NICHT mehr in brains; ttl 900 = 15 Min Nachlauf nach dem letzten Blick. Die Lucy-App
|
||||||
in: [text]
|
# wärmt die Augen beim Start selbst an (useVoiceAgent-Warm-Gate). Vorher: warm, ttl 0 —
|
||||||
out: [text]
|
# das kostete ~19 GB Dauerbelegung und verdrängte den 60-GB-Chef-Gutachter.
|
||||||
tools: true
|
cmd: |
|
||||||
context: 32768
|
llama-server -m /srv/models/Qwen3-VL-30B-A3B-Instruct-GGUF/Qwen3-VL-30B-A3B-Instruct-Q4_K_M.gguf --host 127.0.0.1 --port ${PORT} -c 32768 -ngl 999 -fa on --no-mmap --mmproj /srv/models/Qwen3-VL-30B-A3B-Instruct-GGUF/mmproj-F16.gguf --jinja
|
||||||
Qwen3-VL-30B-A3B-Instruct:
|
ttl: 900
|
||||||
# Lucys AUGEN (vision, seit 03.07. live via set_role/set_group): MoE 3B aktiv, versteht die
|
aliases:
|
||||||
# Bildschirm-SZENE statt nur OCR. Als brains-Mitglied MUSS ttl:0 sein — persistent schuetzt nur
|
- vision
|
||||||
# gegen Verdraengung, NICHT gegen ttl-Selbstentladen (sonst faellt es alle 5 Min raus).
|
capabilities:
|
||||||
cmd: |
|
in: [text, image]
|
||||||
llama-server -m /srv/models/Qwen3-VL-30B-A3B-Instruct-GGUF/Qwen3-VL-30B-A3B-Instruct-Q4_K_M.gguf --host 127.0.0.1 --port ${PORT} -c 32768 -ngl 999 -fa on --no-mmap --mmproj /srv/models/Qwen3-VL-30B-A3B-Instruct-GGUF/mmproj-F16.gguf --jinja
|
out: [text]
|
||||||
ttl: 0
|
context: 32768
|
||||||
aliases:
|
GLM-4.6V-Flash:
|
||||||
- vision
|
cmd: |
|
||||||
capabilities:
|
llama-server -m /srv/models/GLM-4.6V-Flash-GGUF/GLM-4.6V-Flash-Q4_K_M.gguf --host 127.0.0.1 --port ${PORT} -c 131072 -ngl 999 -fa on --no-mmap --mmproj /srv/models/GLM-4.6V-Flash-GGUF/mmproj-BF16.gguf --jinja
|
||||||
in: [text, image]
|
ttl: 300
|
||||||
out: [text]
|
aliases:
|
||||||
context: 32768
|
- scout
|
||||||
GLM-4.6V-Flash:
|
capabilities:
|
||||||
cmd: |
|
in: [text, image]
|
||||||
llama-server -m /srv/models/GLM-4.6V-Flash-GGUF/GLM-4.6V-Flash-Q4_K_M.gguf --host 127.0.0.1 --port ${PORT} -c 131072 -ngl 999 -fa on --no-mmap --mmproj /srv/models/GLM-4.6V-Flash-GGUF/mmproj-BF16.gguf --jinja
|
out: [text]
|
||||||
ttl: 300
|
tools: true
|
||||||
aliases:
|
context: 131072
|
||||||
- scout
|
groups:
|
||||||
capabilities:
|
brains:
|
||||||
in: [text, image]
|
swap: false
|
||||||
out: [text]
|
# llama-swap versteht NUR `persistent` (Verdrängungsschutz); `persist` ist der
|
||||||
tools: true
|
# MC2-interne Lese-Key (API/UI) und wird von llama-swap ignoriert. Beide pflegen!
|
||||||
context: 131072
|
persist: true
|
||||||
groups:
|
persistent: true
|
||||||
brains:
|
members:
|
||||||
swap: false
|
- Qwen3-Embedding-0.6B
|
||||||
# llama-swap versteht NUR `persistent` (Verdrängungsschutz); `persist` ist der
|
- Qwen3.6-35B-A3B
|
||||||
# MC2-interne Lese-Key (API/UI) und wird von llama-swap ignoriert. Beide pflegen!
|
|
||||||
persist: true
|
|
||||||
persistent: true
|
|
||||||
members:
|
|
||||||
- Qwen3-Embedding-0.6B
|
|
||||||
- Qwen3-VL-30B-A3B-Instruct
|
|
||||||
- Qwen3.6-35B-A3B
|
|
||||||
|
|||||||
+6
-5
@@ -3,16 +3,17 @@
|
|||||||
# Anfrage nicht kalt ist (llama-swap lädt sonst lazy bei Bedarf).
|
# Anfrage nicht kalt ist (llama-swap lädt sonst lazy bei Bedarf).
|
||||||
# Eingehängt als ExecStartPost=-/usr/local/bin/llama-swap-warmup.sh in llama-swap.
|
# Eingehängt als ExecStartPost=-/usr/local/bin/llama-swap-warmup.sh in llama-swap.
|
||||||
#
|
#
|
||||||
# `fast` = das Agent-Hirn (Qwen3.6-35B-A3B), `vision` = die Augen (Qwen3-VL-8B, ttl 0 seit
|
# `fast` = das Agent-Hirn (Qwen3.6-35B-A3B), `embed` = das Embedding-Modell
|
||||||
# 03.07. — gehört zum UI-Versprechen „Immer-bereit-Set"), `embed` = das Embedding-Modell
|
# (Qwen3-Embedding-0.6B, für Mem0/Gedächtnis). Die Augen (vision/VL-30B) sind seit 07.07.
|
||||||
# (Qwen3-Embedding-0.6B, für Mem0/Gedächtnis). Alle in der brains-Gruppe (persistent), werden
|
# ON-DEMAND (User-Entscheid) und gehören NICHT mehr ins Warm-Set — die Lucy-App wärmt sie
|
||||||
# aber NICHT automatisch zusammen geladen — jedes Modell einzeln anstoßen, sonst bleibt es kalt.
|
# beim Start selbst an. Modelle werden NICHT automatisch zusammen geladen — jedes einzeln
|
||||||
|
# anstoßen, sonst bleibt es kalt.
|
||||||
# Embedding läuft im --embedding-Modus → anderer Endpunkt (/v1/embeddings, nicht chat).
|
# Embedding läuft im --embedding-Modus → anderer Endpunkt (/v1/embeddings, nicht chat).
|
||||||
# Selbst-detachend: blockiert den Service-Start nicht.
|
# Selbst-detachend: blockiert den Service-Start nicht.
|
||||||
# NACH ÄNDERUNG: sudo cp deploy/warmup.sh /usr/local/bin/llama-swap-warmup.sh (root-Kopie!)
|
# NACH ÄNDERUNG: sudo cp deploy/warmup.sh /usr/local/bin/llama-swap-warmup.sh (root-Kopie!)
|
||||||
set -u
|
set -u
|
||||||
URL="${MC_LLAMA_SWAP_URL:-http://127.0.0.1:8080}"
|
URL="${MC_LLAMA_SWAP_URL:-http://127.0.0.1:8080}"
|
||||||
BRAINS="${MC_WARMUP_MODELS:-fast vision}"
|
BRAINS="${MC_WARMUP_MODELS:-fast}"
|
||||||
EMBEDS="${MC_WARMUP_EMBED:-embed}"
|
EMBEDS="${MC_WARMUP_EMBED:-embed}"
|
||||||
|
|
||||||
if [ "${1:-}" != "--inner" ]; then
|
if [ "${1:-}" != "--inner" ]; then
|
||||||
|
|||||||
Reference in New Issue
Block a user