feat(llm): Make-Targets zum Wechseln des LLM-Backends (Ollama <-> llama.cpp)

- scripts/llm-server/switch-llm.sh: gibt GPU des anderen Backends frei
  (llama.cpp-Container stoppen bzw. Ollama-Modelle entladen, Dienst bleibt),
  startet das gewünschte Backend, passt LOCAL_LLM_* in .env an und startet
  das Gateway (als Dienst) neu bzw. weist auf manuellen Neustart hin.
- Makefile: Targets `llm-ollama` / `llm-llamacpp` (Modell via OLLAMA_MODEL=...).
- Doku §4.7 + Schnellbefehle §4.0: Make-Targets als empfohlener Weg, inkl.
  Erklärung warum der Gateway-Neustart nötig ist (Makefile exportiert .env als
  Env-Variablen -> Vorrang vor .env-Datei).

Getestet: Round-Trip ollama -> llamacpp -> ollama; llama.cpp 2,3s, gemma3 warm.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Dieter Schlüter 2026-06-20 15:56:42 +02:00
commit 317ad2ff97
3 changed files with 131 additions and 9 deletions

View file

@ -8,7 +8,7 @@ HOST ?= 0.0.0.0
CONTAINER_NAME ?= va_llm
.PHONY: ensure-env install run start stop restart test smoke docker-build llm-up llm-down llm-status
.PHONY: ensure-env install run start stop restart test smoke docker-build llm-up llm-down llm-status llm-ollama llm-llamacpp
ensure-env:
@if [ ! -f .env ] && [ -f .env.example ]; then \
@ -63,3 +63,13 @@ llm-down:
llm-status:
bash scripts/llm-server/status-llm-server.sh
# --- LLM-Backend wechseln (Ollama <-> llama.cpp) -----------------------------
# Passt die LOCAL_LLM_*-Zeilen in .env an, gibt den GPU-Speicher des anderen
# Backends frei, startet das gewuenschte und startet das Gateway (falls Dienst) neu.
# Modell ueberschreibbar: OLLAMA_MODEL=qwen2.5:latest make llm-ollama
llm-ollama:
bash scripts/llm-server/switch-llm.sh ollama
llm-llamacpp:
bash scripts/llm-server/switch-llm.sh llamacpp