[Jarvis] Lokaler LLM-Router auf pve-hetzner CPU — Qwen2.5-1.5B als Vorfilter #39

Closed
opened 2026-03-17 05:01:08 +00:00 by orbitalo · 1 comment
Owner

Ziel

Kleines lokales Modell (Qwen2.5-0.5B oder 1.5B) auf pve-hetzner CPU das:

  1. Triviale Anfragen sofort selbst beantwortet (ok, danke, Uhrzeit, Smalltalk)
  2. Komplexe Anfragen an GPT-4o-mini weiterleitet (Tools, Bilder, PDFs)

Architektur

User → Telegram → router.py (Qwen lokal, <1s) → trivial? direkt antworten
                                                → komplex? → llm.py (GPT-4o-mini)

Hardware

  • Xeon E3-1275 v5 (4C/8T, 3.6 GHz)
  • 54 GB RAM frei
  • Qwen2.5-1.5B braucht ~1.2 GB → Rundungsfehler

Umsetzung

  1. Ollama oder llama.cpp in eigenem CT
  2. router.py vor llm.py schalten
  3. Klassifikation: trivial vs komplex
  4. Geschätzte Ersparnis: 25-35% Token-Kosten, <1s Antwort für Triviales

Abhängigkeit

Kann unabhängig von #22 (KI-Tower) umgesetzt werden.

## Ziel Kleines lokales Modell (Qwen2.5-0.5B oder 1.5B) auf pve-hetzner CPU das: 1. Triviale Anfragen sofort selbst beantwortet (ok, danke, Uhrzeit, Smalltalk) 2. Komplexe Anfragen an GPT-4o-mini weiterleitet (Tools, Bilder, PDFs) ## Architektur ``` User → Telegram → router.py (Qwen lokal, <1s) → trivial? direkt antworten → komplex? → llm.py (GPT-4o-mini) ``` ## Hardware - Xeon E3-1275 v5 (4C/8T, 3.6 GHz) - 54 GB RAM frei - Qwen2.5-1.5B braucht ~1.2 GB → Rundungsfehler ## Umsetzung 1. Ollama oder llama.cpp in eigenem CT 2. router.py vor llm.py schalten 3. Klassifikation: trivial vs komplex 4. Geschätzte Ersparnis: 25-35% Token-Kosten, <1s Antwort für Triviales ## Abhängigkeit Kann unabhängig von #22 (KI-Tower) umgesetzt werden.
Author
Owner

Update: llama.cpp Router statt Ollama (17.03.2026)

llama.cpp Server hat jetzt einen eingebauten Router-Modus — macht Ollama ueberfluessig.

Quelle: https://huggingface.co/blog/ggml-org/model-management-in-llamacpp

Vorteile gegenueber Ollama

  • Kein Extra-Daemon (Go-Runtime), null Overhead
  • Direkt GGUF-Dateien, kein eigenes Modelfile-Format
  • Multi-Process: Wenn ein Modell crasht, laufen die anderen weiter
  • LRU-Eviction: Aeltestes Modell wird entladen wenn RAM voll
  • OpenAI-kompatible API (gleich wie Ollama)

Setup auf pve-hetzner

# Modelle ablegen
mkdir -p /opt/llm-models
# Qwen2.5-1.5B GGUF runterladen (~1.2 GB)

# Starten (CPU-only, kein GPU-Offload)
llama-server --models-dir /opt/llm-models --models-max 2 -c 2048 -ngl 0

Integration in router.py

# Triviale Frage → lokal
requests.post("http://localhost:8080/v1/chat/completions", json={
    "model": "qwen2.5-1.5b-q4_k_m",
    "messages": [{"role": "user", "content": frage}]
})

# Komplexe Frage → weiter an GPT-4o-mini (wie bisher)

Spaeter auf KI-Tower (RTX 3090)

Mehrere Modelle gleichzeitig hinter einer API:

  • Qwen3.5-35B-A3B (Hauptmodell, ~20 GB)
  • Qwen2.5-1.5B (Schnell-Router, ~1 GB)
  • Whisper (Sprache, ~1.5 GB)
llama-server --models-dir /opt/llm-models --models-max 4 -c 8192 -ngl 99

LRU sorgt dafuer dass nur aktive Modelle im VRAM bleiben.

Entscheidung

llama.cpp Router-Modus bevorzugt statt Ollama. Weniger Abhaengigkeiten, gleiche API, besser fuer unser Setup.

## Update: llama.cpp Router statt Ollama (17.03.2026) llama.cpp Server hat jetzt einen eingebauten **Router-Modus** — macht Ollama ueberfluessig. Quelle: https://huggingface.co/blog/ggml-org/model-management-in-llamacpp ### Vorteile gegenueber Ollama - Kein Extra-Daemon (Go-Runtime), null Overhead - Direkt GGUF-Dateien, kein eigenes Modelfile-Format - Multi-Process: Wenn ein Modell crasht, laufen die anderen weiter - LRU-Eviction: Aeltestes Modell wird entladen wenn RAM voll - OpenAI-kompatible API (gleich wie Ollama) ### Setup auf pve-hetzner ```bash # Modelle ablegen mkdir -p /opt/llm-models # Qwen2.5-1.5B GGUF runterladen (~1.2 GB) # Starten (CPU-only, kein GPU-Offload) llama-server --models-dir /opt/llm-models --models-max 2 -c 2048 -ngl 0 ``` ### Integration in router.py ```python # Triviale Frage → lokal requests.post("http://localhost:8080/v1/chat/completions", json={ "model": "qwen2.5-1.5b-q4_k_m", "messages": [{"role": "user", "content": frage}] }) # Komplexe Frage → weiter an GPT-4o-mini (wie bisher) ``` ### Spaeter auf KI-Tower (RTX 3090) Mehrere Modelle gleichzeitig hinter einer API: - Qwen3.5-35B-A3B (Hauptmodell, ~20 GB) - Qwen2.5-1.5B (Schnell-Router, ~1 GB) - Whisper (Sprache, ~1.5 GB) ```bash llama-server --models-dir /opt/llm-models --models-max 4 -c 8192 -ngl 99 ``` LRU sorgt dafuer dass nur aktive Modelle im VRAM bleiben. ### Entscheidung **llama.cpp Router-Modus bevorzugt statt Ollama.** Weniger Abhaengigkeiten, gleiche API, besser fuer unser Setup.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: orbitalo/homelab-brain#39
No description provided.