[Unit] Description=llama-server — Qwen3.6-35B-A3B-UD-Q4_K_S (OpenAI-compatible inference, 64K ctx) Documentation=https://github.com/ggml-org/llama.cpp After=network.target nvidia-persistenced.service Wants=nvidia-persistenced.service [Service] Type=simple User={{ llm_service_user }} Group={{ llm_service_user }} Environment="HOME=/home/{{ llm_service_user }}" ExecStart={{ llm_binary_path }} \ --model {{ llm_qwen_model_path }} \ --host {{ llm_bind_address }} \ --port {{ llm_qwen_port }} \ --n-gpu-layers {{ llm_qwen_gpu_layers }} \ --ctx-size {{ llm_qwen_ctx_size }} \ --flash-attn on \ --cache-type-k q4_0 --cache-type-v q4_0 \ --batch-size {{ llm_qwen_batch_size }} --ubatch-size {{ llm_qwen_ubatch_size }} \ --parallel {{ llm_qwen_parallel }} \ --metrics # PRODUCTION UNIT — Qwen3.6-35B-A3B-UD-Q4_K_S # Current as of 2026-08-07 (t_2ffc0f63) — superseded Qwen2.5-14B-Instruct-1M. # VRAM: ~20,390 MiB / 24,576 MiB (verified 2026-08-07). # Context: 65536 (64K) with q4_0 KV cache to fit 64K in 24GB headroom. # DO NOT change --cache-type-k/v — q8_0 requires more VRAM; 24GB is tight. # DO NOT add --jinja — Qwen3.6's embedded chat template is correct for # both chat and tool-calling without an override. # # Shadow validation (router mode, port 8003) — see templates/llama-server-router.service.j2 # and playbooks/day1_deploy_llm_router_shadow.yml (t_0cca74a2). # This unit is the ROLLBACK TARGET — preserved on 8002 until router validation # passes and Ryan approves cutover. Restart=on-failure RestartSec=10 TimeoutStartSec=600 StandardOutput=journal StandardError=journal SyslogIdentifier=llama-server-qwen [Install] WantedBy=multi-user.target