# yaml-language-server: $schema=https://raw.githubusercontent.com/mostlygeek/llama-swap/refs/heads/main/config-schema.json # # Modelle werden beim ersten Aufruf per -hf von Hugging Face nach ./models geladen # (LLAMA_CACHE=/models). Danach läuft alles offline. # # VRAM-Budget RX 6950 XT (16 GB): # - Autocomplete-Modell (~2 GB) bleibt dauerhaft geladen # - genau ein Chat-Modell gleichzeitig; llama.cpp --fit (Standard: an) verteilt # Layer/MoE-Experten automatisch auf VRAM und RAM, --fit-target hält ~3 GB frei # - Whisper (~1,2 GB, Vulkan) bleibt dauerhaft geladen; es wird vor dem # Chat-Modell geladen, --fit rechnet den Platz also automatisch mit ein # - Embeddings laufen auf der CPU # - das Bildmodell (z-image) ist in der chat-Gruppe: es verdrängt das Chat-Modell # # whisper-server und sd-server kommen aus dem unified-Image (llama-swap/Dockerfile). # Ihre Modelle liegen fest in ./models/whisper und ./models/sd (kein -hf), siehe README. healthCheckTimeout: 900 # erster Start kann einen 20-GB-Download enthalten logLevel: info startPort: 10001 macros: server: >- /app/llama-server --host 127.0.0.1 --port ${PORT} --jinja -fa on --threads 12 --no-webui # Agent-Betrieb: großer Kontext, KV-Cache quantisiert, VRAM-Reserve für Autocomplete; # -np 1 = eine Sitzung gleichzeitig, sie bekommt den ganzen Kontext (sonst teilen sich 4 Slots) agent-ctx: -c 131072 -np 1 -ctk q8_0 -ctv q8_0 --fit-target 3072 models: # --- Chat / Agent (opencode, Continue Chat/Agent/Edit) ----------------- qwen3.5-35b-a3b: name: Qwen3.5 35B-A3B (MoE) cmd: >- ${server} ${agent-ctx} -hf unsloth/Qwen3.5-35B-A3B-GGUF:Q4_K_M ttl: 3600 glm-4.7-flash: name: GLM-4.7 Flash (MoE) cmd: >- ${server} ${agent-ctx} -hf unsloth/GLM-4.7-Flash-GGUF:Q4_K_M ttl: 3600 qwen3.5-9b: name: Qwen3.5 9B (schnell, komplett im VRAM) cmd: >- ${server} -c 32768 -np 1 -ctk q8_0 -ctv q8_0 --fit-target 3072 -hf unsloth/Qwen3.5-9B-GGUF:Q4_K_M ttl: 3600 # --- Autocomplete (Continue Tab-Completion, FIM) ----------------------- qwen2.5-coder-1.5b: name: Qwen2.5-Coder 1.5B Base (FIM) cmd: >- ${server} -c 8192 -hf ggml-org/Qwen2.5-Coder-1.5B-Q8_0-GGUF -ngl 99 ttl: 0 # --- Embeddings (Continue @codebase) ----------------------------------- nomic-embed: name: Nomic Embed Text v1.5 cmd: >- /app/llama-server --host 127.0.0.1 --port ${PORT} --no-webui -hf nomic-ai/nomic-embed-text-v1.5-GGUF:Q8_0 --embedding --pooling mean -c 8192 -b 8192 -ub 8192 -ngl 0 --threads 8 ttl: 0 # --- Transkription (/v1/audio/transcriptions) -------------------------- whisper: name: Whisper large-v3-turbo (GPU, Vulkan) # GPU: ~0,5 s für 7 s Sprache, auf der CPU (-ng -t 12) wären es ~3,3 s # --convert: ffmpeg wandelt WebM/Opus, MP4/AAC usw. aus dem Browser um cmd: >- whisper-server --host 127.0.0.1 --port ${PORT} -m /models/whisper/ggml-large-v3-turbo-q8_0.bin --inference-path /v1/audio/transcriptions --convert --tmp-dir /tmp -t 8 -l auto aliases: [whisper-1] ttl: 0 # --- Bilder (/v1/images/generations), sd-server über Vulkan ------------ z-image: name: Z-Image Turbo (Bilder) checkEndpoint: / cmd: >- sd-server --listen-ip 127.0.0.1 --listen-port ${PORT} --diffusion-model /models/sd/z_image_turbo-Q8_0.gguf --vae /models/sd/ae.safetensors --llm /models/sd/Qwen3-4B-Instruct-2507-Q8_0.gguf --diffusion-fa --offload-to-cpu --cfg-scale 1.0 --steps 8 --height 1024 --width 1024 # Der OpenAI-Treiber (z. B. Laravel AI SDK) schickt seine eigenen Modellnamen aliases: [gpt-image-1, dall-e-3, dall-e-2] ttl: 600 # Helfer-Modelle beim Container-Start laden (auch nach Reboot), damit # Autocomplete sofort reagiert. Das Chat-Modell lädt beim ersten Request # bzw. per scripts/start.sh. hooks: on_startup: preload: - qwen2.5-coder-1.5b - nomic-embed - whisper routing: router: use: group settings: groups: # Chat-Modelle wechseln sich ab, lassen aber die Helfer in Ruhe chat: swap: true exclusive: false members: - qwen3.5-35b-a3b - glm-4.7-flash - qwen3.5-9b - z-image # Helfer bleiben dauerhaft geladen always-on: swap: false exclusive: false persistent: true members: - qwen2.5-coder-1.5b - nomic-embed - whisper